<?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>179000</bug_id>
          
          <creation_ts>2017-10-30 03:58:12 -0700</creation_ts>
          <short_desc>[ESNext][BigInt] Implement BigInt literals and JSBigInt</short_desc>
          <delta_ts>2019-07-21 15:34:56 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=199984</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179001</blocked>
    
    <blocked>175359</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365979</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-10-30 03:58:12 -0700</bug_when>
    <thetext>Support syntax for 

```
let a = 10n;
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373486</commentid>
    <comment_count>1</comment_count>
      <attachid>327296</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-17 19:27:00 -0800</bug_when>
    <thetext>Created attachment 327296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373487</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-17 19:28:41 -0800</bug_when>
    <thetext>Attachment 327296 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:197:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 48 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>1373490</commentid>
    <comment_count>3</comment_count>
      <attachid>327297</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-17 19:35:11 -0800</bug_when>
    <thetext>Created attachment 327297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373491</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-17 19:38:25 -0800</bug_when>
    <thetext>Attachment 327297 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:197:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 47 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>1373495</commentid>
    <comment_count>5</comment_count>
      <attachid>327298</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-17 19:45:13 -0800</bug_when>
    <thetext>Created attachment 327298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373496</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-17 19:47:54 -0800</bug_when>
    <thetext>Attachment 327298 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:197:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 47 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>1373498</commentid>
    <comment_count>7</comment_count>
      <attachid>327299</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-17 20:00:50 -0800</bug_when>
    <thetext>Created attachment 327299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373499</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-17 20:03:25 -0800</bug_when>
    <thetext>Attachment 327299 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:197:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 47 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>1373503</commentid>
    <comment_count>9</comment_count>
      <attachid>327301</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-17 20:18:01 -0800</bug_when>
    <thetext>Created attachment 327301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373505</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-17 20:20:23 -0800</bug_when>
    <thetext>Attachment 327301 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:197:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 47 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>1373550</commentid>
    <comment_count>11</comment_count>
      <attachid>327301</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-18 07:39:29 -0800</bug_when>
    <thetext>Comment on attachment 327301
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:4
&gt; +        [ESNext][BigInt] Implement JSBigInt, BigIntConstructor and BigIntPrototype
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=179000

Fix the title.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1503
&gt; +ALWAYS_INLINE bool Lexer&lt;T&gt;::parseHex(double&amp; returnValue)

Let&apos;s return enum, Failure, Number, and BigInt.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1515
&gt; +    if (maximumDigits &gt;= 0 &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;)) {

This `UNLIKELY()` seems wrong. Once `Options::useBigInt()` becomes true, this likes BigInt than usual hex value.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1543
&gt;  template &lt;typename T&gt;

Ditto

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1561
&gt; +    if (!isASCIIDigit(m_current) &amp;&amp; digit &gt;= 0 &amp;&amp; UNLIKELY((m_current | 0x20) != &apos;n&apos;)) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1604
&gt; +    if (!isASCIIDigit(m_current) &amp;&amp; digit &gt;= 0 &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;)) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1623
&gt; +    if (UNLIKELY((m_current | 0x20) == &apos;n&apos;))
&gt; +        return false;

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1651
&gt; +        if (digit &gt;= 0 &amp;&amp; m_current != &apos;.&apos; &amp;&amp; (m_current | 0x20) != &apos;e&apos; &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;)) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2133
&gt; +                Vector&lt;LChar&gt; completeIdent;
&gt; +                completeIdent.append(&apos;0&apos;);
&gt; +                completeIdent.append(&apos;x&apos;);
&gt; +                completeIdent.append(m_buffer8.data(), m_buffer8.size());
&gt; +                tokenData-&gt;ident = makeIdentifier(completeIdent.data(), completeIdent.size());

Instead of doing this, holding `radix` value and current m_buffer8&apos;s completeIdent in tokenData&apos;s BigInt fields should be clearer.
Then, when creating BigIntMap in bytecode generator, we also need to consider radix value.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2164
&gt; +            if (!parseBinary(tokenData-&gt;doubleValue) &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) == &apos;n&apos;)) {
&gt; +                token = BIGINT;
&gt; +                shift();
&gt; +                Vector&lt;LChar&gt; completeIdent;
&gt; +                completeIdent.append(&apos;0&apos;);
&gt; +                completeIdent.append(&apos;b&apos;);
&gt; +                completeIdent.append(m_buffer8.data(), m_buffer8.size());
&gt; +                tokenData-&gt;ident = makeIdentifier(completeIdent.data(), completeIdent.size());
&gt; +            };

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2195
&gt; +            if (!parseOctal(tokenData-&gt;doubleValue) &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) == &apos;n&apos;)) {
&gt; +                token = BIGINT;
&gt; +                shift();
&gt; +                Vector&lt;LChar&gt; completeIdent;
&gt; +                completeIdent.append(&apos;0&apos;);
&gt; +                completeIdent.append(&apos;o&apos;);
&gt; +                completeIdent.append(m_buffer8.data(), m_buffer8.size());
&gt; +                tokenData-&gt;ident = makeIdentifier(completeIdent.data(), completeIdent.size());
&gt; +            }

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2222
&gt;              if (!parseDecimal(tokenData-&gt;doubleValue)) {

Ditto

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2223
&gt; +                if (UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) == &apos;n&apos;)) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2226
&gt; +                    token = BIGINT;
&gt;                      shift();
&gt; +                    tokenData-&gt;ident = makeIdentifier(m_buffer8.data(), m_buffer8.size());

Ditto.

&gt; Source/JavaScriptCore/parser/NodeConstructors.h:96
&gt; +        : ConstantNode(location, ResultType::stringType())

ResultType is not correct.

&gt; Source/JavaScriptCore/parser/Nodes.h:341
&gt; +        const Identifier&amp; m_value;

Let&apos;s hold radix too.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:89
&gt; +#define HAVE_TWODIGIT_T 1

Rename to HAVE_TODIGIT.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:92
&gt; +#define HAVE_TWODIGIT_T 1

Ditto.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:100
&gt; +#if HAVE_TWODIGIT_T

Use `#if HAVE(TWODIGIT)`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:119
&gt; +#if HAVE_TWODIGIT_T

Ditto.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:136
&gt; +#if HAVE_TWODIGIT_T

Ditto.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:29
&gt; +#include &quot;BuiltinNames.h&quot;

Why is it necessary?

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:34
&gt; +#include &quot;JSModuleLoader.h&quot;

Ditto.

&gt; Tools/ChangeLog:3
&gt; +        [ESNext][BigInt] Implement JSBigInt, BigIntConstructor and BigIntPrototype

Fix the title.

&gt; JSTests/ChangeLog:3
&gt; +        [ESNext][BigInt] Implement JSBigInt, BigIntConstructor and BigIntPrototype

Fix the title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373685</commentid>
    <comment_count>12</comment_count>
      <attachid>327301</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-19 09:54:08 -0800</bug_when>
    <thetext>Comment on attachment 327301
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1503
&gt;&gt; +ALWAYS_INLINE bool Lexer&lt;T&gt;::parseHex(double&amp; returnValue)
&gt; 
&gt; Let&apos;s return enum, Failure, Number, and BigInt.

Agreed.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1515
&gt;&gt; +    if (maximumDigits &gt;= 0 &amp;&amp; UNLIKELY(Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;)) {
&gt; 
&gt; This `UNLIKELY()` seems wrong. Once `Options::useBigInt()` becomes true, this likes BigInt than usual hex value.

Done.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2133
&gt;&gt; +                tokenData-&gt;ident = makeIdentifier(completeIdent.data(), completeIdent.size());
&gt; 
&gt; Instead of doing this, holding `radix` value and current m_buffer8&apos;s completeIdent in tokenData&apos;s BigInt fields should be clearer.
&gt; Then, when creating BigIntMap in bytecode generator, we also need to consider radix value.

Done as well

&gt;&gt; Source/JavaScriptCore/parser/NodeConstructors.h:96
&gt;&gt; +        : ConstantNode(location, ResultType::stringType())
&gt; 
&gt; ResultType is not correct.

Nice catch.

&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:341
&gt;&gt; +        const Identifier&amp; m_value;
&gt; 
&gt; Let&apos;s hold radix too.

Ok.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:29
&gt;&gt; +#include &quot;BuiltinNames.h&quot;
&gt; 
&gt; Why is it necessary?

No.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373688</commentid>
    <comment_count>13</comment_count>
      <attachid>327346</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-19 10:13:16 -0800</bug_when>
    <thetext>Created attachment 327346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373689</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-19 10:15:54 -0800</bug_when>
    <thetext>Attachment 327346 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:366:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:367:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:368:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:369:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:370:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:204:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 46 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>1373739</commentid>
    <comment_count>15</comment_count>
      <attachid>327346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-19 23:26:43 -0800</bug_when>
    <thetext>Comment on attachment 327346
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1004
&gt; +        typedef std::pair&lt;UniquedStringImpl*, uint8_t&gt; BigIntMapEntry;

Use `using` instead of `typedef`

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1022
&gt;          typedef HashMap&lt;double, JSValue&gt; NumberMap;
&gt;          typedef HashMap&lt;UniquedStringImpl*, JSString*, IdentifierRepHash&gt; IdentifierStringMap;
&gt; +        typedef HashMap&lt;BigIntMapEntry, JSBigInt*, BigIntEntryHash&gt; IdentifierBigIntMap;
&gt;          typedef HashMap&lt;Ref&lt;TemplateRegistryKey&gt;, RegisterID*&gt; TemplateRegistryKeyMap;

Let&apos;s convert them to `using`.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1515
&gt; +    if (maximumDigits &gt;= 0 &amp;&amp; Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {

This condition is wrong. If Options::useBigInt() is false, this condition never met.
And could you add a test to cover the above thing?
Ditto. And non-BigInt case should be handled as LIKELY in if-brace.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1537
&gt; +    if (UNLIKELY((m_current | 0x20) == &apos;n&apos;))
&gt; +        return BigInt;

Can we use BigInt without Options::useBigInt() check?

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1561
&gt; +    if (!isASCIIDigit(m_current) &amp;&amp; digit &gt;= 0 &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {

Ditto. And non-BigInt case should be handled as LIKELY in if-brace.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1575
&gt; +    if ((m_current | 0x20) == &apos;n&apos;)
&gt; +        return BigInt;

Ditto. And use UNLIEKLY

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1604
&gt; +    if (!isASCIIDigit(m_current) &amp;&amp; digit &gt;= 0 &amp;&amp; Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {

Ditto. And non-BigInt case should be handled as LIKELY in if-brace.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1618
&gt; +    if ((m_current | 0x20) == &apos;n&apos;)
&gt; +        return BigInt;

Ditto. And we should make it UNLIKELY.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1651
&gt; +        if (digit &gt;= 0 &amp;&amp; m_current != &apos;.&apos; &amp;&amp; (m_current | 0x20) != &apos;e&apos; &amp;&amp; Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1666
&gt; +    if ((m_current | 0x20) == &apos;n&apos;)
&gt; +        return BigInt;

Ditto. And we should make it UNLIKELY.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2209
&gt; +            if (parseOctal(tokenData-&gt;doubleValue) == NumberParseResult::Number) {

What happens if it returns BigInt?

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2215
&gt; +        NumberParseResult parseResult;

Remove this.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2217
&gt; +            parseResult = parseDecimal(tokenData-&gt;doubleValue);

`NumberParseResult parseResult = parseDecimal(tokenData-&gt;doubleValue);` is better.

&gt; Source/JavaScriptCore/parser/Lexer.h:176
&gt; +    enum NumberParseResult {

Use `enum class`.

&gt; Source/JavaScriptCore/parser/NodeConstructors.h:96
&gt; +        : ConstantNode(location, ResultType::unknownType())

Let&apos;s add ResultType::bigIntType() and its handling in ResultType.h.

&gt; Source/JavaScriptCore/parser/Parser.cpp:4496
&gt; +        const Identifier* ident = m_token.m_data.ident;

Retrieve m_token.m_data.bigIntString.

&gt; Source/JavaScriptCore/parser/ParserTokens.h:221
&gt;      struct {
&gt;          const Identifier* ident;
&gt;          bool escaped;
&gt; +        uint8_t radix;
&gt;      };

We should add a new struct definition to this union for BigInt for readability.
Like,

struct {
    const Identifier* bigIntString;
    uint32_t radix;
};

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:90
&gt; +typedef uint64_t TwoDigit;

Let&apos;s use `using`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:93
&gt; +typedef __uint128_t TwoDigit;

Let&apos;s use `using`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:366
&gt; +    0,   0,   32,  51,  64,  75,  83,  90,  96,  // 0..8

`//` should start with one space. Not two.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:39
&gt; +    typedef JSCell Base;

Use `using` instead of typedef.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:40
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

This is not necessary.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:85
&gt; +            bigInt-&gt;setDigit(0, static_cast&lt;Digit&gt;(-1 * value));

Consider INT32_MIN case. -INT32_MIN is not representable in int32_t. I think we should extend value to 64bit first and negate it.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:114
&gt; +            bigInt-&gt;setDigit(0, static_cast&lt;Digit&gt;(-1 * value));

Consider INT64_MIN case. -INT64_MIN is not representable in int64_t. Is the above OK? (maybe, it is ok in x64. but is it ok in C spec?).
I think we need a careful conversion.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:187
&gt; +    static JSBigInt* parseInt(ExecState* exec, VM&amp; vm, StringView s)
&gt; +    {
&gt; +        if (s.is8Bit())
&gt; +            return parseInt(exec, vm, s, s.characters8());
&gt; +        return parseInt(exec, vm, s, s.characters16());
&gt; +    }

Do we need this?

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:244
&gt; +    template &lt;typename CharType&gt;
&gt; +    static JSBigInt* parseInt(ExecState* exec, VM&amp; vm, StringView s, CharType*  data)
&gt; +    {
&gt; +        int length = s.length();
&gt; +
&gt; +        int p = 0;
&gt; +        while (p &lt; length &amp;&amp; isStrWhiteSpace(data[p]))
&gt; +            ++p;
&gt; +
&gt; +        // Check Radix from frist characters
&gt; +        if (p + 1 &lt; length) {
&gt; +            if (data[p] == &apos;0&apos; &amp;&amp; (data[p + 1] == &apos;b&apos; || data[p + 1] == &apos;B&apos;))
&gt; +                return parseInt(exec, vm, data, length, p + 2, 2, false);
&gt; +
&gt; +            if (data[p] == &apos;0&apos; &amp;&amp; (data[p + 1] == &apos;x&apos; || data[p + 1] == &apos;X&apos;))
&gt; +                return parseInt(exec, vm, data, length, p + 2, 16, false);
&gt; +
&gt; +            if (data[p] == &apos;0&apos; &amp;&amp; (data[p + 1] == &apos;o&apos; || data[p + 1] == &apos;O&apos;))
&gt; +                return parseInt(exec, vm, data, length, p + 2, 8, false);
&gt; +        }
&gt; +
&gt; +        bool sign = false;
&gt; +        if (p &lt; length) {
&gt; +            if (data[p] == &apos;+&apos;)
&gt; +                ++p;
&gt; +            else if (data[p] == &apos;-&apos;) {
&gt; +                sign = true;
&gt; +                ++p;
&gt; +            }
&gt; +        }
&gt; +
&gt; +        JSBigInt* result = parseInt(exec, vm, data, length, p, 10);
&gt; +
&gt; +        if (result &amp;&amp; !result-&gt;isZero())
&gt; +            result-&gt;setSign(sign);
&gt; +
&gt; +        return result;
&gt; +    }

Ditto

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:300
&gt; +    typedef uintptr_t Digit;

Let&apos;s use `using`.

&gt; JSTests/stress/big-int-literals.js:105
&gt; +assertThrowSyntaxError(&quot;1a0nn&quot;);

Let&apos;s add tests to ensure `10E20n` (including exponential part) is not allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373818</commentid>
    <comment_count>16</comment_count>
      <attachid>327346</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 13:03:14 -0800</bug_when>
    <thetext>Comment on attachment 327346
Patch

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

I’d like to see a lot more tests.

One example: doing &quot;==&quot; between a number and BigInt (to verify either that they always compare false, or that they compare based on the numeric value, whatever the rule is)

Another: Verify that we get an exception when we try to convert to a number in various ways.

Another: Verify the parsing of &quot;+&quot; and &quot;-&quot; and that you can’t have extra of either of those characters.

Another: Verify the behavior of various types of leading whitespace, making sure we strip the whitespace we are supposed to, and don’t strip whitespace we are not supposed to.

Another: Super-large numbers to test the out of memory errors.

There’s a lot of code added here not exercised by any test yet; we should do more of that.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1008
&gt; +                return key.first-&gt;existingSymbolAwareHash() + IntHash&lt;uint8_t&gt;::hash(key.second);

Should just write:

    + WTF::intHash(key.second)

It’s overloaded for the unsigned integer types. No need to use the class template to get at that function.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1515
&gt;&gt; +    if (maximumDigits &gt;= 0 &amp;&amp; Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {
&gt; 
&gt; This condition is wrong. If Options::useBigInt() is false, this condition never met.
&gt; And could you add a test to cover the above thing?
&gt; Ditto. And non-BigInt case should be handled as LIKELY in if-brace.

In new code, instead of expressions like (x | 0x20) != &apos;n&apos;, would you be willing to use the isASCIIAlphaCaselessEqual function? That’s what the function is designed for.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2217
&gt;&gt; +            parseResult = parseDecimal(tokenData-&gt;doubleValue);
&gt; 
&gt; `NumberParseResult parseResult = parseDecimal(tokenData-&gt;doubleValue);` is better.

I think we could even use auto there.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.h:176
&gt;&gt; +    enum NumberParseResult {
&gt; 
&gt; Use `enum class`.

Also, for simple enumerations like this, it is nice to do it all on one line. The vertical style is needed for much longer ones.

&gt; Source/JavaScriptCore/parser/Lexer.h:183
&gt; +    ALWAYS_INLINE NumberParseResult parseHex(double&amp; returnValue);

For new code, we are trying to not use out arguments, instead using structures or variants or expected or optional as appropriate. For these, I would suggest something like this:

    std::optional&lt;Variant&lt;double, Identifier&gt;&gt; parseDecimal();

Then if it’s not a number, it can return std::nullopt, if it’s a number it can return double, and if it’s a BigInt it can return it as an Identifier. Can be a little tricky to write the code if it’s your first time programming with Variant, but it usually comes out pretty good.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:89
&gt; +#define HAVE_TWODIGIT 1

Seems overkill to use the HAVE macro for this thing that’s just in this one source file. I suggest using a straight #define. The configuration macros are really for project-wide things.

    #define HAVE_TWO_DIGIT 1
    #else
    #define HAVE_TWO_DIGIT 0
    #endif

Then below:

    #if HAVE_TWO_DIGIT

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:152
&gt; +    Digit aLow  = a &amp; HalfDigitMask;

WebKit specifically has a rule against &quot;horizontally lined up&quot; code like this. Instead we don’t bother trying to line up the &quot;=&quot; signs and let the roles be ragged.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:402
&gt; +    if (exec)

What is this? Why can exec be null?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:407
&gt; +static const char ConversionChars[] = &quot;0123456789abcdefghijklmnopqrstuvwxyz&quot;;

A duplicate of radixDigits from NumberPrototype.cpp but with a different name. Maybe we could share the array?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:409
&gt; +String JSBigInt::toString(ExecState* exec, JSBigInt* x, int radix)

This function is really long. I suggest moving the charactersRequired computation into a separate function. Also, I don’t think that’s a great name for something that is likely to be an overestimate of the maximum number of characters required. I think maximumCharactersRequired is a better name.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:415
&gt; +    if (x-&gt;isZero()) {
&gt; +        StringBuilder resultBuilder;
&gt; +        resultBuilder.append(&apos;0&apos;);
&gt; +        return resultBuilder.toString().impl();
&gt; +    }

Wrong to use StringBuilder to create constant single character string. Instead this would be the typical idiom:

    return ASCIILiteral { &quot;0&quot; };

But here in JavaScriptCore we have already have single character strings allocated, so we could write this, efficient because it doesn&apos;t allocate any memory:

    return exec-&gt;vm().smallStrings.singleCharacterStringRep(&apos;0&apos;);

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:420
&gt; +    return toStringGeneric(exec, x, radix);
&gt; +}
&gt; +
&gt; +String JSBigInt::toStringGeneric(ExecState* exec, JSBigInt* x, int radix)

Unclear why these are two separate functions.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:422
&gt; +    StringBuilder resultBuilder;

Wrong to use a StringBuilder for this, since we don’t build a string with it, and we don’t need the features of StringBuilder, which is good at building strings from complex combinations of strings, characters, literals, and numbers. We should use StringVector&lt;LChar&gt;.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:427
&gt; +    const int length = x-&gt;length();

I don’t understand the use of const in local variables here. If we are using it here, then...

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:433
&gt; +    int leadingZeros = clz64(x-&gt;digit(length - 1));

Why not here?

I suggest just not using it for local variables. Or using it more consistently perhaps?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:462
&gt; +    int pos = 0;

Using a StringVector we won’t need this &quot;pos&quot; because it&apos;s a duplicate copy of the size of the StringVector.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:465
&gt; +    resultBuilder.reserveCapacity(static_cast&lt;size_t&gt;(charsRequired));

For a StringVector we don’t necessarily need to do reserveInitialCapacity, but we could. If we do, then we could also use uncheckedAppend.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:520
&gt; +    while (pos &gt; 1 &amp;&amp; resultBuilder[pos - 1] == &apos;0&apos;)
&gt; +        pos--;

Using StringVector this would be done by calling shrink; ideally just one time, but could also call it in a loop.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:531
&gt; +    StringBuilder reverseBuilder;
&gt; +    reverseBuilder.reserveCapacity(static_cast&lt;size_t&gt;(charsRequired));
&gt; +    for (int i = pos - 1; i &gt;= 0; i--)
&gt; +        reverseBuilder.append(resultBuilder[i]);

This is another reason to not use a StringBuilder; we don’t even use the initial one to build a string, just to keep characters in it! And then in our second StringBuilder we know exactly how many characters we need, but for some reason we reserve charsRequired instead of pos. And since we know exactly how many characters we need we would have used StringImp::createUninitialized instead of StringBuilder.

But if we use StringVector from the start, then we don’t need to allocate a second copy of all the characters. We can reverse the characters in place:

    std::reverse(vector.begin(), vector.end());

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:533
&gt; +    return reverseBuilder.toString().impl();

Here we can use StringImpl::adopt(vector);

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:545
&gt; +    if (this-&gt;isZero())

No need for &quot;this-&gt;&quot; here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:560
&gt; +        data[i] = this-&gt;digit(i);

No need for &quot;this-&gt;&quot; here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:43
&gt; +

Stray blank line here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:52
&gt; +    inline static int sizeFor(int length)

The inline keyword here is not needed; ignored by the compiler.

I think this function should be private; not good to call outside the class, and not needed.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:62
&gt; +    static JSBigInt* createZero(ExecState* exec, VM&amp; vm)

I think that classes are easier to read if they don’t combine their implementation and interface. So the inline functions would be separate from the class definition. In the class definition we would just have the declarations of these functions. Then you could more easily scan and see wha the interface of JSBigInt is.

It also makes it a lot easier to move functions out of the header if we decide they should not be inline; just take out the inline keyword and move into the .cpp file. Many of these functions are really long and I am not sure we should try to inline them.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:69
&gt; +    static JSBigInt* create(ExecState* exec, VM&amp; vm, int length)

Quite unclear that the third argument is the length; so easy to confuse this with createFromInt. Should name this createWithLength.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:76
&gt; +    static JSBigInt* createFromInt(ExecState* exec, VM&amp; vm, int32_t value)

If someone tries to pass an int64_t to this function, it will compile and just silently chop off the high bits. It would be safer to overload this one with other functions that create from various types because then if someone tries to pass an integer of another type will get a compiler error because it’s ambiguous. That’s why functions like StringBuilder::appendNumber do not have the integer type in their names and use overloading instead.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:93
&gt; +    static JSBigInt* createFromUint(ExecState* exec, VM&amp; vm, uint32_t value)

Please overload (see reasoning above).

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:104
&gt; +    static JSBigInt* createFromAnyInt(ExecState* exec, VM&amp; vm, int64_t value)

Please overload (see reasoning above).

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:114
&gt;&gt; +            bigInt-&gt;setDigit(0, static_cast&lt;Digit&gt;(-1 * value));
&gt; 
&gt; Consider INT64_MIN case. -INT64_MIN is not representable in int64_t. Is the above OK? (maybe, it is ok in x64. but is it ok in C spec?).
&gt; I think we need a careful conversion.

It’s also unnecessary to write -1 * value instead of just -value.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:139
&gt; +    static JSBigInt* createFromBoolean(ExecState* exec, VM&amp; vm, bool value)

Consider overloading instead of a separate function.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:180
&gt; +    static String toString(ExecState*, JSBigInt*, int radix);

Why not a non-static member function instead of a static member function that takes a JSBigInt*?

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:208
&gt; +    static JSBigInt* parseInt(ExecState* exec, VM&amp; vm, StringView s, CharType*  data)

Two spaces after the &quot;*&quot; here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:216
&gt; +        // Check Radix from frist characters

Typo &quot;frist&quot;.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:218
&gt; +            if (data[p] == &apos;0&apos; &amp;&amp; (data[p + 1] == &apos;b&apos; || data[p + 1] == &apos;B&apos;))

These should use isASCIIAlphaCaselessEqual; more efficient than the ||, I think.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:309
&gt; +

Stray blank line here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:317
&gt; +

Stray blank line here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:324
&gt; +    static inline Digit digitAdd(Digit a, Digit b, Digit* carry);
&gt; +    static inline Digit digitSub(Digit a, Digit b, Digit* borrow);
&gt; +    static inline Digit digitMul(Digit a, Digit b, Digit* high);
&gt; +    static inline Digit digitDiv(Digit high, Digit low, Digit divisor, Digit* remainder);

These seem like they should be references, not pointers.

The &quot;inline&quot; here aren’t needed. The inline in the function definitions are sufficient.

But also, why are these member functions at all? They can just be non-member functions in the .cpp file, I think. No reason to have to touch the header when changing these around. Same for most of the private static member functions; only ones used in the header need to be static member functions.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:327
&gt; +    static void absoluteDivSmall(ExecState*, JSBigInt* x, Digit divisor, JSBigInt** quotient, Digit* remainder);

Ditto, except maybe JSBigInt because I heard JavaScriptCore programmers saying they never want to use references for those.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:332
&gt; +    inline Digit digit(int n)

The inline here is not needed; ignored by the compiler.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:340
&gt; +    inline void setDigit(int n, Digit value)

The inline here is not needed; ignored by the compiler.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:384
&gt; +        String bigIntString = JSBigInt::toString(exec, asBigInt(asCell()), 10);
&gt; +        if (bigIntString.length() == 1)
&gt; +            return vm.smallStrings.singleCharacterString(bigIntString[0]);
&gt; +        return jsNontrivialString(&amp;vm, bigIntString);

This is missing a WTFMove in the calls to jsNontrivialString.

Should use pass *this to asBigInt instead of asCell().

A little sad to create a temporary string if this really is a JSBigInt in the range 0-9 and we want that to be a fast path. More efficient to add a JSBigInt function that can give us the integer values for small BigInt so we can check that it’s in the range 0-9. Or if we don&apos;t need to optimize the code path so much, go the other way and just use jsString instead of writing out the single character case explicitly:

    return jsString(&amp;vm, JSBigInt::toString(exec, asBigInt(asCell()), 10));

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:730
&gt; +    if (isBigInt()) {

We don’t need this type error behavior to be implemented as part of the fast case, slightly slowing it down; please move this logic into toNumberSlowCase.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:731
&gt; +        throwTypeError(exec, scope, ASCIILiteral(&quot;Cast from &apos;BigInt&apos; to &apos;number&apos; is not allowed.&quot;));

I don’t think the word &quot;cast&quot; here makes sense to JavaScript programmers. It’s not a JavaScript term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373903</commentid>
    <comment_count>17</comment_count>
      <attachid>327346</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-20 19:19:41 -0800</bug_when>
    <thetext>Comment on attachment 327346
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1004
&gt;&gt; +        typedef std::pair&lt;UniquedStringImpl*, uint8_t&gt; BigIntMapEntry;
&gt; 
&gt; Use `using` instead of `typedef`

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1008
&gt;&gt; +                return key.first-&gt;existingSymbolAwareHash() + IntHash&lt;uint8_t&gt;::hash(key.second);
&gt; 
&gt; Should just write:
&gt; 
&gt;     + WTF::intHash(key.second)
&gt; 
&gt; It’s overloaded for the unsigned integer types. No need to use the class template to get at that function.

Done. Thanks.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1515
&gt;&gt;&gt; +    if (maximumDigits &gt;= 0 &amp;&amp; Options::useBigInt() &amp;&amp; (m_current | 0x20) != &apos;n&apos;) {
&gt;&gt; 
&gt;&gt; This condition is wrong. If Options::useBigInt() is false, this condition never met.
&gt;&gt; And could you add a test to cover the above thing?
&gt;&gt; Ditto. And non-BigInt case should be handled as LIKELY in if-brace.
&gt; 
&gt; In new code, instead of expressions like (x | 0x20) != &apos;n&apos;, would you be willing to use the isASCIIAlphaCaselessEqual function? That’s what the function is designed for.

@yusuke You are right.

@darin, I think I have wrong logic here. BigInt literals doesn&apos;t allow &quot;N&quot; as suffix.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1537
&gt;&gt; +        return BigInt;
&gt; 
&gt; Can we use BigInt without Options::useBigInt() check?

No. Fixed. Thanks for catching it.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2209
&gt;&gt; +            if (parseOctal(tokenData-&gt;doubleValue) == NumberParseResult::Number) {
&gt; 
&gt; What happens if it returns BigInt?

I think it&apos;s not very easy to follow and probably we should change this logic. It will follow the same as if we have 012e10, for example. It will FALLTHROUGH to number case, then m_buffer will be filled with consumed digits, so, parseDecimal will encounter &quot;n&quot; char and will return BigInt, and finally the number will be created. I&apos;m adding a test case for it.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2217
&gt;&gt;&gt; +            parseResult = parseDecimal(tokenData-&gt;doubleValue);
&gt;&gt; 
&gt;&gt; `NumberParseResult parseResult = parseDecimal(tokenData-&gt;doubleValue);` is better.
&gt; 
&gt; I think we could even use auto there.

@Yusuke, I can&apos;t do that because of &quot;inNumberAfterDecimalPoint:&quot; into line 2228. It is resulting into following compilation error:

```./parser/Lexer.cpp:2116:9: error: cannot jump from this goto statement to its label
        goto inNumberAfterDecimalPoint;
        ^
./parser/Lexer.cpp:2216:31: note: jump bypasses variable initialization
            NumberParseResult parseResult = parseDecimal(tokenData-&gt;doubleValue);
```
Not sure how could I remove goto and avoid repeat code on line 2116. Maybe replicate code up there is better for us.

@Darin: I don&apos;t think I like use auto here because it makes code harder to follow.

&gt;&gt; Source/JavaScriptCore/parser/NodeConstructors.h:96
&gt;&gt; +        : ConstantNode(location, ResultType::unknownType())
&gt; 
&gt; Let&apos;s add ResultType::bigIntType() and its handling in ResultType.h.

Ok.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:4496
&gt;&gt; +        const Identifier* ident = m_token.m_data.ident;
&gt; 
&gt; Retrieve m_token.m_data.bigIntString.

ok.

&gt;&gt; Source/JavaScriptCore/parser/ParserTokens.h:221
&gt;&gt;      };
&gt; 
&gt; We should add a new struct definition to this union for BigInt for readability.
&gt; Like,
&gt; 
&gt; struct {
&gt;     const Identifier* bigIntString;
&gt;     uint32_t radix;
&gt; };

ok.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:402
&gt;&gt; +    if (exec)
&gt; 
&gt; What is this? Why can exec be null?

exec is null when we create JSBigInt from BytecodeGenerator::addBigIntConstant. If I understand correctly, there is no exec but that time. Is it right?

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:407
&gt;&gt; +static const char ConversionChars[] = &quot;0123456789abcdefghijklmnopqrstuvwxyz&quot;;
&gt; 
&gt; A duplicate of radixDigits from NumberPrototype.cpp but with a different name. Maybe we could share the array?

I agree. Do you have any idea where I cloud place this array?

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:420
&gt;&gt; +String JSBigInt::toStringGeneric(ExecState* exec, JSBigInt* x, int radix)
&gt; 
&gt; Unclear why these are two separate functions.

I&apos;m planing to create a special case when radix is base of 2, just like V8 implementation.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:531
&gt;&gt; +        reverseBuilder.append(resultBuilder[i]);
&gt; 
&gt; This is another reason to not use a StringBuilder; we don’t even use the initial one to build a string, just to keep characters in it! And then in our second StringBuilder we know exactly how many characters we need, but for some reason we reserve charsRequired instead of pos. And since we know exactly how many characters we need we would have used StringImp::createUninitialized instead of StringBuilder.
&gt; 
&gt; But if we use StringVector from the start, then we don’t need to allocate a second copy of all the characters. We can reverse the characters in place:
&gt; 
&gt;     std::reverse(vector.begin(), vector.end());

I like it. Going to change it. And you are right, I&apos;m using reserveCapacity with wrong parameter here.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:62
&gt;&gt; +    static JSBigInt* createZero(ExecState* exec, VM&amp; vm)
&gt; 
&gt; I think that classes are easier to read if they don’t combine their implementation and interface. So the inline functions would be separate from the class definition. In the class definition we would just have the declarations of these functions. Then you could more easily scan and see wha the interface of JSBigInt is.
&gt; 
&gt; It also makes it a lot easier to move functions out of the header if we decide they should not be inline; just take out the inline keyword and move into the .cpp file. Many of these functions are really long and I am not sure we should try to inline them.

I agree. I&apos;m going to refactor the code following it.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:69
&gt;&gt; +    static JSBigInt* create(ExecState* exec, VM&amp; vm, int length)
&gt; 
&gt; Quite unclear that the third argument is the length; so easy to confuse this with createFromInt. Should name this createWithLength.

ok.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:76
&gt;&gt; +    static JSBigInt* createFromInt(ExecState* exec, VM&amp; vm, int32_t value)
&gt; 
&gt; If someone tries to pass an int64_t to this function, it will compile and just silently chop off the high bits. It would be safer to overload this one with other functions that create from various types because then if someone tries to pass an integer of another type will get a compiler error because it’s ambiguous. That’s why functions like StringBuilder::appendNumber do not have the integer type in their names and use overloading instead.

This is good information.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:85
&gt;&gt; +            bigInt-&gt;setDigit(0, static_cast&lt;Digit&gt;(-1 * value));
&gt; 
&gt; Consider INT32_MIN case. -INT32_MIN is not representable in int32_t. I think we should extend value to 64bit first and negate it.

You are right, nice catch.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:114
&gt;&gt;&gt; +            bigInt-&gt;setDigit(0, static_cast&lt;Digit&gt;(-1 * value));
&gt;&gt; 
&gt;&gt; Consider INT64_MIN case. -INT64_MIN is not representable in int64_t. Is the above OK? (maybe, it is ok in x64. but is it ok in C spec?).
&gt;&gt; I think we need a careful conversion.
&gt; 
&gt; It’s also unnecessary to write -1 * value instead of just -value.

You are right. This code is meant to use when int53 is the case and they are going to be used into BigIntConstructor Patch. I think It is better remove them from this Patch and implement them there.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:139
&gt;&gt; +    static JSBigInt* createFromBoolean(ExecState* exec, VM&amp; vm, bool value)
&gt; 
&gt; Consider overloading instead of a separate function.

ok. BTW, I&apos;m handling it in https://bugs.webkit.org/show_bug.cgi?id=175359, since it&apos;s not being used in this Patch.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:187
&gt;&gt; +    }
&gt; 
&gt; Do we need this?

Not in this Patch. removing them and adding into https://bugs.webkit.org/show_bug.cgi?id=175359

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:218
&gt;&gt; +            if (data[p] == &apos;0&apos; &amp;&amp; (data[p + 1] == &apos;b&apos; || data[p + 1] == &apos;B&apos;))
&gt; 
&gt; These should use isASCIIAlphaCaselessEqual; more efficient than the ||, I think.

ok.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:730
&gt;&gt; +    if (isBigInt()) {
&gt; 
&gt; We don’t need this type error behavior to be implemented as part of the fast case, slightly slowing it down; please move this logic into toNumberSlowCase.

ok.

&gt;&gt; JSTests/stress/big-int-literals.js:105
&gt;&gt; +assertThrowSyntaxError(&quot;1a0nn&quot;);
&gt; 
&gt; Let&apos;s add tests to ensure `10E20n` (including exponential part) is not allowed.

sure. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373905</commentid>
    <comment_count>18</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-20 19:25:40 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 327346 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327346&amp;action=review
&gt; 
&gt; I’d like to see a lot more tests.
&gt; 
&gt; One example: doing &quot;==&quot; between a number and BigInt (to verify either that
&gt; they always compare false, or that they compare based on the numeric value,
&gt; whatever the rule is)

This require the &quot;==&quot; operator to be implemented. It&apos;s going to be handled into separate Bug (https://bugs.webkit.org/show_bug.cgi?id=179901).

&gt; Another: Verify that we get an exception when we try to convert to a number
&gt; in various ways.

I think my last comment follow. Here we need to implement other operations as well. the scope of this Bug is to enable literal parsing and introduce JSBigInt object. 

&gt; Another: Verify the parsing of &quot;+&quot; and &quot;-&quot; and that you can’t have extra of
&gt; either of those characters.

Do you mean &quot;+&quot; and &quot;-&quot; unary operations? They also are going to be handled into https://bugs.webkit.org/show_bug.cgi?id=179900

&gt; Another: Verify the behavior of various types of leading whitespace, making
&gt; sure we strip the whitespace we are supposed to, and don’t strip whitespace
&gt; we are not supposed to.

ok.

&gt; Another: Super-large numbers to test the out of memory errors.
 ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373908</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 19:30:37 -0800</bug_when>
    <thetext>(In reply to Caio Lima from comment #18)
&gt; (In reply to Darin Adler from comment #16)
&gt; &gt; Another: Verify the parsing of &quot;+&quot; and &quot;-&quot; and that you can’t have extra of
&gt; &gt; either of those characters.
&gt; 
&gt; Do you mean &quot;+&quot; and &quot;-&quot; unary operations? They also are going to be handled
&gt; into https://bugs.webkit.org/show_bug.cgi?id=179900

No, I mean &quot;+&quot; and &quot;-&quot; in BigInt parsing, like &quot;+123123123123123123123&quot; and &quot;-123123123123123123123&quot;, and invalid things like &quot;--123123123123123123123&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373918</commentid>
    <comment_count>20</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-20 20:19:17 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #19)
&gt; (In reply to Caio Lima from comment #18)
&gt; &gt; (In reply to Darin Adler from comment #16)
&gt; &gt; &gt; Another: Verify the parsing of &quot;+&quot; and &quot;-&quot; and that you can’t have extra of
&gt; &gt; &gt; either of those characters.
&gt; &gt; 
&gt; &gt; Do you mean &quot;+&quot; and &quot;-&quot; unary operations? They also are going to be handled
&gt; &gt; into https://bugs.webkit.org/show_bug.cgi?id=179900
&gt; 
&gt; No, I mean &quot;+&quot; and &quot;-&quot; in BigInt parsing, like &quot;+123123123123123123123&quot; and
&gt; &quot;-123123123123123123123&quot;, and invalid things like &quot;--123123123123123123123&quot;.

just to make clear you mean:

```
let a = -123123123123123123123n;
a = +123123123123123123123n;
```

In such cases, they are unary operators that are handled as fast path on AST construction. For example, &quot;ASTBuilder::makeNegateNode&quot; creates &quot;-3&quot; as constant, but Lexer creates MINUS token and INTEGER token as well. I&apos;m planing add such fast path into Unary operations Patch, but if you require it, I could add it here. However, IMHO this Patch is too large to keep adding such things. About &quot;--123123123123123123123&quot; I agree with you and I&apos;ll add tests with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373925</commentid>
    <comment_count>21</comment_count>
      <attachid>327346</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 22:12:18 -0800</bug_when>
    <thetext>Comment on attachment 327346
Patch

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

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:235
&gt; +            if (data[p] == &apos;+&apos;)
&gt; +                ++p;
&gt; +            else if (data[p] == &apos;-&apos;) {
&gt; +                sign = true;
&gt; +                ++p;
&gt; +            }

In my comments about tests I’m referring to test coverage for whatever this code is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373983</commentid>
    <comment_count>22</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-21 05:12:04 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #21)
&gt; Comment on attachment 327346 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327346&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.h:235
&gt; &gt; +            if (data[p] == &apos;+&apos;)
&gt; &gt; +                ++p;
&gt; &gt; +            else if (data[p] == &apos;-&apos;) {
&gt; &gt; +                sign = true;
&gt; &gt; +                ++p;
&gt; &gt; +            }
&gt; 
&gt; In my comments about tests I’m referring to test coverage for whatever this
&gt; code is doing.

Oh, I see. Actually this code is going to be used in BigIntCosntructor like ``` let a = BigInt(&quot;-12123&quot;);``` for example. I was firstly working into this Bug https://bugs.webkit.org/show_bug.cgi?id=175359 and when Patch became huge, I decided split the JSBigInt implementation with this Patch. I&apos;m removing this code form this Patch and add it into upcoming https://bugs.webkit.org/show_bug.cgi?id=175359.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374129</commentid>
    <comment_count>23</comment_count>
      <attachid>327346</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-21 20:32:57 -0800</bug_when>
    <thetext>Comment on attachment 327346
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:180
&gt;&gt; +    static String toString(ExecState*, JSBigInt*, int radix);
&gt; 
&gt; Why not a non-static member function instead of a static member function that takes a JSBigInt*?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:324
&gt;&gt; +    static inline Digit digitDiv(Digit high, Digit low, Digit divisor, Digit* remainder);
&gt; 
&gt; These seem like they should be references, not pointers.
&gt; 
&gt; The &quot;inline&quot; here aren’t needed. The inline in the function definitions are sufficient.
&gt; 
&gt; But also, why are these member functions at all? They can just be non-member functions in the .cpp file, I think. No reason to have to touch the header when changing these around. Same for most of the private static member functions; only ones used in the header need to be static member functions.

They are members because of Digit type is private to JSBigInt. I don&apos;t think it is necessary expose this type publicly.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:384
&gt;&gt; +        return jsNontrivialString(&amp;vm, bigIntString);
&gt; 
&gt; This is missing a WTFMove in the calls to jsNontrivialString.
&gt; 
&gt; Should use pass *this to asBigInt instead of asCell().
&gt; 
&gt; A little sad to create a temporary string if this really is a JSBigInt in the range 0-9 and we want that to be a fast path. More efficient to add a JSBigInt function that can give us the integer values for small BigInt so we can check that it’s in the range 0-9. Or if we don&apos;t need to optimize the code path so much, go the other way and just use jsString instead of writing out the single character case explicitly:
&gt; 
&gt;     return jsString(&amp;vm, JSBigInt::toString(exec, asBigInt(asCell()), 10));

I agree. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374333</commentid>
    <comment_count>24</comment_count>
      <attachid>327481</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-22 21:32:18 -0800</bug_when>
    <thetext>Created attachment 327481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374334</commentid>
    <comment_count>25</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-22 21:34:54 -0800</bug_when>
    <thetext>Attachment 327481 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:160:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:444:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:445:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:447:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/parser/Lexer.cpp:2223:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 48 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>1374417</commentid>
    <comment_count>26</comment_count>
      <attachid>327501</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-23 07:41:45 -0800</bug_when>
    <thetext>Created attachment 327501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374418</commentid>
    <comment_count>27</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-23 07:44:07 -0800</bug_when>
    <thetext>Attachment 327501 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:161:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:445:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:447:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:448:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/parser/Lexer.cpp:2223:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 50 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>1374472</commentid>
    <comment_count>28</comment_count>
      <attachid>327501</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-23 13:57:00 -0800</bug_when>
    <thetext>Comment on attachment 327501
Patch

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

Did not review the whole thing, but did a quick look and spotted some issues.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3145
&gt; +        bigIntInMap = JSBigInt::parseInt(nullptr, *vm(), StringView(identifier.string()), radix);

Should not have to write StringView() explicitly here.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3148
&gt; +            m_error = ParserError(ParserError::OutOfMemory);
&gt; +            return jsUndefined();

This will leave a nullptr behind in the map. Subsequent calls will get the nullptr value and no parser error. Is that really want we want? Need a test case that covers this, with the same invalid constant twice. Except that this says &quot;out of memory&quot;; I’m not sure I understand what this case is for exactly

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1599
&gt; +    if (LIKELY(!isASCIIDigit(m_current) &amp;&amp; digit &gt;= 0 &amp;&amp; m_current != &apos;n&apos;)) {
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(octalValue);
&gt;      }

WebKit coding style says no braces around a single line if statement body like this.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2105
&gt; +        if ((m_current | 0x20) == &apos;e&apos;) {

if (isASCIIAlphaCaselessEqual(m_current, &apos;e&apos;)) {

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2137
&gt; +            if (parseNumberResult.index() == 1) {

I think it’s more elegant to write this:

    if (WTF::holds_alternative&lt;const Identifier*&gt;(parseNumberResult)) {

Then there’s no magic number 1. But also, I would put the shorter &quot;double&quot; case first. I find if statements easier to read with the shorter case first.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2166
&gt; +            if (parseNumberResult &amp;&amp; parseNumberResult-&gt;index() == 1) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2196
&gt; +            if (numberParseResult &amp;&amp; numberParseResult-&gt;index() == 1) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2223
&gt; +            if (numberParseResult &amp;&amp; numberParseResult-&gt;index() == 0) {

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2232
&gt; +            if (!parseNumberResult || parseNumberResult-&gt;index() == 1) {

Ditto.

&gt; Source/JavaScriptCore/parser/ResultType.h:40
&gt; +        static const Type TypeMaybeBigInt = 0x16;

I don’t understand this. All the other type flags are powers of two so they are single bits that don’t overlap other bits. But this combination of bits overlaps bool, string, and number. Why is that OK? I don’t think it is.

&gt; Source/JavaScriptCore/parser/ResultType.h:89
&gt; +        bool mightBeBigInt() const

Can we leave these out for now? I see no uses of them. I know that number has similar functions, but I don’t think we will need these. Or do you know that we will need these and how we will use them?

&gt; Source/JavaScriptCore/parser/ResultType.h:94
&gt; +        bool isNotBigInt() const

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374487</commentid>
    <comment_count>29</comment_count>
      <attachid>327501</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-23 16:26:59 -0800</bug_when>
    <thetext>Comment on attachment 327501
Patch

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

Thanks for the review!

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3148
&gt;&gt; +            return jsUndefined();
&gt; 
&gt; This will leave a nullptr behind in the map. Subsequent calls will get the nullptr value and no parser error. Is that really want we want? Need a test case that covers this, with the same invalid constant twice. Except that this says &quot;out of memory&quot;; I’m not sure I understand what this case is for exactly

You are right. I don&apos;t want to have null entries here. This case here happens when BigInt parsing throws OOM. The test case covering it is JSTests/stress/big-int-large-number-oom.js. Basically you have a literal that can&apos;t be parsed because it is large than our allowed size.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2137
&gt;&gt; +            if (parseNumberResult.index() == 1) {
&gt; 
&gt; I think it’s more elegant to write this:
&gt; 
&gt;     if (WTF::holds_alternative&lt;const Identifier*&gt;(parseNumberResult)) {
&gt; 
&gt; Then there’s no magic number 1. But also, I would put the shorter &quot;double&quot; case first. I find if statements easier to read with the shorter case first.

That&apos;s far better. Thanks!

&gt;&gt; Source/JavaScriptCore/parser/ResultType.h:40
&gt;&gt; +        static const Type TypeMaybeBigInt = 0x16;
&gt; 
&gt; I don’t understand this. All the other type flags are powers of two so they are single bits that don’t overlap other bits. But this combination of bits overlaps bool, string, and number. Why is that OK? I don’t think it is.

Oh. that&apos;s my bad. it is in hex and I was reading 0x10 as 10, not 16...Nice catch.

&gt;&gt; Source/JavaScriptCore/parser/ResultType.h:89
&gt;&gt; +        bool mightBeBigInt() const
&gt; 
&gt; Can we leave these out for now? I see no uses of them. I know that number has similar functions, but I don’t think we will need these. Or do you know that we will need these and how we will use them?

We will use then in the further Patches to handle BytecodeGenerator optimizations such as other types. I was thinking in add them there, but @yusuke asked me to add them in this Patch. In his last review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374504</commentid>
    <comment_count>30</comment_count>
      <attachid>327519</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-23 19:08:59 -0800</bug_when>
    <thetext>Created attachment 327519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374505</commentid>
    <comment_count>31</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-23 19:11:35 -0800</bug_when>
    <thetext>Attachment 327519 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:161:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:445:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:447:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:448:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 51 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>1374670</commentid>
    <comment_count>32</comment_count>
      <attachid>327568</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-24 20:31:36 -0800</bug_when>
    <thetext>Created attachment 327568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374671</commentid>
    <comment_count>33</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-24 20:33:56 -0800</bug_when>
    <thetext>Attachment 327568 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:161:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:445:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:447:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:448:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 53 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>1374722</commentid>
    <comment_count>34</comment_count>
      <attachid>327568</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-26 06:30:21 -0800</bug_when>
    <thetext>Comment on attachment 327568
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:99
&gt; +    m_error = ParserError(ParserError::ErrorNone);

Drop this.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:219
&gt; +    if (m_error.isValid())
&gt; +        return m_error;
&gt; +

Drop this.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3152
&gt; +    if (!bigIntInMap) {
&gt; +        m_error = ParserError(ParserError::OutOfMemory);
&gt; +        return jsUndefined();
&gt; +    }

I think currently, we have no way to handle this correctly.
Just RELEASE_ASSERT would be better since we do not have the same handling for JSString.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1231
&gt; +        ParserError m_error;

Drop this.

&gt; Source/JavaScriptCore/jsc.cpp:48
&gt; +#include &quot;JSBigInt.h&quot;

Why is this necessary?

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:170
&gt; +        uint32_t bits = 0x480000;

Why do we need this change?

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:180
&gt; +        uint32_t bits = 0x880000;

Ditto.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:190
&gt; +        uint32_t bits = 0x900000;

Ditto.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:200
&gt; +        uint32_t bits = 0x500000;

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1640
&gt; +        if (digit &gt;= 0 &amp;&amp; m_current != &apos;.&apos; &amp;&amp; (m_current | 0x20) != &apos;e&apos; &amp;&amp; m_current != &apos;n&apos;)

Use isASCIIAlphaCaselessEqual.

&gt; Source/JavaScriptCore/parser/NodeConstructors.h:96
&gt; +        : ConstantNode(location, ResultType::unknownType())

ResultType::bigIntType().

&gt; Source/JavaScriptCore/parser/ResultType.h:146
&gt; +            if (op1.definitelyIsBigInt() || op2.definitelyIsBigInt())
&gt; +                return op1.definitelyIsBigInt() &amp;&amp; op2.definitelyIsBigInt() ? bigIntType() : unknownType();

We should model this precisely according to this https://tc39.github.io/proposal-bigint/#sec-addition-operator-plus-runtime-semantics-evaluation. Otherwise, it becomes a bug.
Right now, we fallback to stringOrNumberType if we do not have any information about op1 and op2. But it is wrong since it does not include bigIntType().

Instead of returning unknownType() / stringOrNumberType(), we should fallback to something like `addResultType()` instead of `stringOrNumberType()`.
And `addResultType()` should include String, Number, and BigInt.

So, here, we should have

if (op1.definitelyIsBigInt() || op2.definitelyIsBigInt())
    return bigIntType();
return addResultType();

Because one of op is definitely BigInt, the result should be BigInt or TypeError.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:75
&gt; +JSBigInt::JSBigInt(VM&amp; vm, Structure* structure, int createWithLength)
&gt; +    : Base(vm, structure)
&gt; +    , m_length(createWithLength)

No, I think darin@ said we should rename `JSBigInt::create` to `JSBigInt::createWithLength`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:101
&gt; +JSBigInt* JSBigInt::create(ExecState* exec, VM&amp; vm, int createWithLength)

createWithLength.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:121
&gt; +        void* backingStore = vm.gigacageAuxiliarySpace(m_data.kind).tryAllocate(sizeFor(m_length));
&gt; +        Digit* data = static_cast&lt;Digit*&gt;(backingStore);
&gt; +        if (!data) {
&gt; +            auto scope = DECLARE_THROW_SCOPE(vm);
&gt; +            throwOutOfMemoryError(exec, scope);
&gt; +            return;
&gt; +        }
&gt; +        
&gt; +        m_data.set(vm, this, data);

It&apos;s ok for now. But I&apos;m not sure why we need to allocate auxiliary buffer for BigInt. Why not allocating `sizeof(JSBigInt) + alignment + sizeof(Digit) * length` for JSBigInt and using tail space as its buffer? (this is similar design to JSLexicalEnvironment).

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:41
&gt; +    friend class BigIntImpl;

Let&apos;s drop this.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:73
&gt; +    VM&amp; vm = exec-&gt;vm();
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

This is unnecessary.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:82
&gt; +    if (isBigInt()) {
&gt; +        throwTypeError(exec, scope, ASCIILiteral(&quot;Convertion from &apos;BigInt&apos; to &apos;number&apos; is not allowed.&quot;));
&gt; +        return PNaN;
&gt; +    }

This is wrong. JSBigInt case should be handled in `if (isCell())` clause.
We should add this to `JSCell::toNumber`.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:728
&gt; +

Drop this.

&gt; Source/JavaScriptCore/runtime/JSCell.cpp:161
&gt;  }

Please revisit all the JSCell&apos;s functions. Bunch of functions just assume that Symbol, JSString, and JSObject may come. But JSBigInt is not considered.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:640
&gt; -    
&gt; +

Let&apos;s drop this.

&gt; Source/JavaScriptCore/runtime/PrototypeKey.h:32
&gt; +class FunctionExecutable;

Why is this necessary?

&gt; Source/JavaScriptCore/runtime/StructureCache.h:36
&gt; +class FunctionExecutable;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374723</commentid>
    <comment_count>35</comment_count>
      <attachid>327568</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-26 06:32:47 -0800</bug_when>
    <thetext>Comment on attachment 327568
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/ResultType.h:146
&gt;&gt; +                return op1.definitelyIsBigInt() &amp;&amp; op2.definitelyIsBigInt() ? bigIntType() : unknownType();
&gt; 
&gt; We should model this precisely according to this https://tc39.github.io/proposal-bigint/#sec-addition-operator-plus-runtime-semantics-evaluation. Otherwise, it becomes a bug.
&gt; Right now, we fallback to stringOrNumberType if we do not have any information about op1 and op2. But it is wrong since it does not include bigIntType().
&gt; 
&gt; Instead of returning unknownType() / stringOrNumberType(), we should fallback to something like `addResultType()` instead of `stringOrNumberType()`.
&gt; And `addResultType()` should include String, Number, and BigInt.
&gt; 
&gt; So, here, we should have
&gt; 
&gt; if (op1.definitelyIsBigInt() || op2.definitelyIsBigInt())
&gt;     return bigIntType();
&gt; return addResultType();
&gt; 
&gt; Because one of op is definitely BigInt, the result should be BigInt or TypeError.

Ah, no. If one of op may be string, the result would be string. So, this should be,

if (op1.definitelyIsBigInt() &amp;&amp; op2.definitelyIsBigInt())
    return bigIntType();
return addResultType();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375793</commentid>
    <comment_count>36</comment_count>
      <attachid>327568</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-29 06:19:23 -0800</bug_when>
    <thetext>Comment on attachment 327568
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3152
&gt;&gt; +    }
&gt; 
&gt; I think currently, we have no way to handle this correctly.
&gt; Just RELEASE_ASSERT would be better since we do not have the same handling for JSString.

Ok. Created the bug. https://bugs.webkit.org/show_bug.cgi?id=180139

&gt;&gt; Source/JavaScriptCore/jsc.cpp:48
&gt;&gt; +#include &quot;JSBigInt.h&quot;
&gt; 
&gt; Why is this necessary?

No.

&gt;&gt; Source/JavaScriptCore/llint/LLIntData.cpp:170
&gt;&gt; +        uint32_t bits = 0x480000;
&gt; 
&gt; Why do we need this change?

We are changing ResultType::numBitsNeeded to 7. ArithProfile uses it to calculate rhsObservedTypeShift and lhsObservedTypeShift. So, we need to &lt;&lt; 2 all hard coded bits here.

&gt;&gt;&gt; Source/JavaScriptCore/parser/ResultType.h:146
&gt;&gt;&gt; +                return op1.definitelyIsBigInt() &amp;&amp; op2.definitelyIsBigInt() ? bigIntType() : unknownType();
&gt;&gt; 
&gt;&gt; We should model this precisely according to this https://tc39.github.io/proposal-bigint/#sec-addition-operator-plus-runtime-semantics-evaluation. Otherwise, it becomes a bug.
&gt;&gt; Right now, we fallback to stringOrNumberType if we do not have any information about op1 and op2. But it is wrong since it does not include bigIntType().
&gt;&gt; 
&gt;&gt; Instead of returning unknownType() / stringOrNumberType(), we should fallback to something like `addResultType()` instead of `stringOrNumberType()`.
&gt;&gt; And `addResultType()` should include String, Number, and BigInt.
&gt;&gt; 
&gt;&gt; So, here, we should have
&gt;&gt; 
&gt;&gt; if (op1.definitelyIsBigInt() || op2.definitelyIsBigInt())
&gt;&gt;     return bigIntType();
&gt;&gt; return addResultType();
&gt;&gt; 
&gt;&gt; Because one of op is definitely BigInt, the result should be BigInt or TypeError.
&gt; 
&gt; Ah, no. If one of op may be string, the result would be string. So, this should be,
&gt; 
&gt; if (op1.definitelyIsBigInt() &amp;&amp; op2.definitelyIsBigInt())
&gt;     return bigIntType();
&gt; return addResultType();

Sure. Nice Catch.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:75
&gt;&gt; +    , m_length(createWithLength)
&gt; 
&gt; No, I think darin@ said we should rename `JSBigInt::create` to `JSBigInt::createWithLength`.

Ooh. Makes sense and it is better as well.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:121
&gt;&gt; +        m_data.set(vm, this, data);
&gt; 
&gt; It&apos;s ok for now. But I&apos;m not sure why we need to allocate auxiliary buffer for BigInt. Why not allocating `sizeof(JSBigInt) + alignment + sizeof(Digit) * length` for JSBigInt and using tail space as its buffer? (this is similar design to JSLexicalEnvironment).

I agree. I just didn&apos;t know that I could put int &quot;inline&quot; but I noticed that JSFinalObject does it as well with inlineStorage. I&apos;m going to follow it.

&gt;&gt; Source/JavaScriptCore/runtime/PrototypeKey.h:32
&gt;&gt; +class FunctionExecutable;
&gt; 
&gt; Why is this necessary?

It was breaking build in my old Patch, because this class isn&apos;t forward declared into any Header. Let me drop it and see if it breaks current Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376282</commentid>
    <comment_count>37</comment_count>
      <attachid>327970</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-11-30 05:42:46 -0800</bug_when>
    <thetext>Created attachment 327970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376284</commentid>
    <comment_count>38</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-30 05:45:23 -0800</bug_when>
    <thetext>Attachment 327970 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:434:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:435:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:436:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:437:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 49 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>1376778</commentid>
    <comment_count>39</comment_count>
      <attachid>327970</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-01 04:18:47 -0800</bug_when>
    <thetext>Comment on attachment 327970
Patch

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

Patch looks quite nice.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:170
&gt; +        uint32_t bits = 0x480000;

Need to sync LowLevelInterpreter.asm&apos;s data.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:180
&gt; +        uint32_t bits = 0x880000;

Need to sync LowLevelInterpreter.asm&apos;s data.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:190
&gt; +        uint32_t bits = 0x900000;

Need to sync LowLevelInterpreter.asm&apos;s data.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:200
&gt; +        uint32_t bits = 0x500000;

Need to sync LowLevelInterpreter.asm&apos;s data.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1560
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(binaryValue);

I think `return binaryValue;` just works.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1571
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(makeIdentifier(m_buffer8.data(), m_buffer8.size()));

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1576
&gt; +    return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(parseIntOverflow(m_buffer8.data(), m_buffer8.size(), 2));

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1598
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(octalValue);

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1610
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(makeIdentifier(m_buffer8.data(), m_buffer8.size()));

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1615
&gt; +    return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(parseIntOverflow(m_buffer8.data(), m_buffer8.size(), 8));

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1641
&gt; +            return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(decimalValue);

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1653
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(makeIdentifier(m_buffer8.data(), m_buffer8.size()));

Ditto.

&gt; Source/JavaScriptCore/parser/Lexer.h:176
&gt; +    enum class NumberParseResult { Number, BigInt, Failure };

It is no longer used. Let&apos;s drop this.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:44
&gt; +    void initialize(bool zeroInitialize);

Pass some `enum class` instead of `bool`.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:77
&gt; +

This line is unnecessary.

&gt; Source/JavaScriptCore/runtime/JSCell.cpp:190
&gt; +    // FIXME: [ESNext][BigInt] Implement JSBigInt, BigIntConstructor and BigIntPrototyp

Typo, /BigIntPrototyp/BigIntPrototype/

&gt; Source/JavaScriptCore/runtime/Structure.cpp:29
&gt; +#include &quot;BuiltinNames.h&quot;

Is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376808</commentid>
    <comment_count>40</comment_count>
      <attachid>327970</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-01 07:51:19 -0800</bug_when>
    <thetext>Comment on attachment 327970
Patch

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

Thanks for the review!

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1560
&gt;&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(binaryValue);
&gt; 
&gt; I think `return binaryValue;` just works.

It is generating compilation error.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1571
&gt;&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(makeIdentifier(m_buffer8.data(), m_buffer8.size()));
&gt; 
&gt; Ditto.

Ditto.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:44
&gt;&gt; +    void initialize(bool zeroInitialize);
&gt; 
&gt; Pass some `enum class` instead of `bool`.

I agree!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376809</commentid>
    <comment_count>41</comment_count>
      <attachid>328091</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-01 07:53:02 -0800</bug_when>
    <thetext>Created attachment 328091
Patch for test

I&apos;m testing the EWS bots here. I still have some work to do on that from last review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376810</commentid>
    <comment_count>42</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 07:55:26 -0800</bug_when>
    <thetext>Attachment 328091 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:434:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:435:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:436:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:437:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 49 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>1377277</commentid>
    <comment_count>43</comment_count>
      <attachid>328228</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-02 05:16:25 -0800</bug_when>
    <thetext>Created attachment 328228
Benchmarks

Benchmarks looks neutral with this Patch implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377278</commentid>
    <comment_count>44</comment_count>
      <attachid>328229</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-02 05:32:47 -0800</bug_when>
    <thetext>Created attachment 328229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377279</commentid>
    <comment_count>45</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-02 06:07:44 -0800</bug_when>
    <thetext>Attachment 328229 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:434:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:435:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:436:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:437:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 49 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>1378153</commentid>
    <comment_count>46</comment_count>
      <attachid>328448</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-05 07:11:15 -0800</bug_when>
    <thetext>Created attachment 328448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378154</commentid>
    <comment_count>47</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-05 07:14:14 -0800</bug_when>
    <thetext>Attachment 328448 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:434:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:435:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:436:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:437:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 49 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>1379545</commentid>
    <comment_count>48</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-08 06:44:55 -0800</bug_when>
    <thetext>Pong review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380034</commentid>
    <comment_count>49</comment_count>
      <attachid>328927</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-09 17:51:46 -0800</bug_when>
    <thetext>Created attachment 328927
Patch

Rebasing with master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380035</commentid>
    <comment_count>50</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-09 17:54:54 -0800</bug_when>
    <thetext>Attachment 328927 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:434:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:435:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:436:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:437:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 51 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>1380078</commentid>
    <comment_count>51</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-10 10:58:10 -0800</bug_when>
    <thetext>Ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380107</commentid>
    <comment_count>52</comment_count>
      <attachid>328927</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-10 18:29:37 -0800</bug_when>
    <thetext>Comment on attachment 328927
Patch

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

There is a substantial number of tests here, but I am not sure they cover all the code. There is a lot of code!

&gt; JSTests/ChangeLog:22
&gt; +        * stress/big-int-literal-line-terminator.js: Added.
&gt; +        (assert):
&gt; +        * stress/big-int-literals.js: Added.
&gt; +        (assert):
&gt; +        (assertThrowSyntaxError):
&gt; +        (catch):
&gt; +        * stress/big-int-operations-error.js: Added.
&gt; +        (assert):
&gt; +        (assertThrowTypeError):
&gt; +        * stress/big-int-type-of.js: Added.
&gt; +        (assert):
&gt; +        * stress/big-int-white-space-trailing-leading.js: Added.
&gt; +        (assert):
&gt; +        (assertThrowSyntaxError):

Although the script puts them in, I don’t think we need to put function lists for newly added files into the change log.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3149
&gt; +    auto it = m_bigIntMap.find(entryKey);
&gt; +    if (it != m_bigIntMap.end())
&gt; +        return it-&gt;value;
&gt; +    
&gt; +    JSBigInt* bigIntInMap = JSBigInt::parseInt(nullptr, *vm(), identifier.string(), radix);
&gt; +    // FIXME: [ESNext] Enables a way to throw an error on ByteCodeGenerator step
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=180139
&gt; +    RELEASE_ASSERT(bigIntInMap);
&gt; +    addConstantValue(bigIntInMap);
&gt; +
&gt; +    auto addedEntry = m_bigIntMap.add(entryKey, bigIntInMap);
&gt; +    ASSERT(addedEntry.isNewEntry);
&gt; +
&gt; +    return addedEntry.iterator-&gt;value;

This is double hashing, once in find and a second time in add. It’s more efficient to hash only once, and the best way to do that is normally to use the ensure function instead of a find/add pair. Can we do that?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1009
&gt; +                return key.first-&gt;existingSymbolAwareHash() + WTF::intHash(key.second);

Adding two hashes together is not the best way to combine two hashes. Instead, please try this:

    return computeHash(key.first-&gt;existingSymbolAwareHash(), key.second);

That uses my newly added Hasher class so you might have to include Hasher.h.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1014
&gt; +                return a.first == b.first &amp;&amp; a.second == b.second;

This can just be &quot;return a == b&quot;; std::pair knows how to do ==.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1560
&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(binaryValue);

Should not need to be explicit about the std::optional part. This should work:

    return Variant&lt;double, const Identifier*&gt; { binaryValue };

Same thing in many other cases below.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:2168
&gt; +            if (!parseNumberResult || WTF::holds_alternative&lt;double&gt;(*parseNumberResult))
&gt; +                tokenData-&gt;doubleValue = parseNumberResult ? WTF::get&lt;double&gt;(*parseNumberResult) : 0;

I think this would be more elegant with two separate if statements rather than using the trinary to give us a zero.

Or possibly you could try one of these?

    auto parseNumberResult = parseBinary().value_or(0);
    auto parseNumberResult = parseBinary().value_or(0.0);

Not sure if that will compile without casting the 0 to the Variant type which would make it pretty ugly.

Same pattern recurs below.

&gt; Source/JavaScriptCore/parser/Nodes.h:332
&gt; +    class BigIntNode : public ConstantNode {

Could mark this class final. I think you should do it.

&gt; Source/JavaScriptCore/parser/Nodes.h:339
&gt; +        bool isBigInt() const override { return true; }
&gt; +        JSValue jsValue(BytecodeGenerator&amp;) const override;

We should mark these final instead of override, I think.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:80
&gt; +        void* data = static_cast&lt;void*&gt;(dataStorage());
&gt; +        memset(data, 0, length() * DigitSize);

No need for the static_cast, nor for the local variable. Can just pass dataStorage() to memset. Don’t forget to remove the unneeded braces too.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:119
&gt; +std::optional&lt;uint8_t&gt; JSBigInt::toStringOneDigit()

I think a better name would be singleDigitValueForString. Calling it toString is not great because it returns the value for a digit, not a string, and not even a numeric digit character for a string, which is usually what &quot;digit&quot; means. Worse, Digit means something different in JSBigInt. Might want something in the name that makes it clear it’s base 10; not sure.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:371
&gt; +        RELEASE_ASSERT(!(carry + high));

Why exactly does it need to be RELEASE_ASSERT instead of ASSERT here?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:429
&gt; +// base-N string representation of a number. To increase accuracy, the array

I think you mean to increase precision?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:451
&gt; +#if USE(JSVALUE64)
&gt; +    int leadingZeros = clz64(lastDigit);
&gt; +#else
&gt; +    int leadingZeros = clz32(lastDigit);
&gt; +#endif

Could the if here be based on sizeof(lastDigit) instead of USE? I think that would be clearer. The actual definition of Digit is based on uintptr_t, not on USE(JSVALUE64).

Or we could have an overloaded function so we don’t need an #if here at all.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:474
&gt; +String JSBigInt::toStringGeneric(ExecState* exec, JSBigInt* x, int radix)

In new code I am suggesting we call this &quot;state&quot; rather than &quot;exec&quot;, since the former is a noun and a word and the latter is a non-word and an adjective. In many cases we are using ExecState&amp; instead of ExecState*, and I would have done that here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:476
&gt; +    StringVector&lt;LChar&gt; resultString;

Should one this down past the out-of-memory check. Also not 100% sure that we should use a StringVector and adopt it; OK for now I guess.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:490
&gt; +        return StringImpl::adopt(WTFMove(resultString));

This should just return the null string; we don’t want to wastefully allocate memory when we are throwing an error.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:574
&gt; +    Digit* data = trimmedBigInt-&gt;dataStorage();
&gt; +    for (int i = 0; i &lt; newLength; i++)
&gt; +        data[i] = digit(i);

I would write this instead:

    std::copy(dataStorage(), dataStorage() + newLength, trimmedBigInt-&gt;dataStorage());

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:589
&gt; +    size_t chars = static_cast&lt;size_t&gt;(charcount);

Should not require a static_cast.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:608
&gt; +    if (exec)
&gt; +        throwOutOfMemoryError(exec, scope);

What is this &quot;if (exec)&quot; about? Do we allow calling this with an exec of null?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:616
&gt; +    JSBigInt* thisObject = jsCast&lt;JSBigInt*&gt;(cell);
&gt; +    size_t bufferEstimatedSize = thisObject-&gt;m_length * DigitSize;
&gt; +    return Base::estimatedSize(cell) + bufferEstimatedSize;

Seems like this works well as a one-liner:

    return Base::estimatedSize(cell) + jsCast&lt;JSBigInt*&gt;(cell)-&gt;m_length * digitSize;

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:59
&gt; +public:
&gt; +
&gt; +    enum class InitializationType { None, WithZero };
&gt; +    
&gt; +    JSBigInt(VM&amp;, Structure*, int length);
&gt; +
&gt; +    void initialize(InitializationType);
&gt; +
&gt; +    static void visitChildren(JSCell*, SlotVisitor&amp;);
&gt; +
&gt; +    static size_t estimatedSize(JSCell*);
&gt; +
&gt; +    static size_t allocationSize(int length);
&gt; +
&gt; +    static Structure* createStructure(VM&amp;, JSGlobalObject*, JSValue prototype);
&gt; +
&gt; +    static JSBigInt* createZero(ExecState*, VM&amp;);
&gt; +
&gt; +    static JSBigInt* createWithLength(ExecState*, VM&amp;, int length);

Some more grouping here would make this easier to read. For example:

    group InitializationType with initialize
    group estimatedSize with allocationSize
    group createZero with createWithLength
    group toStringOneDigit with toString

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:79
&gt; +    JS_EXPORT_PRIVATE static bool equalToBigInt(JSBigInt* x, JSBigInt* y);

No need to name these arguments.

Not sure why we need to name this with the type in the name.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:97
&gt; +    static const int BitsPerByte = 8;
&gt; +    static const int DigitSize = sizeof(Digit);
&gt; +    static const int DigitBits = DigitSize * BitsPerByte;
&gt; +    static const int HalfDigitBits = DigitBits / 2;
&gt; +    static const Digit HalfDigitMask = (1ull &lt;&lt; HalfDigitBits) - 1;
&gt; +    static const int MaxInt = 0x7FFFFFFF;
&gt; +    
&gt; +    // The maximum length that the current implementation supports would be
&gt; +    // MaxInt / DigitBits. However, we use a lower limit for now, because
&gt; +    // raising it later is easier than lowering it.
&gt; +    // Support up to 1 million bits.
&gt; +    static const int MaxLength = 1024 * 1024 / (sizeof(void*) * BitsPerByte);

WebKit coding style does not use capital letters for constants; we use that for types. These should probably all be constexpr.

Also seems like sizeof(Digit) is clearer than DigitSize, so not 100% sure we should have a named constant for that one.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:107
&gt; +    static Digit digitAdd(Digit a, Digit b, Digit&amp; carry);
&gt; +    static Digit digitSub(Digit a, Digit b, Digit&amp; borrow);
&gt; +    static Digit digitMul(Digit a, Digit b, Digit&amp; high);

No need for the &quot;a&quot; and &quot;b&quot; names here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:116
&gt; +    template &lt;typename CharType&gt;
&gt; +    static JSBigInt* parseInt(ExecState* exec, VM&amp; vm, CharType* data, int length, int startIndex, int radix, bool allowEmptyString = true)

Can this go into the cpp file please? We can declare the template in the header and only define it in the source file as long as it’s only used inside the source file.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:177
&gt; +    static size_t offsetOfData()
&gt; +    {
&gt; +        return WTF::roundUpToMultipleOf&lt;sizeof(Digit)&gt;(sizeof(JSBigInt));
&gt; +    }

If these private functions are not used outside the .cpp file, please move them inside to cut down on recompilation and for clarity.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:181
&gt; +        return bitwise_cast&lt;Digit*&gt;(bitwise_cast&lt;char*&gt;(this) + offsetOfData());

There is no need to use bitwise_cast here. Should use reinterpret_cast in a case like this where it’s just about different pointer types. We should reserve bitwise_cast for cases where its different semantic is needed.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:188
&gt; +        Digit* dataPtr = dataStorage();
&gt; +        return dataPtr[n];

No need for the local variable here.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:195
&gt; +        Digit* digitPtr = dataStorage();
&gt; +        digitPtr[n] = value;

Ditto.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:200
&gt; +        return length * DigitSize;

What guarantees we can’t overflow here?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:386
&gt; +        std::optional&lt;uint8_t&gt; digit = bigInt-&gt;toStringOneDigit();
&gt; +        if (digit)
&gt; +            return vm.smallStrings.singleCharacterString(*digit + &apos;0&apos;);

Better to declare inside the if statement:

    if (auto digit = bigInt-&gt;toStringOneDigit())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380523</commentid>
    <comment_count>53</comment_count>
      <attachid>328927</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-11 18:53:23 -0800</bug_when>
    <thetext>Comment on attachment 328927
Patch

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

Thank you very much for the review and suggestions!

About tests, there are pieces of code here that are prepared to followup bug https://bugs.webkit.org/show_bug.cgi?id=175359, such as toString, parseInt(to be named to another method as discussed into BigInt proposal) and BigInt constructor that requires some machinery that I removed to simplify review process. Also, there are plenty of patches with binary/unary operations that will insert another amount of tests as well.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1009
&gt;&gt; +                return key.first-&gt;existingSymbolAwareHash() + WTF::intHash(key.second);
&gt; 
&gt; Adding two hashes together is not the best way to combine two hashes. Instead, please try this:
&gt; 
&gt;     return computeHash(key.first-&gt;existingSymbolAwareHash(), key.second);
&gt; 
&gt; That uses my newly added Hasher class so you might have to include Hasher.h.

Thx!

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1560
&gt;&gt; +        return std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt;(binaryValue);
&gt; 
&gt; Should not need to be explicit about the std::optional part. This should work:
&gt; 
&gt;     return Variant&lt;double, const Identifier*&gt; { binaryValue };
&gt; 
&gt; Same thing in many other cases below.

That&apos;s much better. Changed.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:2168
&gt;&gt; +                tokenData-&gt;doubleValue = parseNumberResult ? WTF::get&lt;double&gt;(*parseNumberResult) : 0;
&gt; 
&gt; I think this would be more elegant with two separate if statements rather than using the trinary to give us a zero.
&gt; 
&gt; Or possibly you could try one of these?
&gt; 
&gt;     auto parseNumberResult = parseBinary().value_or(0);
&gt;     auto parseNumberResult = parseBinary().value_or(0.0);
&gt; 
&gt; Not sure if that will compile without casting the 0 to the Variant type which would make it pretty ugly.
&gt; 
&gt; Same pattern recurs below.

ok

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:119
&gt;&gt; +std::optional&lt;uint8_t&gt; JSBigInt::toStringOneDigit()
&gt; 
&gt; I think a better name would be singleDigitValueForString. Calling it toString is not great because it returns the value for a digit, not a string, and not even a numeric digit character for a string, which is usually what &quot;digit&quot; means. Worse, Digit means something different in JSBigInt. Might want something in the name that makes it clear it’s base 10; not sure.

Yes, I agree. Also calling using Digit to refers to either base (2^32) or (2^64) sounds poor to me, but I also can&apos;t think in any other better name. Following your comment.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:371
&gt;&gt; +        RELEASE_ASSERT(!(carry + high));
&gt; 
&gt; Why exactly does it need to be RELEASE_ASSERT instead of ASSERT here?

I would like to cause a break due to wrong configuration, but I agree that we should use ASSERT.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:429
&gt;&gt; +// base-N string representation of a number. To increase accuracy, the array
&gt; 
&gt; I think you mean to increase precision?

The original comment is not mine. It is from original V8 code. I understand precision as you mentioned.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:451
&gt;&gt; +#endif
&gt; 
&gt; Could the if here be based on sizeof(lastDigit) instead of USE? I think that would be clearer. The actual definition of Digit is based on uintptr_t, not on USE(JSVALUE64).
&gt; 
&gt; Or we could have an overloaded function so we don’t need an #if here at all.

Using &quot;if&quot; here.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:476
&gt;&gt; +    StringVector&lt;LChar&gt; resultString;
&gt; 
&gt; Should one this down past the out-of-memory check. Also not 100% sure that we should use a StringVector and adopt it; OK for now I guess.

FIXME added here. https://bugs.webkit.org/show_bug.cgi?id=18067

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:490
&gt;&gt; +        return StringImpl::adopt(WTFMove(resultString));
&gt; 
&gt; This should just return the null string; we don’t want to wastefully allocate memory when we are throwing an error.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:608
&gt;&gt; +        throwOutOfMemoryError(exec, scope);
&gt; 
&gt; What is this &quot;if (exec)&quot; about? Do we allow calling this with an exec of null?

We don&apos;t have exec at &quot;BytecodeGenerator::addBigIntConstant&quot;. Probably we will remove it when fixing https://bugs.webkit.org/show_bug.cgi?id=180139

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:116
&gt;&gt; +    static JSBigInt* parseInt(ExecState* exec, VM&amp; vm, CharType* data, int length, int startIndex, int radix, bool allowEmptyString = true)
&gt; 
&gt; Can this go into the cpp file please? We can declare the template in the header and only define it in the source file as long as it’s only used inside the source file.

Sure.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:200
&gt;&gt; +        return length * DigitSize;
&gt; 
&gt; What guarantees we can’t overflow here?

Nothing, but we aren&apos;t using this method anymore. Removing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380528</commentid>
    <comment_count>54</comment_count>
      <attachid>329078</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-11 19:35:11 -0800</bug_when>
    <thetext>Created attachment 329078
Patch for landing

Asking for new review before landing cause I added new test and changed code based on comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380530</commentid>
    <comment_count>55</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-11 19:38:48 -0800</bug_when>
    <thetext>Attachment 329078 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:147:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:411:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:429:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:430:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:431:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:432:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:111:  The parameter name &quot;state&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:111:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:122:  The parameter name &quot;n&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.h:123:  The parameter name &quot;n&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: JSTests/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:50:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 12 in 52 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>1380546</commentid>
    <comment_count>56</comment_count>
      <attachid>329078</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-11 21:10:01 -0800</bug_when>
    <thetext>Comment on attachment 329078
Patch for landing

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1019
&gt; +        struct BigIntEntryHash {
&gt; +            static unsigned hash(BigIntMapEntry key)
&gt; +            {
&gt; +                return computeHash(key.first-&gt;existingSymbolAwareHash(), key.second);
&gt; +            }
&gt; +            
&gt; +            static bool equal(BigIntMapEntry a, BigIntMapEntry b)
&gt; +            {
&gt; +                return a == b;
&gt; +            }
&gt; +            
&gt; +            static const bool safeToCompareToEmptyOrDeleted = true;
&gt; +        };

Now that I look at this again, I believe the default hash for pairs will do the right thing without us coding anything here. We just not specify BigIntEntryHash and let the default do its thing. We could also remove the Hasher.h include if we do that.

&gt; Source/JavaScriptCore/parser/Lexer.h:181
&gt; +    ALWAYS_INLINE Variant&lt;double, const Identifier*&gt; parseHex();
&gt; +    ALWAYS_INLINE std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt; parseBinary();
&gt; +    ALWAYS_INLINE std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt; parseOctal();
&gt; +    ALWAYS_INLINE std::optional&lt;Variant&lt;double, const Identifier*&gt;&gt; parseDecimal();

Another way to make the code tighter is to do this:

    using NumberParseResult = Variant&lt;double, const Identifier*&gt;;

Then you can just use that instead of writing out the Variant type each time. Like:

    ALWAYS_INLINE NumberParseResult parseHex();
    ALWAYS_INLINE std::optional&lt;NumberParseResult&gt; parseBinary();

And:

    template&lt;typename T&gt; ALWAYS_INLINE auto Lexer&lt;T&gt;::parseBinary() -&gt; std::optional&lt;NumberParseResult&gt;

&gt; Source/JavaScriptCore/parser/Nodes.h:338
&gt; +        bool isBigInt() const override { return true; }

This can be final instead of override.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380631</commentid>
    <comment_count>57</comment_count>
      <attachid>329106</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-12 04:38:05 -0800</bug_when>
    <thetext>Created attachment 329106
Patch for landingh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380634</commentid>
    <comment_count>58</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-12 04:41:34 -0800</bug_when>
    <thetext>Attachment 329106 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:147:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:428:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:429:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:430:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:431:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/HashFunctions.h:221:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 54 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>1380788</commentid>
    <comment_count>59</comment_count>
      <attachid>329106</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-12 13:02:06 -0800</bug_when>
    <thetext>Comment on attachment 329106
Patch for landingh

Clearing flags on attachment: 329106

Committed r225799: &lt;https://trac.webkit.org/changeset/225799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380789</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-12 13:02:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380792</commentid>
    <comment_count>61</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-12 13:05:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/36002172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380845</commentid>
    <comment_count>62</comment_count>
      <attachid>329106</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-12 14:22:03 -0800</bug_when>
    <thetext>Comment on attachment 329106
Patch for landingh

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

&gt; JSTests/bigIntTests.yaml:6
&gt; +# 1. Redistributions of source code must retain the above copyright #    notice, this list of conditions and the following disclaimer.

Missing newline.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:472
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=18067

This doesn&apos;t look like the right bugzilla bug. You want:
https://bugs.webkit.org/show_bug.cgi?id=180671

I&apos;d like to see tests for toString. The radix behavior is special and also there is specific `this` value behavior:
https://tc39.github.io/proposal-bigint/#sec-bigint.prototype.tostring

&gt; The toString function is not generic; it throws a TypeError exception if its this value is not a BigInt or a BigInt object. Therefore, it cannot be transferred to other kinds of objects for use as a method.

Likewise JSON.stringify tests for BigInt, as you pointed out on IRC it is stringifyable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380975</commentid>
    <comment_count>63</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-12 17:25:43 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #62)
&gt; Comment on attachment 329106 [details]
&gt; Patch for landingh
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329106&amp;action=review
&gt; 
&gt; &gt; JSTests/bigIntTests.yaml:6
&gt; &gt; +# 1. Redistributions of source code must retain the above copyright #    notice, this list of conditions and the following disclaimer.
&gt; 
&gt; Missing newline.

Oh, Nice catch. I will fix that into followup bug: https://bugs.webkit.org/show_bug.cgi?id=175359

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:472
&gt; &gt; +    // https://bugs.webkit.org/show_bug.cgi?id=18067
&gt; 
&gt; This doesn&apos;t look like the right bugzilla bug. You want:
&gt; https://bugs.webkit.org/show_bug.cgi?id=180671

Ditto.

&gt; I&apos;d like to see tests for toString. The radix behavior is special and also
&gt; there is specific `this` value behavior:
&gt; https://tc39.github.io/proposal-bigint/#sec-bigint.prototype.tostring
&gt; 
&gt; &gt; The toString function is not generic; it throws a TypeError exception if its this value is not a BigInt or a BigInt object. Therefore, it cannot be transferred to other kinds of objects for use as a method.
&gt; 
&gt; Likewise JSON.stringify tests for BigInt, as you pointed out on IRC it is
&gt; stringifyable.

The current &quot;JSBigInt::toString&quot; implementation we have is just used by JSC internal print. If you try ```let a = 10n; a.toString()```, it will crash because we don&apos;t have BigIntPrototype in current Patch. This is going to be added in https://bugs.webkit.org/show_bug.cgi?id=175359 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381030</commentid>
    <comment_count>64</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-12-12 20:20:03 -0800</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #59)
&gt; Comment on attachment 329106 [details]
&gt; Patch for landingh
&gt; 
&gt; Clearing flags on attachment: 329106
&gt; 
&gt; Committed r225799: &lt;https://trac.webkit.org/changeset/225799&gt;
The tests added with this change are failing an assertion on 32-bit JSC bots:
https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/706/steps/webkit-32bit-jsc-test/logs/stdio

stress/big-int-function-apply.js.big-int-enabled: ERROR: Unchecked JS exception:
stress/big-int-function-apply.js.big-int-enabled:     This scope can throw a JS exception: allocateFor @ ./runtime/JSBigInt.cpp:581
stress/big-int-function-apply.js.big-int-enabled:         (ExceptionScope::m_recursionDepth was 4)
stress/big-int-function-apply.js.big-int-enabled:     But the exception was unchecked as of this scope: getNonIndexPropertySlot @ /Volumes/Data/slave/highsierra-32bitJSC-debug/build/Source/JavaScriptCore/runtime/JSObjectInlines.h:136
stress/big-int-function-apply.js.big-int-enabled:         (ExceptionScope::m_recursionDepth was 4)
stress/big-int-function-apply.js.big-int-enabled: 
stress/big-int-function-apply.js.big-int-enabled: Unchecked exception detected at:
stress/big-int-function-apply.js.big-int-enabled:     1   0x12a6a5d JSC::VM::verifyExceptionCheckNeedIsSatisfied(unsigned int, JSC::ExceptionEventLocation&amp;)
stress/big-int-function-apply.js.big-int-enabled:     2   0x127ebb6 JSC::ThrowScope::ThrowScope(JSC::VM&amp;, JSC::ExceptionEventLocation)
stress/big-int-function-apply.js.big-int-enabled:     3   0x127d98b JSC::ThrowScope::ThrowScope(JSC::VM&amp;, JSC::ExceptionEventLocation)
stress/big-int-function-apply.js.big-int-enabled:     4   0x365976 JSC::JSObject::getNonIndexPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
stress/big-int-function-apply.js.big-int-enabled:     5   0x36532a JSC::JSObject::getPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)
stress/big-int-function-apply.js.big-int-enabled:     6   0x1115aa5 JSC::JSObject::hasPropertyGeneric(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot::InternalMethodType) const
stress/big-int-function-apply.js.big-int-enabled:     7   0x1115a07 JSC::JSObject::hasProperty(JSC::ExecState*, JSC::PropertyName) const
stress/big-int-function-apply.js.big-int-enabled:     8   0xcce4c8 JSC::JSGlobalObject::addVar(JSC::ExecState*, JSC::Identifier const&amp;)
stress/big-int-function-apply.js.big-int-enabled:     9   0x11e62e3 JSC::ProgramExecutable::initializeGlobalProperties(JSC::VM&amp;, JSC::ExecState*, JSC::JSScope*)
stress/big-int-function-apply.js.big-int-enabled:     10  0xccdc49 JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::ExecState*, JSC::JSObject*)
stress/big-int-function-apply.js.big-int-enabled:     11  0xfaf0e2 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
stress/big-int-function-apply.js.big-int-enabled:     12  0x106c71 runWithOptions(GlobalObject*, CommandLine&amp;)
stress/big-int-function-apply.js.big-int-enabled:     13  0xdbf9c jscmain(int, char**)::$_3::operator()(JSC::VM&amp;, GlobalObject*) const
stress/big-int-function-apply.js.big-int-enabled:     14  0xc26af int runJSC&lt;jscmain(int, char**)::$_3&gt;(CommandLine, bool, jscmain(int, char**)::$_3 const&amp;)
stress/big-int-function-apply.js.big-int-enabled:     15  0xc0e70 jscmain(int, char**)
stress/big-int-function-apply.js.big-int-enabled:     16  0xc0d97 main
stress/big-int-function-apply.js.big-int-enabled:     17  0xa75536e1 start
stress/big-int-function-apply.js.big-int-enabled:     18  0x9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381033</commentid>
    <comment_count>65</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-12-12 20:29:11 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #64)
&gt; (In reply to WebKit Commit Bot from comment #59)
&gt; &gt; Comment on attachment 329106 [details]
&gt; &gt; Patch for landingh
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 329106
&gt; &gt; 
&gt; &gt; Committed r225799: &lt;https://trac.webkit.org/changeset/225799&gt;
&gt; The tests added with this change are failing an assertion on 32-bit JSC bots:
&gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; bit%20JSC%20%28BuildAndTest%29/builds/706/steps/webkit-32bit-jsc-test/logs/
&gt; stdio

Correction: this occurs on debug JSC bots, not just 32-bit ones.
https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/1706</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381105</commentid>
    <comment_count>66</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-13 06:21:46 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #65)
&gt; (In reply to Ryan Haddad from comment #64)
&gt; &gt; (In reply to WebKit Commit Bot from comment #59)
&gt; &gt; &gt; Comment on attachment 329106 [details]
&gt; &gt; &gt; Patch for landingh
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 329106
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r225799: &lt;https://trac.webkit.org/changeset/225799&gt;
&gt; &gt; The tests added with this change are failing an assertion on 32-bit JSC bots:
&gt; &gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; &gt; bit%20JSC%20%28BuildAndTest%29/builds/706/steps/webkit-32bit-jsc-test/logs/
&gt; &gt; stdio
&gt; 
&gt; Correction: this occurs on debug JSC bots, not just 32-bit ones.
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/1706

Thanks for the notification. I&apos;m handling this bug into https://bugs.webkit.org/show_bug.cgi?id=180746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381157</commentid>
    <comment_count>67</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-13 10:01:06 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #65)
&gt; (In reply to Ryan Haddad from comment #64)
&gt; &gt; (In reply to WebKit Commit Bot from comment #59)
&gt; &gt; &gt; Comment on attachment 329106 [details]
&gt; &gt; &gt; Patch for landingh
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 329106
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r225799: &lt;https://trac.webkit.org/changeset/225799&gt;
&gt; &gt; The tests added with this change are failing an assertion on 32-bit JSC bots:
&gt; &gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; &gt; bit%20JSC%20%28BuildAndTest%29/builds/706/steps/webkit-32bit-jsc-test/logs/
&gt; &gt; stdio
&gt; 
&gt; Correction: this occurs on debug JSC bots, not just 32-bit ones.
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/1706

Patch with fix into https://bugs.webkit.org/show_bug.cgi?id=180746</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327296</attachid>
            <date>2017-11-17 19:27:00 -0800</date>
            <delta_ts>2017-11-17 19:35:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171118012652.patch</filename>
            <type>text/plain</type>
            <size>90017</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZTYyYTQzN2NhNGYxMDYx
N2EyYWI0NDVmMzBkNGFjNGYzYzVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJbnRD
b25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJl
IGludHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBp
dCBvbiBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1d
IAorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgb24gSlNC
aWdJbnQ6Om1fZGF0YSB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9ybWFuY2Ug
ZHVlIHRvIGNhY2hlIGxvY2FsaXR5IGFuZCBhbGxvd2luZworICAgICAgICA2NC1iaXR3aXNlIChv
ciAzMi1iaXR3aXNlKSBhcml0aG1ldGljIG9wZXJhdGlvbnMuIEpTQmlnSW50IGFsc28gaGFzIG1f
c2lnbgorICAgICAgICB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQgbV9s
ZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEgYXJl
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXByZXNl
bnRhdGlvbiwgSlNCaWdJbnQ6Om1fZGF0YVswXSByZXByZXNlbnRzCisgICAgICAgIHRoZSBsZWFz
dCBzaWduaWZpY2FudCBkaWdpdCBhbmQgSlNCaWdJbnQ6Om1fZGF0YVttX2xlbmd0aCAtIDFdIHJl
cHJlc2VudHMgdGhlIG1vc3QKKyAgICAgICAgc2lnaW5pZmljYW50IGRpZ2l0LgorCisgICAgICAg
IFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRjaCB0aGUgQmlnSW50IGxpdGVy
YWxzIExleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBzdXBwb3J0LiBUaGUgb3BlcmF0
aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJlaW5nCisgICAgICAgIGltcGxl
bWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2UgZmVhdHVyZXMgYXJlIGJlaW5n
IGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0tdXNlQmlnSW50IiBhbmQKKyAg
ICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vu
cy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
RGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUludCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVGcm9tVWludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9t
QW55SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb21Cb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNp
Z24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmlzWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFzQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1i
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpjbHo2NCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVLZXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnR5cGVTdHJpbmcgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZlYXR1cmUgZGVmaW5lIGZvciBhbHRlcm5hdGl2ZSBwcmVzZW50YXRpb24gYnV0dG9uIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4ZDU4NTIyMGI4Yjdj
NTAyOTU4NzNmZWY5ZTMxMjhmNmVmYzYxZDJmLi41MWRiOGRlMzY3MjRiZThkODE0YzU3NWM2YWZk
ODY2ZDczNDg5ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01Niw2
ICs1Niw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhOWM0YTk5YmFiMDUwODA3ZTY3MjZlMTZiYjI1OWFkMDJiMjY0
ZDcwLi4zMDFhYWEzZGQ1YTQ4MzdkYjljMTczNmVhOTU4MzlhZTY5MTcxODQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyOSw2ICsxMTI5LDcgQEAKIAkJODY3MDRCODgxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3
MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQw
MENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzEx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEw
MDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1
MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFS
TXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0
MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBACiAJ
CTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8q
IFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVO
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDEx
NTlGNiAvKiBKU0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jp
Z0ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAx
MTU5RjYgLyogSlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNCaWdJbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBF
OEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1
NDQ2MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFz
bTsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1
NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNt
OyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBh
dGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTEtbW0ubW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UyLW1tLm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMy1tbS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmll
ZFNvdXJjZTQtbW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UyLW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UzLW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMy5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U0LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2U2LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTcuY3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5
RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgz
RjAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0
ODgxRTFBNTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJ
CTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIx
QzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIy
RDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIy
RTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIw
MDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJCThC
QzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJ
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0Jv
dW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFB
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtOTg5OCwxNCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0
Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjczNUU3
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM2
QjMxOUIxRjczNUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
NkIzMTlCMUY3MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4
QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2
QjMxNjYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUzMEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3MGU0
MzcuLmE1ODc4YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9K
U0FzeW5jRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAK
K3J1bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYw
ZTJjNWY4NTgxYjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNkZmVj
MThiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgx
Mjc0NGNlYmZiNWNiZjg5NzY0OTkwZTU1MC4uNTlkNDQ2NjZhZjFmYTc2ZmRkYmZhY2FlMzkxYWEx
Yjk5ZDRjNGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNzgzLDYgKzE3ODQsMTQgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKE9wY29kZUlEIG9wY29k
ZUlELCBSZWdpc3RlcklEKiBkc3QKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoU3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmln
aW50IikgeworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKKyAgICAgICAgICAgICAg
ICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJvYmplY3QiKSB7CiAgICAgICAgICAg
ICAgICAgcmV3aW5kVW5hcnlPcCgpOwogICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNf
b2JqZWN0X29yX251bGwpOwpAQCAtMzEyNSw2ICszMTM0LDE2IEBAIHVuc2lnbmVkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRDb25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5hZGRDb25zdGFudEJ1ZmZlcihsZW5ndGgpOwogfQogCitKU0JpZ0ludCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCit7CisgICAgSlNCaWdJbnQqJiBiaWdJbnRJbk1hcCA9IG1fYmlnSW50TWFwLmFk
ZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICgh
YmlnSW50SW5NYXApIHsKKyAgICAgICAgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQo
bnVsbHB0ciwgKnZtKCksIFN0cmluZ1ZpZXcoaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAgICAg
ICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKKyAgICB9CisgICAgcmV0dXJuIGJpZ0lu
dEluTWFwOworfQorCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0NvbnN0
YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgSlNTdHJpbmcqJiBzdHJp
bmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDJiMjQyNjQxODAzYmQ0MDUyYWU1YTJiNmEw
OTc1ZGEwNDBkNWFmN2IuLjU1ODhmNjIyNTI4NGUyMzdlMDMzYzI5N2NiMGFiMDg3YTI1NmEzMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBA
IC0xMDAyLDYgKzEwMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEhh
c2hNYXA8ZG91YmxlLCBKU1ZhbHVlPiBOdW1iZXJNYXA7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1h
cDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50
aWZpZXJTdHJpbmdNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1w
bCosIEpTQmlnSW50KiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJCaWdJbnRNYXA7CiAg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lzdGVy
SUQqPiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogICAgICAgICAKICAgICAgICAgLy8gSGVscGVy
IGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRoaXMgd29ya3MgYmVjYXVzZSB0
aGUgc2V0IG9mCkBAIC0xMDg4LDYgKzEwOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHB1
YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZp
ZXImKTsKKyAgICAgICAgSlNCaWdJbnQqIGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50
KFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKIAogICAgICAgICBWZWN0b3I8VW5saW5rZWRJ
bnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtMTE4Nyw2ICsxMTkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRh
dGlvbiwgdW5zaWduZWQsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCwgRW5j
b2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoVHJhaXRzPiBKU1ZhbHVlTWFwOwogICAg
ICAgICBKU1ZhbHVlTWFwIG1fanNWYWx1ZU1hcDsKICAgICAgICAgSWRlbnRpZmllclN0cmluZ01h
cCBtX3N0cmluZ01hcDsKKyAgICAgICAgSWRlbnRpZmllckJpZ0ludE1hcCBtX2JpZ0ludE1hcDsK
ICAgICAgICAgVGVtcGxhdGVSZWdpc3RyeUtleU1hcCBtX3RlbXBsYXRlUmVnaXN0cnlLZXlNYXA7
CiAKICAgICAgICAgU3RhdGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIgeyAmbV9pbnN0cnVjdGlvbnMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBk
N2ViY2E3MGRmODA4NDdmMzIwLi42MDk3MWI4YzI3MjZjZmExYzc2MTE5ZWY2MzRmYjg0Y2U4OTgy
OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5l
cmF0b3IuYWRkU3RyaW5nQ29uc3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9k
ZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJl
dHVybiBnZW5lcmF0b3IuYWRkQmlnSW50Q29uc3RhbnQobV92YWx1ZSk7Cit9CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA0Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41ZTJj
NDc2NGMyMWE3MjU3MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRp
dHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9v
bCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0
dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAg
ICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAg
QVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5
cGUudHlwZSgpID09IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmpl
Y3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJv
bFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlz
U3RyaWN0TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAg
ICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xz
IGhlcmUgc2luY2UgZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5YWM3
YmViMDI0ZDYwMC4uZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0yMDIsNiArMjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBjYXNl
IEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNy
ZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJndW1l
bnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggYjlmNzgzMDgxNzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2ZDU4
YjhlMGNlM2I3OWMzNGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ludGVy
bmFsUHJvbWlzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCBhYjk1NjEzZTZlNTUyODBiY2RiMDQ4ZjIyNTJiMTI1YzMxZGYzZGFlLi43MWUxMTIwM2Q0
YWFhOGFlMWNmZmY3MjNjNWExNjc5NTg1YTc3NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjMyLDYgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IGluY0NvbnN0YW50cygpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRl
Z2VyTm9kZShsb2NhdGlvbiwgZCk7CiAgICAgfQorICAgIAorICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciogYmlnSW50KQorICAgIHsKKyAgICAgICAgaW5jQ29uc3RhbnRzKCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpZ0ludE5vZGUobG9jYXRpb24sICpiaWdJbnQpOwor
ICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNmVlNmM1ZGJkNTlhZGUzN2YyZDFi
MjJkMjkxNjQ4YWQyOTZmNTQxZC4uNjMzNzE5OWE3OWI3ODI4ZWJmYmJhYjU5MjAwMzc5YmIyZDFh
NjliOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTE1MDAsNyAr
MTUwMCw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPjo6
cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVy
blZhbHVlKQorQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJl
dHVyblZhbHVlKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2YWx1
ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0xNTEy
LDkgKzE1MTIsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJs
ZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tbWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxlIChp
c0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSAmJiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0gICAg
aWYgKG1heGltdW1EaWdpdHMgPj0gMCkgeworICAgIGlmIChtYXhpbXVtRGlnaXRzID49IDAgJiYg
VU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdu
JykpIHsKICAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGluIHRo
ZSBoZXhWYWx1ZSBidWZmZXIuCkBAIC0xNTMzLDcgKzE1MzMsMTEgQEAgQUxXQVlTX0lOTElORSB2
b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlm
dCgpOwogICAgIH0KIAorICAgIGlmIChVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHJldHVyblZhbHVlID0gcGFyc2VJ
bnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTU1NCw3ICsxNTU4
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJl
dHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQo
bV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJy
ZW50KSAmJiBkaWdpdCA+PSAwICYmIFVOTElLRUxZKChtX2N1cnJlbnQgfCAweDIwKSAhPSAnbicp
KSB7CiAgICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTE1NzIsNiArMTU3Niw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAorICAgIGlmIChVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92
ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTU5NCw3ICsxNjAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVy
PFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAg
ICAgfSB3aGlsZSAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsK
IAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgeworICAg
IGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBVTkxJS0VMWShP
cHRpb25zOjp1c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAg
ICAgICByZXR1cm5WYWx1ZSA9IG9jdGFsVmFsdWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTE2MTIsNiArMTYxOSw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFy
c2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCisgICAgaWYgKFVOTElLRUxZKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgOCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0xNjM4LDcgKzE2NDgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNl
RGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAgICAgLS1kaWdpdDsKICAgICAg
ICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAg
ICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAobV9jdXJyZW50IHwg
MHgyMCkgIT0gJ2UnKSB7CisgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAn
LicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJyAmJiBVTkxJS0VMWShPcHRpb25zOjp1c2VC
aWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMjExMywxMyArMjEyMywyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0
IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAg
IHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKCFwYXJz
ZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSAmJiBVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJ
bnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKSkgeworICAgICAgICAgICAgICAgIHRv
a2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAg
VmVjdG9yPExDaGFyPiBjb21wbGV0ZUlkZW50OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRl
bnQuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQoJ3gn
KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZChtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
bWFrZUlkZW50aWZpZXIoY29tcGxldGVJZGVudC5kYXRhKCksIGNvbXBsZXRlSWRlbnQuc2l6ZSgp
KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJl
bnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
Ik5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJfRVJST1JUT0s7
CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAg
ICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxMzMsMTMgKzIxNTMsMjMgQEAgc3RhcnQ6
CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICdiJyBwcmVmaXguCiAgICAgICAgICAgICBz
aGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUJpbmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKKyAgICAgICAgICAgIGlmICghcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkg
JiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApID09
ICduJykpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAg
ICBzaGlmdCgpOworICAgICAgICAgICAgICAgIFZlY3RvcjxMQ2hhcj4gY29tcGxldGVJZGVudDsK
KyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnMCcpOworICAgICAgICAgICAg
ICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCdiJyk7CisgICAgICAgICAgICAgICAgY29tcGxldGVJ
ZGVudC5hcHBlbmQobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKGNvbXBsZXRlSWRlbnQu
ZGF0YSgpLCBjb21wbGV0ZUlkZW50LnNpemUoKSk7CisgICAgICAgICAgICB9OworCiAgICAgICAg
ICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0
ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5B
VEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50
ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlw
ZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAg
ICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTIxNTQsMTMgKzIxODQsMjMgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhl
ICdvJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZU9j
dGFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKCFwYXJzZU9jdGFs
KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpICYmIFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgp
ICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAgICAgICAgICAgICAgdG9rZW4g
PSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8TENoYXI+IGNvbXBsZXRlSWRlbnQ7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5h
cHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnbycpOwor
ICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKG1fYnVmZmVyOC5kYXRhKCksIG1f
YnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtl
SWRlbnRpZmllcihjb21wbGV0ZUlkZW50LmRhdGEoKSwgY29tcGxldGVJZGVudC5zaXplKCkpOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkp
IHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8g
c3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAg
ICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAg
ICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0yMTgwLDI0ICsyMjIwLDMwIEBAIHN0YXJ0OgogICAgIGNh
c2UgQ2hhcmFjdGVyTnVtYmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIg
JiYgdG9rZW4gIT0gRE9VQkxFKSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjAp
ID09ICduJykpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAgICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IElO
VEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoK
LSAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwotICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5v
bi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSBET1VCTEU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9u
LW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRF
UkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgcGFyc2VkTGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFy
c2VkTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09IElOVEVHRVIpCisg
ICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9r
ZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7Ci0gICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXpl
KCksIHBhcnNlZExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09IElOVEVHRVIp
Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tl
bih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmlu
ZGV4IGQ4NDVlMmUxNGY1NjlhNGQzOGUyYzNkOTllZjZjNDY3MjMyNDMyMjAuLmFkOTA3NjQ4YzAw
ZTE2ZGM0NWI2ZWU5Y2NmMGE0NDk1MzY5YTljYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQnVpbGRTdHJpbmdzLCBMZXhlckVzY2FwZVBhcnNlTW9kZSBlc2NhcGVQYXJzZU1v
ZGU+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VDb21wbGV4RXNjYXBlKGJv
b2wgc3RyaWN0TW9kZSwgVCBzdHJpbmdRdW90ZUNoYXJhY3Rlcik7CiAgICAgQUxXQVlTX0lOTElO
RSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSosIFJh
d1N0cmluZ3NCdWlsZE1vZGUpOwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJzZUhleChkb3Vi
bGUmIHJldHVyblZhbHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VIZXgoZG91Ymxl
JiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5KGRvdWJs
ZSYgcmV0dXJuVmFsdWUpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU9jdGFsKGRvdWJs
ZSYgcmV0dXJuVmFsdWUpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2ltYWwoZG91
YmxlJiByZXR1cm5WYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0NmFkZGQ3MzliZWNlYzhi
ZDE5YmYuLjU5OTU2ODRjNTU5NDQyNGUyZTZjM2RhMTQ5OTMwNGEyN2Y2M2Q3NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC05Miw2
ICs5MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5lIEJp
Z0ludE5vZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgdmFsdWUpCisgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBS
ZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDog
Q29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAy
YTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNjLi41NDk5Zjg2ZDNhZWRhNmM3
MWI1ODYwNDRlZTU2YTQ0N2YxOTg5N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVh
bCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MzI4LDYgKzMyOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25z
dGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNW
YWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICB9OworCiAgICAgY2xhc3MgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDQ5
MDg5ODU5OTNhYzFiZDU0MjZjNGExMWYwMmRhYThlOThkNTMxNTAuLmVlYzA2ZTNlMWQ1ZTc5OTFk
MDM3ZTZkZmFkMzFhOTQyZjY2MDc5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTQ0OTIsNiArNDQ5MiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQog
CiAgICAgICAgIHJldHVybiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwgaWRl
bnQsICppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBzdGFydCwgbG9jYXRpb24p
OwogICAgIH0KKyAgICBjYXNlIEJJR0lOVDogeworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50KTsKKyAgICB9CiAgICAgY2FzZSBT
VFJJTkc6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA1
MWZkNGE3YWYyZTljOGUzNTI3M2NjYzdlNzQ1OWJkNTkwOTYxNmM1Li43NzlhMDViYmY4YmY0ZDAy
OGQ1NzAyZDdlNDM2YmQ2NTdjNGQ2ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsK
ICAgICBCQUNLUVVPVEUsCiAgICAgSU5URUdFUiwKICAgICBET1VCTEUsCisgICAgQklHSU5ULAog
ICAgIElERU5ULAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOGRiMzVjNzc5NmY0ZDM2ZmE1NDUy
NTkxNjBkYzU4OWViODQ5ZDk1Ni4uMTUzNjI3YzAzODdmZmQzNjRiN2I3MTNjOWZjZDI4YTEwOTdk
ZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBp
bnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAwMDAwMDsKICAgICBlbnVtIDogaW50IHsgTm9uZUV4
cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhw
ciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNv
bHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIs
CiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVj
dExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHBy
LCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCiAgICAgICAgIE5l
d0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsCkBAIC0xNzUs
NiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG91YmxlRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJsZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJu
IEludGVnZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQmlnSW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBCaWdJbnRFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVy
biBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE5M2M5MWUwN2I1Y2E5OGFk
N2JjMzBmNDU5Y2MyNTFiZGU1NWY5OGYuLmQ2NDc2NmEzMDRmNzU3MmZkMzJjZDA1NGUxMTcyMzky
MjM4NzQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMzAsNiArMzAsNyBAQAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBc
CiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVNRU5U
KSBcCisgICAgbWFjcm8oQmlnSW50KSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAogICAgIG1hY3Jv
KENvbGxhdG9yKSBcCiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMDA3OTZkMzgyZjk5YmZlY2Rj
YzMyMGVmMGJhNzIxODQ4ZGIyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTAsMCArMSw1NjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFBhcnRzIG9mIHRoZSBpbXBsZW1lbnRh
dGlvbiBiZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNyB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE0IHRoZSBEYXJ0IHBy
b2plY3QgYXV0aG9ycy4gIFBsZWFzZSBzZWUgdGhlIEFVVEhPUlMgZmlsZSBbMV0KKyAqIGZvciBk
ZXRhaWxzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhCisgKiBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIFsyXS4KKyAqCisgKiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQt
bGFuZy9zZGsvYmxvYi9tYXN0ZXIvQVVUSE9SUworICogWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9k
YXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSBU
aGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCisgKiBsaWNlbnNlIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzNdLgorICoKKyAqIFszXSBodHRwczovL2dvbGFu
Zy5vcmcvTElDRU5TRQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Jp
Z0ludC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24u
aCIKKworI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkpT
QmlnSW50IGFzc3VtZXMgIiAjY29uZCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBKU0JpZ0ludDo6c19pbmZvID0KKyAgICB7ICJKU0JpZ0ludCIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCaWdJbnQpIH07CisKK3ZvaWQgSlNC
aWdJbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgaWYgKHRoaXNP
YmplY3QtPm1fZGF0YSkKKyAgICAgICAgdmlzaXRvci5tYXJrQXV4aWxpYXJ5KHRoaXNPYmplY3Qt
Pm1fZGF0YS5nZXQoKSk7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoYm9v
bCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBBU1NFUlQobV9kYXRhKTsKKworICAgIHNldFNpZ24o
ZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlhbGl6ZSkgeworICAgICAgICB2b2lkKiBkYXRhID0g
bV9kYXRhLmdldCgpOworICAgICAgICBtZW1zZXQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZGF0
YSksIDAsIGxlbmd0aCgpICogRGlnaXRTaXplKTsKKyAgICB9Cit9CisKKy8vIERpZ2l0IGFyaXRo
bWV0aWMgaGVscGVycy4KKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEhBVkVfVFdP
RElHSVRfVCAxCit0eXBlZGVmIHVpbnQ2NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhf
VCkKKyNkZWZpbmUgSEFWRV9UV09ESUdJVF9UIDEKK3R5cGVkZWYgX191aW50MTI4X3QgVHdvRGln
aXQ7CisjZW5kaWYKKworLy8ge2NhcnJ5fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxpemVkIERp
Z2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxlZnQgYWxv
bmUuCitpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdEFkZChEaWdpdCBhLCBE
aWdpdCBiLCBEaWdpdCogY2FycnkpCit7CisjaWYgSEFWRV9UV09ESUdJVF9UCisgICAgVHdvRGln
aXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGln
aXQ+KGIpOworICAgICpjYXJyeSArPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdpdCByZXN1bHQgPSBh
ICsgYjsKKworICAgIGlmIChyZXN1bHQgPCBhKQorICAgICAgICAqY2FycnkgKz0gMTsKKyAgICAK
KyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKy8vIHtib3Jyb3d9IG11c3QgcG9pbnQg
dG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisv
LyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK2lubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6
OmRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBib3Jyb3cpCit7CisjaWYgSEFWRV9U
V09ESUdJVF9UCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEp
IC0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgICpib3Jyb3cgKz0gKHJlc3VsdCA+PiBE
aWdpdEJpdHMpICYgMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3Vs
dCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgLSBiOworICAgIGlmIChyZXN1bHQgPiBh
KQorICAgICAgICAqYm9ycm93ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERp
Z2l0PihyZXN1bHQpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRo
ZSByZXN1bHQuIEhpZ2ggaGFsZiBpcyBpbiB7aGlnaH0uCitpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0
IEpTQmlnSW50OjpkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogaGlnaCkKK3sKKyNp
ZiBIQVZFX1RXT0RJR0lUX1QKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29E
aWdpdD4oYSkgKiBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgKmhpZ2ggPSByZXN1bHQg
Pj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOwor
I2Vsc2UKKyAgICAvLyBNdWx0aXBseSBpbiBoYWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAg
IC8vIEZvciBpbnB1dHMgW0FIIEFMXSpbQkggQkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisg
ICAgLy8gICAgICAgICAgICBbQUwqQkxdICAvLyByTG93CisgICAgLy8gICAgKyAgICBbQUwqQkhd
ICAgICAvLyByTWlkMQorICAgIC8vICAgICsgICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAv
LyAgICArIFtBSCpCSF0gICAgICAgIC8vIHJIaWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFd
ICAvLyBoaWdoID0gW1I0IFIzXSwgbG93ID0gW1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUg
b2YgY291cnNlIHdlIG11c3QgYmUgY2FyZWZ1bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29s
dW1ucy4KKyAgICBEaWdpdCBhTG93ICA9IGEgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGFI
aWdoID0gYSA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IGJMb3cgID0gYiAmIEhhbGZEaWdp
dE1hc2s7CisgICAgRGlnaXQgYkhpZ2ggPSBiID4+IEhhbGZEaWdpdEJpdHM7CisgICAgCisgICAg
RGlnaXQgckxvdyAgPSBhTG93ICogYkxvdzsKKyAgICBEaWdpdCByTWlkMSA9IGFMb3cgKiBiSGln
aDsKKyAgICBEaWdpdCByTWlkMiA9IGFIaWdoICogYkxvdzsKKyAgICBEaWdpdCBySGlnaCA9IGFI
aWdoICogYkhpZ2g7CisgICAgCisgICAgRGlnaXQgY2FycnkgPSAwOworICAgIERpZ2l0IGxvdyA9
IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8IEhhbGZEaWdpdEJpdHMsICZjYXJyeSk7CisgICAgbG93
ID0gZGlnaXRBZGQobG93LCByTWlkMiA8PCBIYWxmRGlnaXRCaXRzLCAmY2FycnkpOworCisgICAg
KmhpZ2ggPSAock1pZDEgPj4gSGFsZkRpZ2l0Qml0cykgKyAock1pZDIgPj4gSGFsZkRpZ2l0Qml0
cykgKyBySGlnaCArIGNhcnJ5OworCisgICAgcmV0dXJuIGxvdzsKKyNlbmRpZgorfQorCisvLyBS
YWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBvZiB7ZXhwb25lbnR9LiBEb2VzIG5vdCBjaGVjayBm
b3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0UG93KERpZ2l0IGJh
c2UsIERpZ2l0IGV4cG9uZW50KQoreworICAgIERpZ2l0IHJlc3VsdCA9IDF1bGw7CisgICAgd2hp
bGUgKGV4cG9uZW50ID4gMCkgeworICAgICAgICBpZiAoZXhwb25lbnQgJiAxKQorICAgICAgICAg
ICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAgICAgZXhwb25lbnQgPj49IDE7CisgICAgICAgIGJh
c2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1cm5z
IHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50ID0gKGhpZ2ggPDwgRGlnaXRCaXRzICsgbG93IC0g
cmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYo
RGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLCBEaWdpdCogcmVtYWluZGVyKQor
eworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNvcik7CisjaWYgQ1BVKFg4Nl82NCkgJiYgQ09NUElM
RVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAg
ICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGll
bnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBpbiByZHguCisgICAgICAgIDogIj1hIihxdW90aWVu
dCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byByZHgsIHts
b3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVy
IG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3Jd
ICJybSIoZGl2aXNvcikpOworICAgICpyZW1haW5kZXIgPSByZW07CisgICAgcmV0dXJuIHF1b3Rp
ZW50OworI2VsaWYgQ1BVKFg4NikgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0
IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZsICAlW2Rpdmlzb3Jd
IgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gZWF4LCB7cmVtfSBp
biBlZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJ
bnB1dHM6IHB1dCB7aGlnaH0gaW50byBlZHgsIHtsb3d9IGludG8gZWF4LCBhbmQge2Rpdmlzb3J9
IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDog
ImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgICpyZW1h
aW5kZXIgPSByZW07CisgICAgcmV0dXJuIHF1b3RpZW50OworI2Vsc2UKKyAgICBzdGF0aWMgY29u
c3QgRGlnaXQga0hhbGZEaWdpdEJhc2UgPSAxdWxsIDw8IEhhbGZEaWdpdEJpdHM7CisgICAgLy8g
QWRhcHRlZCBmcm9tIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgcC4gMTUyLgorI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgaW50IHMgPSBjbHo2NChkaXZpc29yKTsKKyNlbHNlCisgICAgaW50IHMg
PSBjbHozMihkaXZpc29yKTsKKyNlbmRpZgorICAgIGRpdmlzb3IgPDw9IHM7CisgICAgCisgICAg
RGlnaXQgdm4xID0gZGl2aXNvciA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHZuMCA9IGRp
dmlzb3IgJiBIYWxmRGlnaXRNYXNrOworCisgICAgLy8ge3N9IGNhbiBiZSAwLiAibG93ID4+IERp
Z2l0Qml0cyA9PSBsb3ciIG9uIHg4Niwgc28gd2UgIiYiIGl0IHdpdGgKKyAgICAvLyB7c196ZXJv
X21hc2t9IHdoaWNoIGlzIDAgaWYgcyA9PSAwIGFuZCBhbGwgMS1iaXRzIG90aGVyd2lzZS4KKyAg
ICBTVEFUSUNfQVNTRVJUKHNpemVvZihpbnRwdHJfdCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAg
RGlnaXQgc1plcm9NYXNrID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PGludHB0cl90
PigtcykgPj4gKERpZ2l0Qml0cyAtIDEpKTsKKyAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwgcykg
fCAoKGxvdyA+PiAoRGlnaXRCaXRzIC0gcykpICYgc1plcm9NYXNrKTsKKyAgICBEaWdpdCB1bjEw
ID0gbG93IDw8IHM7CisgICAgRGlnaXQgdW4xID0gdW4xMCA+PiBIYWxmRGlnaXRCaXRzOworICAg
IERpZ2l0IHVuMCA9IHVuMTAgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IHExID0gdW4zMiAv
IHZuMTsKKyAgICBEaWdpdCByaGF0ID0gdW4zMiAtIHExICogdm4xOworCisgICAgd2hpbGUgKHEx
ID49IGtIYWxmRGlnaXRCYXNlIHx8IHExICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsg
dW4xKSB7CisgICAgICAgIHExLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAo
cmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IERpZ2l0IHVuMjEgPSB1bjMyICoga0hhbGZEaWdpdEJhc2UgKyB1bjEgLSBxMSAqIGRpdmlzb3I7
CisgICAgRGlnaXQgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAgKiB2bjE7
CisKKyAgICB3aGlsZSAocTAgPj0ga0hhbGZEaWdpdEJhc2UgfHwgcTAgKiB2bjAgPiByaGF0ICog
a0hhbGZEaWdpdEJhc2UgKyB1bjApIHsKKyAgICAgICAgcTAtLTsKKyAgICAgICAgcmhhdCArPSB2
bjE7CisgICAgICAgIGlmIChyaGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgKnJlbWFpbmRlciA9ICh1bjIxICoga0hhbGZEaWdpdEJhc2UgKyB1
bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAgcmV0dXJuIHExICoga0hhbGZEaWdpdEJhc2Ug
KyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBsaWVzIHtzb3VyY2V9IHdpdGgge2ZhY3Rvcn0g
YW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCisvLyB7cmVzdWx0fSBhbmQge3NvdXJj
ZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3IgaW5wbGFjZSBtb2RpZmljYXRpb24uCit2b2lk
IEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZh
Y3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpTQmlnSW50KiByZXN1bHQpCit7CisgICAgQVNT
RVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkg
Pj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1bW1hbmQ7CisgICAgRGlnaXQgaGlnaCA9IDA7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgRGlnaXQgY3VycmVu
dCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAgIERpZ2l0IG5ld0NhcnJ5ID0gMDsKKworICAg
ICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBtdWx0aXBsaWNhdGlvbi4KKyAgICAgICAgRGln
aXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJlbnQgPSBkaWdpdE11bChjdXJyZW50LCBmYWN0
b3IsICZuZXdIaWdoKTsKKworICAgICAgICAvLyBBZGQgbGFzdCByb3VuZCdzIGNhcnJ5b3ZlcnMu
CisgICAgICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJyZW50LCBoaWdoLCAmbmV3Q2FycnkpOwor
ICAgICAgICBjdXJyZW50ID0gZGlnaXRBZGQoY3VycmVudCwgY2FycnksICZuZXdDYXJyeSk7CisK
KyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVwYXJlIGZvciBuZXh0IHJvdW5kLgorICAg
ICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQpOworICAgICAgICBjYXJyeSA9IG5ld0Nh
cnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0LT5s
ZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyssIGNhcnJ5ICsgaGln
aCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJzIGRvbid0IHBhc3MgaW4gc3VjaCBsYXJn
ZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0LgorICAgICAgICB3aGlsZSAobiA8IHJlc3Vs
dC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERpZ2l0KG4rKywgMCk7CisgICAg
fSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoY2FycnkgKyBoaWdoKSk7Cit9CisKKy8v
IE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRo
ZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQodWludHB0cl90IGZh
Y3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoZmFj
dG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihzdW1tYW5k
KSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlwbHlBZGQodGhpcywgZmFj
dG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFs
VG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWduKCkg
IT0geS0+c2lnbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3Ro
KCkgIT0geS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkg
IT0geS0+ZGlnaXQoaSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8vIERpdmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5n
IHRoZSByZXN1bHQgaW4ge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGlj
YWxseSwgdGhlIGNvbnRyYWN0IGlzOgorLy8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBk
aXZpc29yLCB3aXRoIDAgPD0gcmVtYWluZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0g
aXMgYW4gZW1wdHkgaGFuZGxlLCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJl
CisvLyBhbGxvY2F0ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0
aGF0IGl0IGlzIGJpZyBlbm91Z2guCisvLyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7
eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlzaW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBu
dWxscHRyIGlmIHRoZSBjYWxsZXIgaXMgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIu
Cit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0KiByZW1haW5k
ZXIpCit7CisgICAgQVNTRVJUKGRpdmlzb3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKKyAgICAqcmVtYWluZGVyID0gMDsKKyAgICBpZiAo
ZGl2aXNvciA9PSAxKSB7CisgICAgICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKQorICAgICAg
ICAgICAgKnF1b3RpZW50ID0geDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBs
ZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikgeworICAg
ICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmln
SW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9
IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXRE
aXYoKnJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgICAg
ICAgICAoKnF1b3RpZW50KS0+c2V0RGlnaXQoaSwgcSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAg
ICAgICBkaWdpdERpdigqcmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVy
KTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9m
IGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5nIHJlcHJl
c2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFycmF5Cisv
LyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdlbmVyYXRl
IHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHByaW50KE1h
dGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWludDhfdCBN
YXhCaXRzUGVyQ2hhcltdID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwgIDgz
LCAgOTAsICA5NiwgIC8vIDAuLjgKKyAgICAxMDIsIDEwNywgMTExLCAxMTUsIDExOSwgMTIyLCAx
MjYsIDEyOCwgICAgICAvLyA5Li4xNgorICAgIDEzMSwgMTM0LCAxMzYsIDEzOSwgMTQxLCAxNDMs
IDE0NSwgMTQ3LCAgICAgIC8vIDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2LCAx
NTgsIDE1OSwgMTYwLCAgICAgIC8vIDI1Li4zMgorICAgIDE2MiwgMTYzLCAxNjUsIDE2NiwgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIDMzLi4zNgorfTsKKworc3RhdGljIGNvbnN0IGludCBC
aXRzUGVyQ2hhclRhYmxlU2hpZnQgPSA1Oworc3RhdGljIGNvbnN0IHNpemVfdCBCaXRzUGVyQ2hh
clRhYmxlTXVsdGlwbGllciA9IDF1IDw8IEJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKworSlNCaWdJ
bnQqIEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IHJh
ZGl4LCBpbnQgY2hhcmNvdW50KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4IDw9
IDM2KTsKKyAgICBBU1NFUlQoY2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gTWF4Qml0
c1BlckNoYXJbcmFkaXhdOworICAgIHNpemVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNpemVfdD4o
Y2hhcmNvdW50KTsKKyAgICBjb25zdCBpbnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFibGVNdWx0
aXBsaWVyIC0gMTsKKyAgICBpZiAoY2hhcnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLSByb3VuZHVwKSAvIGJpdHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVfdCBiaXRz
TWluID0gYml0c1BlckNoYXIgKiBjaGFyczsKKworICAgICAgICAvLyBEaXZpZGUgYnkgMzIgKHNl
ZSB0YWJsZSksIHJvdW5kaW5nIHVwLgorICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4gKyByb3Vu
ZHVwKSA+PiBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWluIDw9IHN0
YXRpY19jYXN0PHNpemVfdD4oTWF4SW50KSkgeworICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtE
aWdpdHNCaXRzLCByb3VuZGluZyB1cC4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAoc3RhdGlj
X2Nhc3Q8aW50PihiaXRzTWluKSArIERpZ2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOworICAgICAg
ICAgICAgaWYgKGxlbmd0aCA8PSBKU0JpZ0ludDo6TWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0aCk7
CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChleGVjKQorICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgY29uc3QgY2hhciBD
b252ZXJzaW9uQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoi
OworCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQq
IHgsIGludCByYWRpeCkKK3sKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgU3RyaW5n
QnVpbGRlciByZXN1bHRCdWlsZGVyOworICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZCgnMCcp
OworICAgICAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdG9TdHJpbmdHZW5lcmljKGV4ZWMsIHgsIHJhZGl4KTsKK30KKworU3Ry
aW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCog
eCwgaW50IHJhZGl4KQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0QnVpbGRlcjsKKworICAg
IEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoIXgtPmlzWmVy
bygpKTsKKworICAgIGNvbnN0IGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBjb25zdCBi
b29sIHNpZ24gPSB4LT5zaWduKCk7CisKKyAgICAvLyBDb21wdXRlIChhbiBvdmVyYXBwcm94aW1h
dGlvbiBvZikgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZzoKKyAgICAvLyBEaXZp
ZGUgYml0IGxlbmd0aCBvZiB0aGUgQmlnSW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIgY2hh
cmFjdGVyLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNsejY0
KHgtPmRpZ2l0KGxlbmd0aCAtIDEpKTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNs
ejMyKHgtPmRpZ2l0KGxlbmd0aCAtIDEpKTsKKyNlbmRpZgorICAgIGNvbnN0IHNpemVfdCBiaXRM
ZW5ndGggPSBsZW5ndGggKiBEaWdpdEJpdHMgLSBsZWFkaW5nWmVyb3M7CisKKyAgICAvLyBNYXhp
bXVtIG51bWJlciBvZiBiaXRzIHdlIGNhbiByZXByZXNlbnQgd2l0aCBvbmUgY2hhcmFjdGVyLiBX
ZSdsbCB1c2UgdGhpcworICAgIC8vIHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgY2h1bmsgc2l6ZSBi
ZWxvdy4KKyAgICBjb25zdCB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNoYXJb
cmFkaXhdOworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVzdWx0IGxlbmd0aCwgd2UgaGF2ZSB0
byBiZSBwZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAgLy8gdGhlIG1pbmltdW0gbnVtYmVy
IG9mIGJpdHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50LgorICAgIGNvbnN0IHVpbnQ4X3Qg
bWluQml0c1BlckNoYXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAgICAvLyBQZXJmb3JtIHRo
ZSBmb2xsb3dpbmcgY29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBhdm9pZCBvdmVyZmxvd3Mu
CisgICAgdWludDY0X3QgY2hhcnNSZXF1aXJlZCA9IGJpdExlbmd0aDsKKyAgICBjaGFyc1JlcXVp
cmVkICo9IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyOworCisgICAgLy8gUm91bmQgdXAuCisg
ICAgY2hhcnNSZXF1aXJlZCArPSBtaW5CaXRzUGVyQ2hhciAtIDE7CisgICAgY2hhcnNSZXF1aXJl
ZCAvPSBtaW5CaXRzUGVyQ2hhcjsKKyAgICBjaGFyc1JlcXVpcmVkICs9IHNpZ247CisKKyAgICBp
ZiAoY2hhcnNSZXF1aXJlZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiByZXN1bHRCdWlsZGVy
LnRvU3RyaW5nKCkuaW1wbCgpOworICAgIH0KKworICAgIGludCBwb3MgPSAwOworCisgICAgLy8g
V2UgYXJlIG9rIHRvIGNhc3QsIGJlY2F1c2UgaGVyZSBjaGFyc1JlcXVpcmVkIDw9IEpTU3RyaW5n
OjpNYXhMZW5ndGgKKyAgICByZXN1bHRCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNoYXJzUmVxdWlyZWQpKTsKKworICAgIERpZ2l0IGxhc3REaWdpdDsKKyAgICBp
ZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRpZ2l0KDApOworICAgIGVs
c2UgeworICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAqIEJpdHNQZXJDaGFyVGFi
bGVNdWx0aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERpZ2l0IGNodW5rRGl2aXNv
ciA9IGRpZ2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAgICAvLyBCeSBjb25zdHJ1
Y3Rpb24gb2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVuIG92ZXJmbG93LgorICAg
ICAgICBBU1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5vblplcm9EaWdpdCA9IGxl
bmd0aCAtIDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKworICAg
ICAgICAvLyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0ludCB0aGF0IHdlIGhhdmVu
J3QgbG9va2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggInJl
bWFpbmRlciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0cjsKKworICAgICAgICAv
LyBJbiB0aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFsbG9jYXRpbmcgYSBuZXcg
QmlnSW50IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7IGZyb20gdGhlbiBvbiBk
aXZpZGUgdGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50KiogZGl2aWRlbmQgPSAm
eDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7CisgICAgICAgICAgICBh
YnNvbHV0ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgJmNo
dW5rKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN0KTsKKworICAgICAgICAgICAgZGl2aWRlbmQg
PSAmcmVzdDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2h1bmtDaGFyczsgaSsr
KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoQ29udmVyc2lvbkNoYXJz
W2NodW5rICUgcmFkaXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRpeDsKKyAgICAg
ICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghY2h1
bmspOworCisgICAgICAgICAgICBpZiAoIXJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpCisgICAg
ICAgICAgICAgICAgbm9uWmVyb0RpZ2l0LS07CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBuZXZl
ciBjbGVhciBtb3JlIHRoYW4gb25lIGRpZ2l0IHBlciBpdGVyYXRpb24sIGJlY2F1c2UKKyAgICAg
ICAgICAgIC8vIGNodW5rRGl2aXNvciBpcyBzbWFsbGVyIHRoYW4gbWF4IGRpZ2l0IHZhbHVlLgor
ICAgICAgICAgICAgQVNTRVJUKHJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworICAgICAgICB9
IHdoaWxlIChub25aZXJvRGlnaXQgPiAwKTsKKworICAgICAgICBsYXN0RGlnaXQgPSByZXN0LT5k
aWdpdCgwKTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5k
KENvbnZlcnNpb25DaGFyc1tsYXN0RGlnaXQgJSByYWRpeF0pOworICAgICAgICBsYXN0RGlnaXQg
Lz0gcmFkaXg7CisgICAgICAgIHBvcysrOworICAgIH0gd2hpbGUgKGxhc3REaWdpdCA+IDApOwor
ICAgIEFTU0VSVChwb3MpOworICAgIEFTU0VSVChwb3MgPD0gc3RhdGljX2Nhc3Q8aW50PihjaGFy
c1JlcXVpcmVkKSk7CisKKyAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvZXMuCisgICAgd2hpbGUg
KHBvcyA+IDEgJiYgcmVzdWx0QnVpbGRlcltwb3MgLSAxXSA9PSAnMCcpCisgICAgICAgIHBvcy0t
OworCisgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoJy0nKTsK
KyAgICAgICAgcG9zKys7CisgICAgfQorCisgICAgLy8gUmV2ZXJzZSB0aGUgc3RyaW5nLgorICAg
IFN0cmluZ0J1aWxkZXIgcmV2ZXJzZUJ1aWxkZXI7CisgICAgcmV2ZXJzZUJ1aWxkZXIucmVzZXJ2
ZUNhcGFjaXR5KHN0YXRpY19jYXN0PHNpemVfdD4oY2hhcnNSZXF1aXJlZCkpOworICAgIGZvciAo
aW50IGkgPSBwb3MgLSAxOyBpID49IDA7IGktLSkKKyAgICAgICAgcmV2ZXJzZUJ1aWxkZXIuYXBw
ZW5kKHJlc3VsdEJ1aWxkZXJbaV0pOworCisgICAgcmV0dXJuIHJldmVyc2VCdWlsZGVyLnRvU3Ry
aW5nKCkuaW1wbCgpOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxs
KiBjZWxsKQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4o
Y2VsbCk7CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNpemUgPSB0aGlzT2JqZWN0LT5tX2xl
bmd0aCAqIERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSAr
IGJ1ZmZlckVzdGltYXRlZFNpemU7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYg
dm0pCit7CisgICAgaWYgKHRoaXMtPmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgbm9uWmVyb0luZGV4ID0gbV9sZW5ndGggLSAxOworICAgIHdoaWxlIChub25aZXJvSW5kZXgg
Pj0gMCAmJiAhdGhpcy0+ZGlnaXQobm9uWmVyb0luZGV4KSkKKyAgICAgICAgbm9uWmVyb0luZGV4
LS07CisKKyAgICBpZiAobm9uWmVyb0luZGV4ID09IG1fbGVuZ3RoIC0gMSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50IG5ld0xlbmd0aCA9IG5vblplcm9JbmRleCArIDE7CisgICAgdm9pZCog
YmFja2luZ1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5
QWxsb2NhdGUoc2l6ZUZvcihuZXdMZW5ndGgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYWNraW5n
U3RvcmUpOworICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihiYWNraW5nU3Rv
cmUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmV3TGVuZ3RoOyBpKyspCisgICAgICAgIGRh
dGFbaV0gPSB0aGlzLT5kaWdpdChpKTsKKworICAgIG1fZGF0YS5zZXQodm0sIHRoaXMsIGRhdGEp
OworICAgIG1fbGVuZ3RoID0gbmV3TGVuZ3RoOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMjc4Mjg0
Yzc5ODYxNmM1Y2FiMTYyNWFmMjE5YmQ0MWUxNmU3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0wLDAgKzEsMzUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNCaWdJbnQgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOworCitwdWJsaWM6CisKKyAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVy
ZSosIGludCBsZW5ndGgpOworCisgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgemVyb0luaXRpYWxp
emUpOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworCisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworCisgICAg
aW5saW5lIHN0YXRpYyBpbnQgc2l6ZUZvcihpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGxlbmd0aCAqIERpZ2l0U2l6ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVpl
cm8oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCisgICAgeworICAgICAgICBKU0JpZ0ludCogemVy
b0JpZ0ludCA9IGNyZWF0ZShleGVjLCB2bSwgMCk7CisgICAgICAgIHplcm9CaWdJbnQtPnNldFNp
Z24oZmFsc2UpOworICAgICAgICByZXR1cm4gemVyb0JpZ0ludDsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNCaWdJbnQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IGxlbmd0aCkK
KyAgICB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUu
Z2V0KCksIGxlbmd0aCk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0p
OworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50MzJfdCB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhl
eGVjLCB2bSk7CisKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVj
dHVyZS5nZXQoKSwgMSk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0p
OworCisgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgICAgIGJpZ0ludC0+c2V0RGln
aXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KC0xICogdmFsdWUpKTsKKyAgICAgICAgICAgIGJpZ0lu
dC0+c2V0U2lnbih0cnVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiaWdJbnQtPnNl
dERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOworCisgICAgICAgIHJldHVybiBi
aWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tVWludChFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0lu
dD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOwor
ICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgYmlnSW50
LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tQW55
SW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsK
KyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQo
dm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQoKSwgMSk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNo
Q3JlYXRpb24oZXhlYywgdm0pOworCisgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KC0xICogdmFsdWUpKTsK
KyAgICAgICAgICAgIGJpZ0ludC0+c2V0U2lnbih0cnVlKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOwor
I2Vsc2UKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5n
ZXQoKSwgMik7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOworCisg
ICAgICAgIGJvb2wgc2lnbiA9IGZhbHNlOworICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAg
ICAgICAgICB2YWx1ZSAqPSAtMTsKKyAgICAgICAgICAgIHNpZ24gPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyAgPSBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUgJiAw
eGZmZmZmZmZmKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4o
KHZhbHVlID4+IDMyKSAmIDB4ZmZmZmZmZmYpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQo
MCwgbG93Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAg
ICAgICBiaWdJbnQtPnNldFNpZ24oc2lnbik7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tQm9v
bGVhbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisK
KyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
QmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQoKSwg
MSk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOworICAgICAgICBi
aWdJbnQtPnNldERpZ2l0KDAsIDEpOworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKwor
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworCisgICAgICAgIGlmIChtX2xlbmd0aCkgeworICAgICAgICAgICAgdm9pZCogYmFja2lu
Z1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5QWxsb2Nh
dGUoc2l6ZUZvcihtX2xlbmd0aCkpOworICAgICAgICAgICAgRGlnaXQqIGRhdGEgPSBzdGF0aWNf
Y2FzdDxEaWdpdCo+KGJhY2tpbmdTdG9yZSk7CisgICAgICAgICAgICBpZiAoIWRhdGEpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZGF0YS5zZXQo
dm0sIHRoaXMsIGRhdGEpOworICAgICAgICB9CisgICAgfQorCisgICAgSlNWYWx1ZSB0b1ByaW1p
dGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2lnbiA9IHNpZ247IH0KKyAgICBib29sIHNpZ24o
KSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKworICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5n
dGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKiwg
SlNCaWdJbnQqLCBpbnQgcmFkaXgpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RyaW5nVmlldyBzKQorICAgIHsKKyAgICAgICAgaWYg
KHMuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMsIHMu
Y2hhcmFjdGVyczgoKSk7CisgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgcywgcy5j
aGFyYWN0ZXJzMTYoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWxUb0JpZ0ludChK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAg
IGJvb2wgaXNaZXJvKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGgoKSB8fCAhc2lnbigp
KTsKKyAgICAgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgorICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgQ2hhclR5cGUqICBkYXRhKQorICAgIHsK
KyAgICAgICAgaW50IGxlbmd0aCA9IHMubGVuZ3RoKCk7CisKKyAgICAgICAgaW50IHAgPSAwOwor
ICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCisg
ICAgICAgICAgICArK3A7CisKKyAgICAgICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBjaGFy
YWN0ZXJzCisgICAgICAgIGlmIChwICsgMSA8IGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGRh
dGFbcF0gPT0gJzAnICYmIChkYXRhW3AgKyAxXSA9PSAnYicgfHwgZGF0YVtwICsgMV0gPT0gJ0In
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0
aCwgcCArIDIsIDIsIGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKGRhdGFbcF0gPT0gJzAnICYm
IChkYXRhW3AgKyAxXSA9PSAneCcgfHwgZGF0YVtwICsgMV0gPT0gJ1gnKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDE2LCBm
YWxzZSk7CisKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsgMV0g
PT0gJ28nIHx8IGRhdGFbcCArIDFdID09ICdPJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBh
cnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCA4LCBmYWxzZSk7CisgICAgICAg
IH0KKworICAgICAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICAgICAgaWYgKHAgPCBsZW5ndGgp
IHsKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICAgICArK3A7
CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICAgICAgICAg
IHNpZ24gPSB0cnVlOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChleGVjLCB2bSwgZGF0
YSwgbGVuZ3RoLCBwLCAxMCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1pl
cm8oKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2lnbihzaWduKTsKKworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAg
ICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBDaGFy
VHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRpeCwgYm9vbCBh
bGxvd0VtcHR5U3RyaW5nID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPj0g
MCk7CisgICAgICAgIGludCBwID0gc3RhcnRJbmRleDsKKworICAgICAgICBpZiAoIWFsbG93RW1w
dHlTdHJpbmcgJiYgc3RhcnRJbmRleCA9PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCisgICAgICAgIHdoaWxl
IChwIDwgbGVuZ3RoICYmIGRhdGFbcF0gPT0gJzAnKQorICAgICAgICAgICAgKytwOworCisgICAg
ICAgIGludCBlbmRJbmRleCA9IGxlbmd0aCAtIDE7CisgICAgICAgIC8vIFJlbW92aW5nIHRyYWls
aW5nIHNwYWNlcworICAgICAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBpc1N0cldoaXRlU3Bh
Y2UoZGF0YVtlbmRJbmRleF0pKQorICAgICAgICAgICAgLS1lbmRJbmRleDsKKworICAgICAgICBs
ZW5ndGggPSBlbmRJbmRleCArIDE7CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIGludCBsaW1pdDAg
PSAnMCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgICAgICBpbnQgbGltaXRhID0g
J2EnICsgKHJhZGl4IC0gMTApOworICAgICAgICBpbnQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0g
MTApOworCisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihleGVjLCB2bSwg
cmFkaXgsIGxlbmd0aCAtIHApOworICAgICAgICByZXN1bHQtPmluaXRpYWxpemUodHJ1ZSk7CisK
KyAgICAgICAgZm9yIChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAg
ICAgICB1aW50MzJfdCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBk
YXRhW2ldIDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEp
CisgICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAg
ICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAg
ICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBs
eUFkZChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90
PihkaWdpdCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisgICAg
ICAgICAgICByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3Rh
dGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50
IGNoYXJjb3VudCk7CisKKyAgICB0eXBlZGVmIHVpbnRwdHJfdCBEaWdpdDsKKyAgICBzdGF0aWMg
Y29uc3QgaW50IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29uc3QgaW50IERpZ2l0U2l6
ZSA9IHNpemVvZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdpdEJpdHMgPSBEaWdp
dFNpemUgKiBCaXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50IEhhbGZEaWdpdEJpdHMg
PSBEaWdpdEJpdHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBIYWxmRGlnaXRNYXNrID0g
KDF1bGwgPDwgSGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4SW50
ID0gMHg3RkZGRkZGRjsKKworcHVibGljOgorCisgICAgLy8gVGhlIG1heGltdW0gbGVuZ3RoIHRo
YXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgd291bGQgYmUKKyAgICAvLyBN
YXhJbnQgLyBEaWdpdEJpdHMuIEhvd2V2ZXIsIHdlIHVzZSBhIGxvd2VyIGxpbWl0IGZvciBub3cs
IGJlY2F1c2UKKyAgICAvLyByYWlzaW5nIGl0IGxhdGVyIGlzIGVhc2llciB0aGFuIGxvd2VyaW5n
IGl0LgorICAgIC8vIFN1cHBvcnQgdXAgdG8gMSBtaWxsaW9uIGJpdHMuCisgICAgc3RhdGljIGNv
bnN0IGludCBNYXhMZW5ndGggPSAxMDI0ICogMTAyNCAvIChzaXplb2Yodm9pZCopICogQml0c1Bl
ckJ5dGUpOworCitwcml2YXRlOgorCisgICAgdm9pZCByaWdodFRyaW0oVk0mKTsKKworICAgIC8v
IERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KKyAgICBzdGF0aWMgaW5saW5lIERpZ2l0IGRpZ2l0
QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBjYXJyeSk7CisgICAgc3RhdGljIGlubGluZSBE
aWdpdCBkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogYm9ycm93KTsKKyAgICBzdGF0
aWMgaW5saW5lIERpZ2l0IGRpZ2l0TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBoaWdoKTsK
KyAgICBzdGF0aWMgaW5saW5lIERpZ2l0IGRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywg
RGlnaXQgZGl2aXNvciwgRGlnaXQqIHJlbWFpbmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0
UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsKKworICAgIHN0YXRpYyB2b2lkIGFic29s
dXRlRGl2U21hbGwoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmln
SW50KiogcXVvdGllbnQsIERpZ2l0KiByZW1haW5kZXIpOworCisgICAgdm9pZCBpbnRlcm5hbE11
bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwg
aW50LCBKU0JpZ0ludCogcmVzdWx0KTsKKyAgICB2b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdp
dCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKworICAgIGlubGluZSBEaWdpdCBkaWdpdChpbnQg
bikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAgICAg
ICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkYXRhUHRyID0gbV9kYXRhLmdldCgp
OworICAgICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBz
ZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobiA+PSAw
ICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChtX2RhdGEpOworICAgICAgICBEaWdp
dCogZGlnaXRQdHIgPSBtX2RhdGEuZ2V0KCk7CisgICAgICAgIGRpZ2l0UHRyW25dID0gdmFsdWU7
CisgICAgfQorCisgICAgYm9vbCBtX3NpZ247CisgICAgaW50IG1fbGVuZ3RoOworICAgIENhZ2Vk
QmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOworfTsKKworaW5s
aW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1
ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZh
bHVlLmFzQ2VsbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGQwMzA0NTIyMGQ1ZTk1MjY3ZWQ5
ZjhmN2I5ZDMzNjVhODMxNzlkZDMuLjRlOTY2MDE0YzVlMTRhOWZjOTc1ZDNkYWQyZTk2NWUxYmRi
NDU0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0zNzYsNiArMzc3LDEyIEBAIEpTU3RyaW5n
KiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZXR1cm5F
bXB0eVN0cmluZ09uRXJyCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOwogICAgICAg
ICByZXR1cm4gZXJyb3JWYWx1ZSgpOwogICAgIH0KKyAgICBpZiAoaXNCaWdJbnQoKSkgeworICAg
ICAgICBTdHJpbmcgYmlnSW50U3RyaW5nID0gSlNCaWdJbnQ6OnRvU3RyaW5nKGV4ZWMsIGFzQmln
SW50KGFzQ2VsbCgpKSwgMTApOworICAgICAgICBpZiAoYmlnSW50U3RyaW5nLmxlbmd0aCgpID09
IDEpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhiaWdJbnRTdHJpbmdbMF0pOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgYmlnSW50U3RyaW5nKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBjMjRl
YTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5YTNjN2RlMDc3ZDIzZGUw
MmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnlJ
bnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9s
KCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2VlYmEyM2NmY2YyODNmZmQ1
ZmExMDRjNzcuLjI3OTA1N2EzNTYyNjRhMGQ1NjFjYjk5MGU3YTkyOGQyYzYwNDZkNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBAIGlu
bGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmln
SW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50
KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC03MTUsMTAgKzcyMSwx
NyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBl
eGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZQogCiBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1Zh
bHVlOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
aWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgICBpZiAoaXNEb3Vi
bGUoKSkKICAgICAgICAgcmV0dXJuIGFzRG91YmxlKCk7CisgICAgaWYgKGlzQmlnSW50KCkpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2FzdCBm
cm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiIpKTsKKyAgICAgICAgcmV0
dXJuIFBOYU47CisgICAgfQorCiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZXhlYyk7CiB9
CiAKQEAgLTEwMjAsNiArMTAzMyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2CiAKICAgICBp
ZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7Cisg
ICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjplcXVhbFRvQmlnSW50KGFzQmlnSW50KHYxLmFzQ2VsbCgpKSwgYXNCaWdJbnQodjIu
YXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZThhYzBlZTdmYmMxYmMzNTc5ZWU2M2Y1
Y2IxNmE5NjA4MzcuLjc5NGJjNzdlMjAyMWYwMzM1NGFhNjYxNDIzM2NkZDU5NWRjYTBiNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTU1LDYgKzE1NSw4
IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsK
ICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5
bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKKyAgICBpZiAo
aXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4o
dGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJy
ZWRUeXBlKTsKIH0KIApAQCAtMTgxLDYgKzE4Myw4IEBAIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2Jq
ZWN0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMs
IGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmpl
Y3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDlmYzBjOWIwOTQwMTY0MGZiMTVk
NTI1MWE0MTdlYjg0ODYwZDZjY2QuLjcxZjk5ZDk3Y2Y1Y2QyOTFjY2U1YzM1NGNhOWFjNjJiOTQ5
NzViMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMTIsNiAr
MTEyLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKICAg
ICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNTcwZjA5NGJhZDRiMDdhMTFhZWUyMDYwN2Rl
MGE3NjgxZjdmZGMzZS4uOTgzNmIzNDcwNWUwYTc1NjAwNDc5NjMxODllYmRmYTgzNzc3NjU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAt
MjAxLDYgKzIwMSwxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKK2lubGluZSBib29sIEpTQ2VsbDo6
aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKK30K
KwogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
dHlwZSA9PSBTeW1ib2xUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGYxODI1ZTllNjJiZTUyMmRiMWVlYWE0MmE2NmViZWI4
OGRiOTk4OGEuLjI4YTkyODA0MGQ2ZmNjMjNlNzkzMThhYTczMjBlYzVlNTk0M2YxZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTYzNyw3ICs2MzcsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0bwogbV8gIyMgbG93ZXJOYW1l
ICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsgXAogCiAgICAgRk9SX0VB
Q0hfU0lNUExFX0JVSUxUSU5fVFlQRShDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBF
KQotICAgIAorCiAjdW5kZWYgQ1JFQVRFX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRQogCiAg
ICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZXJyb3JDb25zdHJ1Y3Rvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5k
ZXggYzFjMDM4NmQ1NjUwYTIzMjEzYjYwOTNlOGEwYjZhNDNhMzRkOWU0NC4uNmZhMmY3MmVhMmU3
MjhlY2I0ODFlYmJiZDYyMjJmZTQzZjUyOWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjYsMTAgKzI2LDEyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA4NTM1NmQz
OTc3YWVkNWM3M2I4OWFmZjA1Yzk3YzI0MmY5NWJiNGVhLi41NzdkMThlMDI1YzExYTk5MmNlMTZj
ODUwY2IyMjE4ZTIxYzZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxUeXBl
LAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAgICBCaWdJbnRUeXBlLAogCiAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGU4ZjMxNmNmNDJi
OGU5Mjg5ZmNhMDg5YjQ4MzEyMTViN2EzMDIwMzMuLjBmZGM3YzM1NjVjZThhYjFkZGVjNTFkZWZk
NGNmMzg1MmMzOTk4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmgKQEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVtYmVy
KQogI2VuZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQoreworI2lm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0NvdW50ID0gNjQ7CisgICAgaWYg
KG51bWJlcikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7Cisg
ICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHplcm9Db3VudCA9IDA7CisgICAg
Zm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoIShudW1iZXIgPj4g
aSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZW5kaWYKK30KKwogLy8gVGhp
cyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0
aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGlj
YWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhlIHJl
c3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCB0
byBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKaW5kZXggNmQxMDU1ODI3MDhhMjRhM2FkNGE0YTUwMGQzOTQxM2Q5Yjk4ZGMyMC4uOTdjZmEw
N2E5Njk0MDIyMjU2YzljMzhhNjZjNzY0MzM1MTdjZDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDYgKzgyLDggQEAgSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmco
KTsKICAgICBpZiAodi5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LnN5bWJvbFN0cmluZygpOworICAgIGlmICh2LmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3MuYmlnaW50U3RyaW5nKCk7CiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewog
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7CiAgICAgICAgIC8vIFJldHVy
biAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkCkBAIC0xMTIs
NyArMTE0LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9yTnVsbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0
eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwg
dHlwZSA9PSBTeW1ib2xUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9
PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYp
LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApp
bmRleCA3OGU3N2FkMTg2NGM4ZmEwMDczODdjM2Y1MGM5MzkyMTI1ZjcxNDkzLi5mYmEzMjdmMGQ1
ZDJkNjAwNjJhYjM1NGRmZjllOWRkZTFjNGI4MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCkBAIC00NzgsNiArNDc4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxl
QXN5bmNJdGVyYXRpb24gPSBmYWxzZTsKICAgICB2KGJvb2wsIHVzZUZhc3RUTFNGb3JXYXNtQ29u
dGV4dCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBzdG9yZSBjb250ZXh0IGluIGZh
c3QgVExTLiBJZiBmYWxzZSwgd2Ugd2lsbCBwaW4gaXQgdG8gYSByZWdpc3Rlci4iKSBcCiAgICAg
dihib29sLCB1c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHMsIHRydWUsIE5vcm1hbCwg
IklmIHRydWUsIHdlIHdpbGwgdXNlIENhbGxMaW5rSW5mbyB0byBpbmxpbmUgY2FjaGUgV2FzbSB0
byBKUyBjYWxscy4iKSBcCiAgICAgdihib29sLCB1c2VPYmplY3RSZXN0U3ByZWFkLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBPYmplY3QgUmVzdC9TcHJlYWQgZmVhdHVy
ZS4iKSBcCisgICAgdihib29sLCB1c2VCaWdJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3
ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCiAgICAgdihib29sLCB1c2VBcnJheUFs
bG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91
ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2Nh
dGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKVwKICAgICB2
KGJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3Ro
aXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1
cmUuIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaApp
bmRleCAxMmY0NTNlNzYwMWIyZmFhNjdiOWVmYmVhNDAwMWRmMDBjOWYxNWQ3Li40ZWQxMWY4ZmVk
MmM4YzRiZmYwZTQyYzg1NjIwYmFjMDE3ZDhkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworCiBjbGFzcyBQcm90b3R5cGVLZXkg
ewogcHVibGljOgogICAgIFByb3RvdHlwZUtleSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA4NWQ0Y2IxNTU4NTgzZTgwMWI5ZDAxMGIw
MTNjMzE2ZjZmOGQwZjM4Li44ODUwYzRhOWEzNDM5NGYxOGY3NWEzNWQ2N2JhM2E0NWExOWZlNDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAt
NDAsNiArNDAsNyBAQAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAgIG1hY3JvKHN0cmluZykg
XAogICAgIG1hY3JvKHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkgXAogICAgIG1hY3JvKHRy
dWUpCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpG
dW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmluZygpOworICAgICAgICBj
YXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVybiBiaWdpbnRTdHJpbmco
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4
IDQwNzVmZDc1YjBlYjE4ZmNlOGE2MzJiYTI3Y2I3MzE2MjdkYTY2N2MuLjlmNTc4ZThhYmM1NDE2
MDAzOTQxODU4YmFhZmIzMWM4OGU3MDc3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2FjaGUuaAppbmRleCA1Mzk3ZTgxN2YxMjdmMzVhZDY3Y2VhY2JhNmQyYjc5YjRkOWZlNTU1
Li4yNTcwYjcyZTNiYzRhMGM3ZmIyZGYzNzliZTlhZDAwYzJiZDhkYzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXgg
YWU1MjEwNzA5YTdmNTQxNmE5ODJhN2M3NWMwYzMzNjFjMmQwMWNlOC4uM2JmY2Y1NzFmNGE4N2Ez
MWViZjkwNWQ2OGQ0YjUyZDZkOGE1NWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjAzLDcgKzIwMyw2IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBTeW1ib2xUeXBlKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5
cGUoKTsKLQogfQogCiBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAppbmRleCBkYjE2MmI3ZjRmNGNlMjNmYjg4MDU2
ZGRmNDFjNDhkZTMwZDU2NGNkLi5hYTNmZmE3YzM4MmUxMDVkNWRhZTRjMWE0ODM2MGQ0MGVmOGJi
YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcApA
QCAtNTQsNiArNTQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlw
ZW9mVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgIG91
dC5wcmludCgiZnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZW9mVHlw
ZTo6QmlnSW50OgorICAgICAgICBvdXQucHJpbnQoImJpZ2ludCIpOworICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4MTIxOTJhNWE2
MmViNjZiYzYxYjI4MDhiNmY1MzVhNGVkOC4uOTY0ODVkMDJkMjQxYzZkYjc2MmNlODEwNmZmMjg1
M2E2YzU5NzBiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZW9mVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUu
aApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBlb2ZU
eXBlIHsKICAgICBVbmRlZmluZWQsCisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAgTnVt
YmVyLAogICAgIFN0cmluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBi
MjAwODU3M2ZlMDJhNDVjZmVkMGVhNzUxYmUyZDVkZTk3ZTg0NTlhLi41OTdkYzUzYTA1MDAxMmRh
Yzc5MTA5MThmYzkwNDIxOTIzOGVkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJK
U0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJy
YXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0yODAsNiArMjgxLDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGhhc2hNYXBCdWNrZXRNYXBT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFs
dWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc2V0SXRlcmF0
b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAg
YmlnSW50U3RydWN0dXJlLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKIAogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNT
ZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBC
dWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGI1NTRiMzUwZDQxODUxNWU0OGI2
ZjhmY2MwZTg0ZWMwMTcyNGY2MWEuLmNjNTQwYzM5ZmFjYWI5ZGYzNDEyYTY5NmI4ZGIzNzczMmQ0
M2ZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzg4LDYgKzM4OCw3IEBA
IHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNldEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IG1hcEl0ZXJhdG9yU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGJpZ0ludFN0cnVjdHVyZTsKIAogICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1l
RW51bWVyYXRvcjsKICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5lbFNldEJ1Y2tldDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOGY4OThjOWZj
NGIxNzI5NmNjNzNiZTU2YTMzZjU2ZmQwNmI3NjliLi5lZDNhMTM4MjU2ZWRjNjRhZTU1ZThhMmIx
ZWU1N2ZhNTNiZWQ3YzRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpT
QmlnSW50LCBCaWdJbnRDb25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMTYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVwZGF0ZSBXaW5DYWlyb1JlcXVpcmVtZW50
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggNDExZTlhNzUzMjM4NjkyODkyZTkz
NjIwNmZjY2U3NDliMTc4ZWNiZC4uOWMwMDYyNjM1ODkxMGQ5NjdkZTQ3OGI3OWMyZjkyMWM1MTAz
MzQ3MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysg
Yi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC02MTYsNiArNjE2LDEwIEBA
IGRlZiBydW5EZWZhdWx0KCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJk
ZWZhdWx0IiwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBl
bmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykK
KyAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVzZUJpZ0ludD10cnVlIiAsICooRlRMX09Q
VElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQorZW5kCisKIGRlZiBydW5GVExO
b0NKSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oIm1pc2MtZnRsLW5v
LWNqaXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3Bl
Y2lmaWNPcHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBjMWVkMjIzN2NkYWE0MTMyNDNlZWJlNDBmYTJiYWFmYjNhNTY2
ZWUxLi5jMmQzN2Y1NThmOTdkZWZlYjBmZGUzNzRjOTBjNTUxNGUyZjk4NGU3IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBKU0JpZ0ludCwgQmlnSW50Q29uc3RydWN0
b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvYmlnLWludC1saXRlcmFscy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICAoYXNzZXJ0VGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorCiAyMDE3LTExLTE2ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1h
cmsgcmVncmVzcy0xNzgzODUuanMgYXMgbWVtb3J5IGV4aGF1c3RpbmcKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvYmlnSW50VGVzdHMueWFtbCBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMmIxNzdlMjYyNmMyNTQ4OGMzYTI4ZDk1ZDE2ZTc1NDYyNTcyNWYzCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRlZCB0byBzaW1wbGlm
eSBydW5uaW5nIEJpZ0ludCB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIEJpZ0ludAorIyBhcmUg
bm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBhdGg6IHN0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCistIHBhdGg6IHN0
cmVzcy9iaWctaW50LXR5cGUtb2YuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LWxpdGVyYWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2Yzc5MjAwMTM0MWEwNTgzOWViNmJi
NjgxOTJmMDljYmNhYTA1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWxpdGVyYWxzLmpzCkBAIC0wLDAgKzEsMTA2IEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAor
CitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4RXJy
b3IoaW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNz
ZXJ0KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNl
b2YgU3ludGF4RXJyb3IpOworICAgIH0KK30KKworLy8gVGVzdCAwIGNvbnZlcnNpb25zCitsZXQg
biA9IDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworbiA9IDAwbjsKK2Fzc2VydChuID09PSAwbik7
CisKKy8vIEJpbmFyeSByZXByZXNlbnRhdGlvbgorCituID0gMGIxMTExbjsKK2Fzc2VydChuID09
PSAxNW4pOworCituID0gMGIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCituID0gMGIwMTBuOwor
YXNzZXJ0KG4gPT09IDJuKTsKKworbGV0IGJpbmFyeVN0cmluZyA9ICIwYjEiOworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZh
bChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2
MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCituID0gMEIxMTExbjsKK2Fzc2VydChuID09PSAxNW4p
OworCituID0gMEIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitiaW5hcnlTdHJpbmcgPSAiMEIx
IjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIw
IjsKKworbiA9IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIz
NjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworLy8gT2N0YWwgcmVwcmVzZW50
YXRpb24KKworbiA9IDBvN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gMG8xMG47Cithc3Nl
cnQobiA9PT0gOG4pOworCituID0gMG8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBv
MDAwMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzduOworYXNzZXJ0KG4gPT09IDdu
KTsKKworbiA9IDBPMTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0
KG4gPT09IDE2bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCisvLyBIZXhh
ZGVjaW1hbCByZXByZXNlbnRhdGlvbgorCituID0gMHhhbjsKK2Fzc2VydChuID09PSAxMG4pOwor
CituID0gMHhmZm47Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweDAwMGZmbjsKK2Fzc2Vy
dChuID09PSAyNTVuKTsKKworbiA9IDB4ZmFiY247Cithc3NlcnQobiA9PT0gNjQxODhuKTsKKwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MGIwMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMW5uIik7Cithc3NlcnRUaHJvd1N5
bnRheEVycm9yKCIwbzg5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG8wOG4iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjBvN25uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIw
eGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweDBnbiIpOworYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcigiMHhmbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwMG5uIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIxYTBubiIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXR5cGUtb2YuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTUzY2QzMDEyNDZiOTU4ZjRjNmQ0ZGExMWFmN2NkMGE2YjQwOTJhYwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpAQCAtMCww
ICsxLDEwIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgewor
ICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9
CisKK2Fzc2VydCh0eXBlb2YgMG4gPT09ICJiaWdpbnQiKTsKK2Fzc2VydCh0eXBlb2YgMW4gIT09
ICJvYmplY3QiKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327297</attachid>
            <date>2017-11-17 19:35:11 -0800</date>
            <delta_ts>2017-11-17 19:44:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171118013508.patch</filename>
            <type>text/plain</type>
            <size>89409</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZTYyYTQzN2NhNGYxMDYx
N2EyYWI0NDVmMzBkNGFjNGYzYzVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJbnRD
b25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJl
IGludHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBp
dCBvbiBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1d
IAorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgb24gSlNC
aWdJbnQ6Om1fZGF0YSB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9ybWFuY2Ug
ZHVlIHRvIGNhY2hlIGxvY2FsaXR5IGFuZCBhbGxvd2luZworICAgICAgICA2NC1iaXR3aXNlIChv
ciAzMi1iaXR3aXNlKSBhcml0aG1ldGljIG9wZXJhdGlvbnMuIEpTQmlnSW50IGFsc28gaGFzIG1f
c2lnbgorICAgICAgICB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQgbV9s
ZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEgYXJl
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXByZXNl
bnRhdGlvbiwgSlNCaWdJbnQ6Om1fZGF0YVswXSByZXByZXNlbnRzCisgICAgICAgIHRoZSBsZWFz
dCBzaWduaWZpY2FudCBkaWdpdCBhbmQgSlNCaWdJbnQ6Om1fZGF0YVttX2xlbmd0aCAtIDFdIHJl
cHJlc2VudHMgdGhlIG1vc3QKKyAgICAgICAgc2lnaW5pZmljYW50IGRpZ2l0LgorCisgICAgICAg
IFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRjaCB0aGUgQmlnSW50IGxpdGVy
YWxzIExleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBzdXBwb3J0LiBUaGUgb3BlcmF0
aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJlaW5nCisgICAgICAgIGltcGxl
bWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2UgZmVhdHVyZXMgYXJlIGJlaW5n
IGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0tdXNlQmlnSW50IiBhbmQKKyAg
ICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vu
cy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
RGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUludCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVGcm9tVWludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9t
QW55SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb21Cb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNp
Z24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmlzWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFzQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1i
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpjbHo2NCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVLZXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnR5cGVTdHJpbmcgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZlYXR1cmUgZGVmaW5lIGZvciBhbHRlcm5hdGl2ZSBwcmVzZW50YXRpb24gYnV0dG9uIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTljNGE5OWJhYjA1MDgwN2U2
NzI2ZTE2YmIyNTlhZDAyYjI2NGQ3MC4uMzAxYWFhM2RkNWE0ODM3ZGI5YzE3MzZlYTk1ODM5YWU2
OTE3MTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjksNiArMTEyOSw3
IEBACiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFBy
aXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAx
MTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyB9Owog
CQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5RUJDQjYwRThDNkQ0QTAwODcyMkND
IC8qIFJlc3VsdFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZE
REVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBN
YWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0z
NjQ0LDYgKzM2NDUsOCBAQAogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAw
QjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5
MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNCaWdJbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlnSW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmFzbTsgcGF0
aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYXNtLmFzbTsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4NTIsMTQgKzU4NTUsMTQgQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTM2QjMxOTgxRjczNUU1QzAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tICovLAotCQkJCTUzNkIzMTk2MUY3MzVFNUIw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLywKLQkJCQk1MzBBNjZCMTFGQTNFNzdB
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gKi8sCi0JCQkJNTMwQTY2QjgxRkEzRTc3
RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tICovLAotCQkJCTUzMEE2NkI1MUZBM0U3
N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSAqLywKIAkJCQk1MzZCMzBEQTFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEuY3BwICovLAorCQkJCTUzNkIzMTk2MUY3MzVF
NUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLywKIAkJCQk1MzZCMzBEMjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3BwICovLAorCQkJCTUzMEE2NkIxMUZBM0U3
N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSAqLywKIAkJCQk1MzZCMzBEMzFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMuY3BwICovLAorCQkJCTUzMEE2NkI4MUZBM0U3
N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAqLywKIAkJCQk1MzZCMzBFMTFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQuY3BwICovLAorCQkJCTUzMEE2NkI1MUZBM0U3
N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSAqLywKIAkJCQk1MzZCMzBFMjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3BwICovLAogCQkJCTUzNkIzMEVBMUY3MUM1
MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNi5jcHAgKi8sCiAJCQkJNTM2QjMwRTkxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCAqLywKQEAgLTY0ODcsNiArNjQ5MCw4IEBA
CiAJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovLAog
CQkJCThCQzA2NDg3MUUxQTU4M0YwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwICovLAogCQkJCThCQzA2NDg4MUUxQTU4NDAwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCAqLywKKwkJCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYgLyogSlNCaWdJbnQu
Y3BwICovLAorCQkJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovLAog
CQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAog
CQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJ
CQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovLApAQCAtODc0NSw2
ICs4NzUwLDcgQEAKIAkJCQk4QkMwNjQ4OTFFMUFCQTY0MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBEMTdENzBFOEFENEE5MDAwQ0Qx
N0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY4OTIxQzIxRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkZBOUU5MjE0MkJC
QjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja0NvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQxQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4OTgsMTQgKzk5MDQsMTQgQEAKIAkJCQkwRkY0Mjc0NjE1
OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovLAog
CQkJCTUzNkIzMTlBMUY3MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTUzNkIzMTlCMUY3MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
Mi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzMEE2NkI5MUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlMy1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzMEE2NkJBMUZBM0U3OEIw
MDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzMEE2
NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUzNkIzMTVGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MzZCMzE5QjFGNzM1RTc4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTItbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1NzFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QjkxRkEzRTc4QjAw
MjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMx
NTgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUzNkIzMTY2MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzBBNjZCQjFGQTNFNzhCMDAyNkE1NDUgLyogVW5p
ZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2NzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkYx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTZFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNy5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MGU0YTMyNTcwNDIyNTU2ZGFj
NzNiNzJmOWUyMTliMmUyNzBlNDM3Li5hNTg3OGI1MjdkZDk0ZDRjYjdhOTlmYjRjMzRiYTNiOGMx
MDU1YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03NjQsNiArNzY0LDcgQEAg
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmlnSW50LmNwcAogcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50aW1lL0pTQ2FsbGVlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAw
YWZmNGIwYzZmZDMwYzkzYWI2MGUyYzVmODU4MWI4N2MxYjk2Njc4Li42ZmM0ZjY4YzVhYWYxNjc2
NzVmMGE3NmI1NjNlYjAzZGZlYzE4YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkludGVycHJl
dGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDYzZTM5OGQ2MTFiYmE4MTI3NDRjZWJmYjVjYmY4OTc2NDk5MGU1NTAuLjU5ZDQ0NjY2YWYx
ZmE3NmZkZGJmYWNhZTM5MWFhMWI5OWQ0YzRiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTc4
Myw2ICsxNzg0LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxp
dHlPcChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVy
biBkc3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQmlnSW50
KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKKyAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9w
KCk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19jZWxsX3dpdGhfdHlwZSk7Cisg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyY0luZGV4KTsKKyAgICAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGRzdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2Jq
ZWN0IikgewogICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKICAgICAgICAgICAgICAg
ICBlbWl0T3Bjb2RlKG9wX2lzX29iamVjdF9vcl9udWxsKTsKQEAgLTMxMjUsNiArMzEzNCwxNiBA
QCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRCdWZmZXIodW5zaWduZWQg
bGVuZ3RoKQogICAgIHJldHVybiBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnRCdWZmZXIobGVuZ3Ro
KTsKIH0KIAorSlNCaWdJbnQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIEpTQmlnSW50KiYgYmlnSW50SW5N
YXAgPSBtX2JpZ0ludE1hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBpZiAoIWJpZ0ludEluTWFwKSB7CisgICAgICAgIGJpZ0ludEluTWFwID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsICp2bSgpLCBTdHJpbmdWaWV3KGlkZW50aWZpZXIu
c3RyaW5nKCkpKTsKKyAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CisgICAg
fQorICAgIHJldHVybiBiaWdJbnRJbk1hcDsKK30KKwogSlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewog
ICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyYjI0MjY0
MTgwM2JkNDA1MmFlNWEyYjZhMDk3NWRhMDQwZDVhZjdiLi41NTg4ZjYyMjUyODRlMjM3ZTAzM2My
OTdjYjBhYjA4N2EyNTZhMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVk
ZSAiTGFiZWxTY29wZS5oIgpAQCAtMTAwMiw2ICsxMDAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVyTWFwOwogICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50
aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU0JpZ0ludCosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVu
dGlmaWVyQmlnSW50TWFwOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVn
aXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxhdGVSZWdpc3RyeUtleU1hcDsKICAgICAgICAg
CiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwoKSBhbmQgZW1pdENvbnN0cnVjdCgpLiBU
aGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgpAQCAtMTA4OCw2ICsxMDkwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25z
dGFudChjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTQmlnSW50KiBhZGRCaWdJbnRDb25z
dGFudChjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRl
UmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4mJik7CiAKICAgICAg
ICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYg
aW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTExODcsNiArMTE5
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpT
VmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXBy
ZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0
cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1hcCBtX2pzVmFsdWVNYXA7CiAgICAgICAg
IElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7CisgICAgICAgIElkZW50aWZpZXJCaWdJ
bnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1w
bGF0ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9z
dGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1Y3Rpb25zIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMjM1
YWE2YjFiYTQzMzllOTM5NTQwZDdlYmNhNzBkZjgwODQ3ZjMyMC4uNjA5NzFiOGMyNzI2Y2ZhMWM3
NjExOWVmNjM0ZmI4NGNlODk4MjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTIyLDYgKzEyMiwxMSBAQCBKU1Zh
bHVlIFN0cmluZ05vZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29u
c3QKICAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZFN0cmluZ0NvbnN0YW50KG1fdmFsdWUpOwogfQog
CitKU1ZhbHVlIEJpZ0ludE5vZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
cikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZEJpZ0ludENvbnN0YW50KG1fdmFs
dWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIE51bWJlck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNGNhYWY1ZmE0NTU2OGJjZmE2Y2YxYjRiZmRj
NjRiNDE1NmFjYmY4ZS4uNWUyYzQ3NjRjMjFhNzI1NzIxNzQzYzc1ZDY5NDIzNTNhMGI3MmNhNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTc1LDcgKzE3NSw3IEBAIGlubGluZSBUb1RoaXNSZXN1
bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0
VmFsdWUmCiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZh
bHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkg
PT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKKyAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwog
ICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5
cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM1ZTg0YTVjMTQ1
MTdlYmVkOGQ2MTQ4NzFmOWFjN2JlYjAyNGQ2MDAuLmRjMjk0ZjEwZTNlZjU0MGNkNDZhZWM3MGQ0
MGIwM2IwYzRlZGYxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIHVuc2lnbmVkIHNpemVPZlZh
cmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBm
aXJzdFZhCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5
bWJvbFR5cGU6CisgICAgY2FzZSBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9y
KGNhbGxGcmFtZSwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGI5Zjc4MzA4MTc0ODE4YWViNTMwMDBhNDY4ODgyNDJkM2Jl
NzExNDQuLjhmMTdhZTNlNmQ1OGI4ZTBjZTNiNzljMzRmNjVhM2UxMjNiMGM5ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJKU0Jp
Z0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxM2U2ZTU1MjgwYmNkYjA0OGYyMjUyYjEyNWMz
MWRmM2RhZS4uNzFlMTEyMDNkNGFhYThhZTFjZmZmNzIzYzVhMTY3OTU4NWE3NzVjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIzMiw2ICsyMzIsMTIg
QEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMoKTsKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KKyAgICAKKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCkKKyAgICB7CisgICAgICAgIGluY0NvbnN0
YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCaWdJbnROb2RlKGxv
Y2F0aW9uLCAqYmlnSW50KTsKKyAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3Ry
aW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0
cmluZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZl
ZTZjNWRiZDU5YWRlMzdmMmQxYjIyZDI5MTY0OGFkMjk2ZjU0MWQuLjYzMzcxOTlhNzliNzgyOGVi
ZmJiYWI1OTIwMDM3OWJiMmQxYTY5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKgogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFy
c2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6
cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1v
c3QgaGV4YWRlY2ltYWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgaGV4
VmFsdWUgPSAwOwpAQCAtMTUxMiw5ICsxNTEyLDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVy
PFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLW1heGltdW1EaWdp
dHM7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgbWF4aW11bURp
Z2l0cyA+PSAwKTsKIAotICAgIGlmIChtYXhpbXVtRGlnaXRzID49IDApIHsKKyAgICBpZiAobWF4
aW11bURpZ2l0cyA+PSAwICYmIFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIChtX2N1
cnJlbnQgfCAweDIwKSAhPSAnbicpKSB7CiAgICAgICAgIHJldHVyblZhbHVlID0gaGV4VmFsdWU7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8g
Tm8gbW9yZSBwbGFjZSBpbiB0aGUgaGV4VmFsdWUgYnVmZmVyLgpAQCAtMTUzMyw3ICsxNTMzLDEx
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5W
YWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAKKyAgICBpZiAoVU5MSUtFTFkoKG1fY3Vy
cmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBy
ZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4
LnNpemUoKSwgMTYpOworICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KQEAgLTE1NTQsNyArMTU1OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFy
c2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1kaWdpdDsKICAgICB9IHdo
aWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAg
IGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgeworICAgIGlmICgh
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBVTkxJS0VMWSgobV9jdXJy
ZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAgICAgICByZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVl
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTcyLDYgKzE1NzYsOSBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoVU5MSUtFTFkoKG1fY3Vy
cmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
blZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6
ZSgpLCAyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1OTQsNyArMTYwMSw3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQog
ICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVu
dCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYm
IGRpZ2l0ID49IDApIHsKKyAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0
ID49IDAgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4
MjApICE9ICduJykpIHsKICAgICAgICAgcmV0dXJuVmFsdWUgPSBvY3RhbFZhbHVlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjEyLDYgKzE2MTksOSBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgy
MCkgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuVmFsdWUgPSBw
YXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTYzOCw3ICsxNjQ4LDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAg
ICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYm
IGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAn
LicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykgeworICAgICAgICBpZiAoZGlnaXQgPj0g
MCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScgJiYgVU5M
SUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICduJykp
IHsKICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZGVjaW1hbFZhbHVlOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIxMTMsMTMgKzIxMjMsMjMgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBwcmVmaXguCiAgICAgICAgICAgICBzaGlm
dCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VIZXgodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkgJiYgVU5MSUtF
TFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApID09ICduJykpIHsK
KyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBzaGlmdCgp
OworICAgICAgICAgICAgICAgIFZlY3RvcjxMQ2hhcj4gY29tcGxldGVJZGVudDsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlSWRlbnQuYXBwZW5kKCd4Jyk7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBl
bmQobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgICAgICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKGNvbXBsZXRlSWRlbnQuZGF0YSgpLCBj
b21wbGV0ZUlkZW50LnNpemUoKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChp
c0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwg
YW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9I
RVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtl
VG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRv
a2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRl
Z2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZm
ZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTMzLDEz
ICsyMTUzLDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnYicgcHJl
Zml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VCaW5hcnkodG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlQmluYXJ5KHRva2Vu
RGF0YS0+ZG91YmxlVmFsdWUpICYmIFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmICht
X2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJ
TlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TENo
YXI+IGNvbXBsZXRlSWRlbnQ7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQo
JzAnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnYicpOworICAgICAg
ICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVy
OC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlSWRlbnRp
Zmllcihjb21wbGV0ZUlkZW50LmRhdGEoKSwgY29tcGxldGVJZGVudC5zaXplKCkpOworICAgICAg
ICAgICAgfTsKKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNl
IGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tl
biA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7
CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAg
ICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMTU0LDEzICsyMTg0LDIzIEBAIHN0YXJ0OgogICAgICAgICAg
ICAgLy8gU2hpZnQgb3V0IHRoZSAnbycgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAot
ICAgICAgICAgICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAg
ICAgIGlmICghcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSAmJiBVTkxJS0VMWShP
cHRpb25zOjp1c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKSkgeworICAg
ICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICAgICAgVmVjdG9yPExDaGFyPiBjb21wbGV0ZUlkZW50OworICAgICAgICAgICAg
ICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgY29tcGxldGVJ
ZGVudC5hcHBlbmQoJ28nKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCht
X2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoY29tcGxldGVJZGVudC5kYXRhKCksIGNvbXBs
ZXRlSWRlbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRl
bnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gb2N0YWwgbGl0ZXJhbCBhbmQgaWRlbnRp
ZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX09DVEFMX05VTUJF
Ul9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBC
SUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VU
b2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJp
bmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjE4MCwyNCArMjIyMCwz
MCBAQCBzdGFydDoKICAgICBjYXNlIENoYXJhY3Rlck51bWJlcjoKICAgICAgICAgaWYgKExJS0VM
WSh0b2tlbiAhPSBJTlRFR0VSICYmIHRva2VuICE9IERPVUJMRSkpIHsKICAgICAgICAgICAgIGlm
ICghcGFyc2VEZWNpbWFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAgICAg
ICAgdG9rZW4gPSBJTlRFR0VSOwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4n
KSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYm
IChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwg
bV9idWZmZXI4LnNpemUoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKIGluTnVtYmVy
QWZ0ZXJEZWNpbWFsUG9pbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VCTEU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0g
J2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50
SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRv
ciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5B
VEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VS
Uk9SVE9LOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2UnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGlj
YXRvcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9y
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJN
SU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAg
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1f
YnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgICAgICAg
ICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0
YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGlm
ICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlw
ZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtl
VG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBkODQ1ZTJlMTRmNTY5YTRkMzhlMmMzZDk5ZWY2YzQ2NzIz
MjQzMjIwLi5hZDkwNzY0OGMwMGUxNmRjNDViNmVlOWNjZjBhNDQ5NTM2OWE5Y2M2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToK
IAogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJz
ZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBh
cnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIp
OwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVy
YWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSk7CisgICAgQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhY2RhYzZjYTExNjdkNWRm
NGJmNDZhZGRkNzM5YmVjZWM4YmQxOWJmLi41OTk1Njg0YzU1OTQ0MjRlMmU2YzNkYTE0OTkzMDRh
MjdmNjNkNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaApAQCAtOTIsNiArOTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAorICAgIGlubGluZSBCaWdJbnROb2RlOjpCaWdJbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQorICAgICAgICA6IENvbnN0
YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgICAgICAsIG1f
dmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKwogICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJp
bmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IHZhbHVlKQogICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3Ry
aW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKaW5kZXggMmE2ZGRkMjJjZDhkMTdjZWYyYjNkYmY3MTY4YjMyYTk5MmFhY2Rj
Yy4uNTQ5OWY4NmQzYWVkYTZjNzFiNTg2MDQ0ZWU1NmE0NDdmMTk4OTdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVjdExpdGVyYWwoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJheUxpdGVyYWwoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTMyOCw2ICszMjksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CiAgICAgfTsKIAorICAgIGNsYXNzIEJpZ0lu
dE5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJpZ0lu
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgICAgIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CisgICAgfTsK
KwogICAgIGNsYXNzIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCA0OTA4OTg1OTkzYWMxYmQ1NDI2YzRhMTFmMDJkYWE4ZTk4ZDUzMTUw
Li5lZWMwNmUzZTFkNWU3OTkxZDAzN2U2ZGZhZDMxYTk0MmY2NjA3OTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00NDkyLDYgKzQ0OTIsMTIgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VQcmltYXJ5RXhwcmUKIAogICAgICAgICByZXR1cm4gY3JlYXRlUmVzb2x2ZUFuZFVzZVZh
cmlhYmxlKGNvbnRleHQsIGlkZW50LCAqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZh
bCwgc3RhcnQsIGxvY2F0aW9uKTsKICAgICB9CisgICAgY2FzZSBCSUdJTlQ6IHsKKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgICAgIG5leHQo
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmlnSW50KGxvY2F0aW9uLCBpZGVudCk7
CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZj
NS4uNzc5YTA1YmJmOGJmNGQwMjhkNTcwMmQ3ZTQzNmJkNjU3YzRkNmVmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAg
ZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9V
QkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDhk
YjM1Yzc3OTZmNGQzNmZhNTQ1MjU5MTYwZGM1ODllYjg0OWQ5NTYuLjE1MzYyN2MwMzg3ZmZkMzY0
YjdiNzEzYzlmY2QyOGExMDk3ZGZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBjb25zdCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0eUJpdCA9IDB4ODAwMDAwMDA7CiAgICAg
ZW51bSA6IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNv
bHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsCisgICAgICAgIFJl
c29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJp
bmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHBy
LCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBD
bGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENh
bGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBC
aW5hcnlFeHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4g
QXJyYXlMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdWJsZUV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBEb3VibGVFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgZG91YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikgeyBy
ZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUxYmRlNTVmOThmLi5kNjQ3NjZhMzA0Zjc1
NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBt
YWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNy
byhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3JvKEJpZ0ludCkgXAogICAgIG1hY3JvKEJv
b2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKENyZWRlbnRpYWwpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MDAwNzk2ZDM4MmY5OWJmZWNkY2MzMjBlZjBiYTcyMTg0OGRiMjcwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0wLDAgKzEs
NTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBn
bWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBQYXJ0
cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6CisgKgorICogQ29weXJpZ2h0IDIwMTcgdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgKgorICoKKyAqIENvcHlyaWdodCAo
YykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMuICBQbGVhc2Ugc2VlIHRoZSBBVVRIT1JT
IGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQorICogQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbMl0uCisgKgorICogWzFdIGh0dHBz
Oi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVyL0FVVEhPUlMKKyAqIFsyXSBo
dHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9MSUNFTlNFCisgKgor
ICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorICog
bGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIFszXS4KKyAqCisg
KiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJNYXRoQ29tbW9uLmgiCisKKyNkZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBzdGF0
aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJ
bnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQmln
SW50KSB9OworCit2b2lkIEpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNCaWdJbnQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2RhdGEpCisgICAgICAgIHZpc2l0b3IubWFya0F1
eGlsaWFyeSh0aGlzT2JqZWN0LT5tX2RhdGEuZ2V0KCkpOworfQorCitKU0JpZ0ludDo6SlNCaWdJ
bnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKK3sgfQorCit2b2lkIEpTQmln
SW50Ojppbml0aWFsaXplKGJvb2wgemVyb0luaXRpYWxpemUpCit7CisgICAgQVNTRVJUKG1fZGF0
YSk7CisKKyAgICBzZXRTaWduKGZhbHNlKTsKKyAgICBpZiAoemVyb0luaXRpYWxpemUpIHsKKyAg
ICAgICAgdm9pZCogZGF0YSA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgbWVtc2V0KHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGRhdGEpLCAwLCBsZW5ndGgoKSAqIERpZ2l0U2l6ZSk7CisgICAgfQor
fQorCisvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorI2RlZmluZSBIQVZFX1RXT0RJR0lUX1QgMQordHlwZWRlZiB1aW50NjRfdCBUd29EaWdpdDsK
KyNlbGlmIEhBVkUoSU5UMTI4X1QpCisjZGVmaW5lIEhBVkVfVFdPRElHSVRfVCAxCit0eXBlZGVm
IF9fdWludDEyOF90IFR3b0RpZ2l0OworI2VuZGlmCisKKy8vIHtjYXJyeX0gbXVzdCBwb2ludCB0
byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8v
IGJ5IG9uZSBvciBsZWZ0IGFsb25lLgoraW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6
ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGNhcnJ5KQoreworI2lmIEhBVkVfVFdP
RElHSVRfVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSAr
IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICAqY2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0
Qml0czsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisg
ICAgRGlnaXQgcmVzdWx0ID0gYSArIGI7CisKKyAgICBpZiAocmVzdWx0IDwgYSkKKyAgICAgICAg
KmNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7
Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhl
ciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxlZnQgYWxvbmUuCitpbmxpbmUgSlNCaWdJ
bnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogYm9y
cm93KQoreworI2lmIEhBVkVfVFdPRElHSVRfVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRp
Y19jYXN0PFR3b0RpZ2l0PihhKSAtIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICAqYm9y
cm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRzKSAmIDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdpdCByZXN1bHQgPSBhIC0gYjsK
KyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgKmJvcnJvdyArPSAxOworICAgIAorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbmRpZgorfQorCisvLyBSZXR1cm5z
IHRoZSBsb3cgaGFsZiBvZiB0aGUgcmVzdWx0LiBIaWdoIGhhbGYgaXMgaW4ge2hpZ2h9LgoraW5s
aW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwg
RGlnaXQqIGhpZ2gpCit7CisjaWYgSEFWRV9UV09ESUdJVF9UCisgICAgVHdvRGlnaXQgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOwor
ICAgICpoaWdoID0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgLy8gTXVsdGlwbHkgaW4gaGFsZi1wb2ludGVy
LXNpemVkIGNodW5rcy4KKyAgICAvLyBGb3IgaW5wdXRzIFtBSCBBTF0qW0JIIEJMXSwgdGhlIHJl
c3VsdCBpczoKKyAgICAvLworICAgIC8vICAgICAgICAgICAgW0FMKkJMXSAgLy8gckxvdworICAg
IC8vICAgICsgICAgW0FMKkJIXSAgICAgLy8gck1pZDEKKyAgICAvLyAgICArICAgIFtBSCpCTF0g
ICAgIC8vIHJNaWQyCisgICAgLy8gICAgKyBbQUgqQkhdICAgICAgICAvLyBySGlnaAorICAgIC8v
ICAgID0gW1I0IFIzIFIyIFIxXSAgLy8gaGlnaCA9IFtSNCBSM10sIGxvdyA9IFtSMiBSMV0KKyAg
ICAvLworICAgIC8vIFdoZXJlIG9mIGNvdXJzZSB3ZSBtdXN0IGJlIGNhcmVmdWwgd2l0aCBjYXJy
aWVzIGJldHdlZW4gdGhlIGNvbHVtbnMuCisgICAgRGlnaXQgYUxvdyAgPSBhICYgSGFsZkRpZ2l0
TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCBi
TG93ICA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdoID0gYiA+PiBIYWxmRGln
aXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgID0gYUxvdyAqIGJMb3c7CisgICAgRGlnaXQg
ck1pZDEgPSBhTG93ICogYkhpZ2g7CisgICAgRGlnaXQgck1pZDIgPSBhSGlnaCAqIGJMb3c7Cisg
ICAgRGlnaXQgckhpZ2ggPSBhSGlnaCAqIGJIaWdoOworICAgIAorICAgIERpZ2l0IGNhcnJ5ID0g
MDsKKyAgICBEaWdpdCBsb3cgPSBkaWdpdEFkZChyTG93LCByTWlkMSA8PCBIYWxmRGlnaXRCaXRz
LCAmY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRkKGxvdywgck1pZDIgPDwgSGFsZkRpZ2l0Qml0
cywgJmNhcnJ5KTsKKworICAgICpoaWdoID0gKHJNaWQxID4+IEhhbGZEaWdpdEJpdHMpICsgKHJN
aWQyID4+IEhhbGZEaWdpdEJpdHMpICsgckhpZ2ggKyBjYXJyeTsKKworICAgIHJldHVybiBsb3c7
CisjZW5kaWYKK30KKworLy8gUmFpc2VzIHtiYXNlfSB0byB0aGUgcG93ZXIgb2Yge2V4cG9uZW50
fS4gRG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93LgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50
OjpkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCkKK3sKKyAgICBEaWdpdCByZXN1
bHQgPSAxdWxsOworICAgIHdoaWxlIChleHBvbmVudCA+IDApIHsKKyAgICAgICAgaWYgKGV4cG9u
ZW50ICYgMSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSBiYXNlOworCisgICAgICAgIGV4cG9uZW50
ID4+PSAxOworICAgICAgICBiYXNlICo9IGJhc2U7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLy8gUmV0dXJucyB0aGUgcXVvdGllbnQuCisvLyBxdW90aWVudCA9IChoaWdoIDw8
IERpZ2l0Qml0cyArIGxvdyAtIHJlbWFpbmRlcikgLyBkaXZpc29yCitKU0JpZ0ludDo6RGlnaXQg
SlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwg
RGlnaXQqIHJlbWFpbmRlcikKK3sKKyAgICBBU1NFUlQoaGlnaCA8IGRpdmlzb3IpOworI2lmIENQ
VShYODZfNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsK
KyAgICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2cSAgJVtkaXZpc29yXSIKKyAgICAgICAg
Ly8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIHJheCwge3JlbX0gaW4gcmR4LgorICAg
ICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQg
e2hpZ2h9IGludG8gcmR4LCB7bG93fSBpbnRvIHJheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAg
ICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwg
ImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICAqcmVtYWluZGVyID0gcmVt
OworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQVShYODYpICYmIENPTVBJTEVSKEdDQ19P
Ul9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCByZW07CisgICAgX19hc21f
XygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxs
IGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQi
KHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8gZWR4LCB7bG93fSBpbnRv
IGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFj
ayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRp
dmlzb3IpKTsKKyAgICAqcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNl
bHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVsbCA8PCBIYWxm
RGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQs
IHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQoZGl2aXNvcik7
CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAgICBkaXZpc29y
IDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFsZkRpZ2l0Qml0czsK
KyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKworICAgIC8vIHtzfSBj
YW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdlICImIiBpdCB3
aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBhbmQgYWxsIDEt
Yml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRyX3QpID09IHNp
emVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7CisgICAgRGlnaXQg
dW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMpKSAmIHNaZXJvTWFz
ayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9IHVuMTAgPj4g
SGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRpZ2l0TWFzazsKKyAg
ICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIgLSBxMSAqIHZu
MTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZuMCA+IHJoYXQg
KiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAgICByaGF0ICs9
IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGlnaXRCYXNlICsg
dW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0
ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGlnaXRCYXNlIHx8
IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAgICAgIHEwLS07
CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFz
ZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgICpyZW1haW5kZXIgPSAodW4yMSAq
IGtIYWxmRGlnaXRCYXNlICsgdW4wIC0gcTAgKiBkaXZpc29yKSA+PiBzOworICAgIHJldHVybiBx
MSAqIGtIYWxmRGlnaXRCYXNlICsgcTA7CisjZW5kaWYKK30KKworLy8gTXVsdGlwbGllcyB7c291
cmNlfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0LgorLy8g
e3Jlc3VsdH0gYW5kIHtzb3VyY2V9IG1heSBiZSB0aGUgc2FtZSBCaWdJbnQgZm9yIGlucGxhY2Ug
bW9kaWZpY2F0aW9uLgordm9pZCBKU0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0lu
dCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCBuLCBKU0JpZ0ludCog
cmVzdWx0KQoreworICAgIEFTU0VSVChzb3VyY2UtPmxlbmd0aCgpID49IG4pOworICAgIEFTU0VS
VChyZXN1bHQtPmxlbmd0aCgpID49IG4pOworCisgICAgRGlnaXQgY2FycnkgPSBzdW1tYW5kOwor
ICAgIERpZ2l0IGhpZ2ggPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7Cisg
ICAgICAgIERpZ2l0IGN1cnJlbnQgPSBzb3VyY2UtPmRpZ2l0KGkpOworICAgICAgICBEaWdpdCBu
ZXdDYXJyeSA9IDA7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGlzIHJvdW5kJ3MgbXVsdGlwbGlj
YXRpb24uCisgICAgICAgIERpZ2l0IG5ld0hpZ2ggPSAwOworICAgICAgICBjdXJyZW50ID0gZGln
aXRNdWwoY3VycmVudCwgZmFjdG9yLCAmbmV3SGlnaCk7CisKKyAgICAgICAgLy8gQWRkIGxhc3Qg
cm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJyZW50ID0gZGlnaXRBZGQoY3VycmVudCwg
aGlnaCwgJm5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNh
cnJ5LCAmbmV3Q2FycnkpOworCisgICAgICAgIC8vIFN0b3JlIHJlc3VsdCBhbmQgcHJlcGFyZSBm
b3IgbmV4dCByb3VuZC4KKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBjdXJyZW50KTsKKyAg
ICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAgaGlnaCA9IG5ld0hpZ2g7CisgICAgfQor
CisgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPiBuKSB7CisgICAgICAgIHJlc3VsdC0+c2V0RGln
aXQobisrLCBjYXJyeSArIGhpZ2gpOworCisgICAgICAgIC8vIEN1cnJlbnQgY2FsbGVycyBkb24n
dCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVzdWx0cywgYnV0IGxldCdzIGJlIHJvYnVzdC4KKyAgICAg
ICAgd2hpbGUgKG4gPCByZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRE
aWdpdChuKyssIDApOworICAgIH0gZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGNhcnJ5
ICsgaGlnaCkpOworfQorCisvLyBNdWx0aXBsaWVzIHt0aGlzfSB3aXRoIHtmYWN0b3J9IGFuZCBh
ZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9pZCBKU0JpZ0ludDo6aW5wbGFjZU11bHRp
cGx5QWRkKHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJfdCBzdW1tYW5kKQoreworICAgIFNUQVRJ
Q19BU1NFUlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAgU1RBVElDX0FT
U0VSVChzaXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisKKyAgICBpbnRlcm5hbE11
bHRpcGx5QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwgbGVuZ3RoKCksIHRoaXMpOworfQorCiti
b29sIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK3sK
KyAgICBpZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAg
ICAgaWYgKHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBEaXZpZGVzIHt4fSBieSB7
ZGl2aXNvcn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGluIHtxdW90aWVudH0gYW5kIHtyZW1haW5k
ZXJ9LgorLy8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250cmFjdCBpczoKKy8vIHF1b3RpZW50ID0g
KHggLSByZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAwIDw9IHJlbWFpbmRlciA8IGRpdmlzb3Iu
CisvLyBJZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhhbmRsZSwgYW4gYXBwcm9wcmlhdGVseSBz
aXplZCBCaWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVkIGZvciBpdDsgb3RoZXJ3aXNlIHRoZSBj
YWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcgZW5vdWdoLgorLy8ge3F1b3RpZW50fSBj
YW4gYmUgdGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1wbGFjZSBkaXZpc2lvbi4ge3F1b3RpZW50
fSBjYW4KKy8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUgY2FsbGVyIGlzIG9ubHkgaW50ZXJlc3Rl
ZCBpbiB0aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbChFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3Rp
ZW50LCBEaWdpdCogcmVtYWluZGVyKQoreworICAgIEFTU0VSVChkaXZpc29yKTsKKworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisgICAgKnJlbWFp
bmRlciA9IDA7CisgICAgaWYgKGRpdmlzb3IgPT0gMSkgeworICAgICAgICBpZiAocXVvdGllbnQg
IT0gbnVsbHB0cikKKyAgICAgICAgICAgICpxdW90aWVudCA9IHg7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgaWYgKHF1b3RpZW50
ICE9IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKSB7CisgICAg
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAg
ICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAg
ICAgRGlnaXQgcSA9IGRpZ2l0RGl2KCpyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCBy
ZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0KGksIHEpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkg
Pj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYoKnJlbWFpbmRlciwgeC0+ZGlnaXQoaSks
IGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQorCisvLyBMb29rdXAgdGFibGUgZm9yIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVkIHBlciBjaGFyYWN0ZXIgb2YgYQorLy8g
YmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG51bWJlci4gVG8gaW5jcmVhc2UgYWNj
dXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhlIGFjdHVhbCB2YWx1ZSBtdWx0aXBsaWVk
IGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgorLy8gZm9yICh2YXIgaSA9IDA7IGkgPD0g
MzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5sb2cyKGkpICogMzIpICsgIiwiKTsgfQor
Y29uc3RleHByIHVpbnQ4X3QgTWF4Qml0c1BlckNoYXJbXSA9IHsKKyAgICAwLCAgIDAsICAgMzIs
ICA1MSwgIDY0LCAgNzUsICA4MywgIDkwLCAgOTYsICAvLyAwLi44CisgICAgMTAyLCAxMDcsIDEx
MSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAgLy8gOS4uMTYKKyAgICAxMzEsIDEzNCwg
MTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAgICAvLyAxNy4uMjQKKyAgICAxNDksIDE1
MSwgMTUzLCAxNTQsIDE1NiwgMTU4LCAxNTksIDE2MCwgICAgICAvLyAyNS4uMzIKKyAgICAxNjIs
IDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMy4uMzYKK307CisK
K3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJsZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25z
dCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgPSAxdSA8PCBCaXRzUGVyQ2hhclRh
YmxlU2hpZnQ7CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJjb3VudCkKK3sKKyAgICBBU1NFUlQoMiA8
PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKGNoYXJjb3VudCA+PSAwKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHNpemVfdCBi
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICBzaXplX3QgY2hhcnMgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7CisgICAgY29uc3QgaW50IHJvdW5kdXAgPSBC
aXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7CisgICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91bmR1cCkgLyBiaXRzUGVyQ2hhcikgewor
ICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJDaGFyICogY2hhcnM7CisKKyAgICAgICAg
Ly8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3VuZGluZyB1cC4KKyAgICAgICAgYml0c01p
biA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1BlckNoYXJUYWJsZVNoaWZ0OworICAgICAg
ICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KE1heEludCkpIHsKKyAgICAgICAg
ICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCisgICAgICAgICAgICBp
bnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0c01pbikgKyBEaWdpdEJpdHMgLSAxKSAv
IERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPD0gSlNCaWdJbnQ6Ok1heExlbmd0
aCkgeworICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRl
KGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhlYykKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c3RhdGljIGNvbnN0IGNoYXIgQ29udmVyc2lvbkNoYXJzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6IjsKKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgpCit7CisgICAgaWYgKHgtPmlzWmVybygp
KSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0QnVpbGRlcjsKKyAgICAgICAgcmVzdWx0
QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdEJ1aWxkZXIudG9TdHJp
bmcoKS5pbXBsKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nR2VuZXJpYyhleGVjLCB4
LCByYWRpeCk7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0
ZSogZXhlYywgSlNCaWdJbnQqIHgsIGludCByYWRpeCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdEJ1aWxkZXI7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7Cisg
ICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0geC0+bGVu
Z3RoKCk7CisgICAgY29uc3QgYm9vbCBzaWduID0geC0+c2lnbigpOworCisgICAgLy8gQ29tcHV0
ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBz
dHJpbmc6CisgICAgLy8gRGl2aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJl
cHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBs
ZWFkaW5nWmVyb3MgPSBjbHo2NCh4LT5kaWdpdChsZW5ndGggLSAxKSk7CisjZWxzZQorICAgIGlu
dCBsZWFkaW5nWmVyb3MgPSBjbHozMih4LT5kaWdpdChsZW5ndGggLSAxKSk7CisjZW5kaWYKKyAg
ICBjb25zdCBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3RoICogRGlnaXRCaXRzIC0gbGVhZGluZ1pl
cm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVwcmVzZW50IHdp
dGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5kIGFuIGFwcHJv
cHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgY29uc3QgdWludDhfdCBtYXhCaXRzUGVyQ2hh
ciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZvciBlc3RpbWF0aW5nIHJlc3Vs
dCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5kIHdvcmsgd2l0aAorICAgIC8v
IHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4K
KyAgICBjb25zdCB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXIgLSAxOwor
CisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdpdGggdWludDY0X3Qg
dG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IGNoYXJzUmVxdWlyZWQgPSBiaXRMZW5n
dGg7CisgICAgY2hhcnNSZXF1aXJlZCAqPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllcjsKKwor
ICAgIC8vIFJvdW5kIHVwLgorICAgIGNoYXJzUmVxdWlyZWQgKz0gbWluQml0c1BlckNoYXIgLSAx
OworICAgIGNoYXJzUmVxdWlyZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgY2hhcnNSZXF1aXJl
ZCArPSBzaWduOworCisgICAgaWYgKGNoYXJzUmVxdWlyZWQgPiBKU1N0cmluZzo6TWF4TGVuZ3Ro
KSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkp
OworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKKyAgICB9CisKKyAgICBpbnQg
cG9zID0gMDsKKworICAgIC8vIFdlIGFyZSBvayB0byBjYXN0LCBiZWNhdXNlIGhlcmUgY2hhcnNS
ZXF1aXJlZCA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoCisgICAgcmVzdWx0QnVpbGRlci5yZXNlcnZl
Q2FwYWNpdHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihjaGFyc1JlcXVpcmVkKSk7CisKKyAgICBEaWdp
dCBsYXN0RGlnaXQ7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYXN0RGlnaXQgPSB4
LT5kaWdpdCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGNodW5rQ2hhcnMgPSBEaWdpdEJp
dHMgKiBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAvIG1heEJpdHNQZXJDaGFyOworICAgICAg
ICBEaWdpdCBjaHVua0Rpdmlzb3IgPSBkaWdpdFBvdyhyYWRpeCwgY2h1bmtDaGFycyk7CisKKyAg
ICAgICAgLy8gQnkgY29uc3RydWN0aW9uIG9mIGNodW5rQ2hhcnMsIHRoZXJlIGNhbid0IGhhdmUg
YmVlbiBvdmVyZmxvdy4KKyAgICAgICAgQVNTRVJUKGNodW5rRGl2aXNvcik7CisgICAgICAgIGlu
dCBub25aZXJvRGlnaXQgPSBsZW5ndGggLSAxOworICAgICAgICBBU1NFUlQoeC0+ZGlnaXQobm9u
WmVyb0RpZ2l0KSk7CisKKyAgICAgICAgLy8ge3Jlc3R9IGhvbGRzIHRoZSBwYXJ0IG9mIHRoZSBC
aWdJbnQgdGhhdCB3ZSBoYXZlbid0IGxvb2tlZCBhdCB5ZXQuCisgICAgICAgIC8vIE5vdCB0byBi
ZSBjb25mdXNlZCB3aXRoICJyZW1haW5kZXIiIQorICAgICAgICBKU0JpZ0ludCogcmVzdCA9IG51
bGxwdHI7CisKKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0IHJvdW5kLCBkaXZpZGUgdGhlIGlucHV0
LCBhbGxvY2F0aW5nIGEgbmV3IEJpZ0ludCBmb3IKKyAgICAgICAgLy8gdGhlIHJlc3VsdCA9PSBy
ZXN0OyBmcm9tIHRoZW4gb24gZGl2aWRlIHRoZSByZXN0IGluLXBsYWNlLgorICAgICAgICBKU0Jp
Z0ludCoqIGRpdmlkZW5kID0gJng7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIERpZ2l0IGNo
dW5rOworICAgICAgICAgICAgYWJzb2x1dGVEaXZTbWFsbChleGVjLCAqZGl2aWRlbmQsIGNodW5r
RGl2aXNvciwgJnJlc3QsICZjaHVuayk7CisgICAgICAgICAgICBBU1NFUlQocmVzdCk7CisKKyAg
ICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNodW5rQ2hhcnM7IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBw
ZW5kKENvbnZlcnNpb25DaGFyc1tjaHVuayAlIHJhZGl4XSk7CisgICAgICAgICAgICAgICAgY2h1
bmsgLz0gcmFkaXg7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAgICAgICAgaWYgKCFyZXN0LT5kaWdpdChu
b25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5vblplcm9EaWdpdC0tOworCisgICAgICAg
ICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0aGFuIG9uZSBkaWdpdCBwZXIgaXRlcmF0
aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVua0Rpdmlzb3IgaXMgc21hbGxlciB0aGFu
IG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFTU0VSVChyZXN0LT5kaWdpdChub25aZXJv
RGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVyb0RpZ2l0ID4gMCk7CisKKyAgICAgICAg
bGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAgfQorCisgICAgZG8geworICAgICAgICBy
ZXN1bHRCdWlsZGVyLmFwcGVuZChDb252ZXJzaW9uQ2hhcnNbbGFzdERpZ2l0ICUgcmFkaXhdKTsK
KyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgICAgICBwb3MrKzsKKyAgICB9IHdoaWxl
IChsYXN0RGlnaXQgPiAwKTsKKyAgICBBU1NFUlQocG9zKTsKKyAgICBBU1NFUlQocG9zIDw9IHN0
YXRpY19jYXN0PGludD4oY2hhcnNSZXF1aXJlZCkpOworCisgICAgLy8gUmVtb3ZlIGxlYWRpbmcg
emVyb2VzLgorICAgIHdoaWxlIChwb3MgPiAxICYmIHJlc3VsdEJ1aWxkZXJbcG9zIC0gMV0gPT0g
JzAnKQorICAgICAgICBwb3MtLTsKKworICAgIGlmIChzaWduKSB7CisgICAgICAgIHJlc3VsdEJ1
aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgIHBvcysrOworICAgIH0KKworICAgIC8vIFJldmVy
c2UgdGhlIHN0cmluZy4KKyAgICBTdHJpbmdCdWlsZGVyIHJldmVyc2VCdWlsZGVyOworICAgIHJl
dmVyc2VCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJzUmVx
dWlyZWQpKTsKKyAgICBmb3IgKGludCBpID0gcG9zIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAg
IHJldmVyc2VCdWlsZGVyLmFwcGVuZChyZXN1bHRCdWlsZGVyW2ldKTsKKworICAgIHJldHVybiBy
ZXZlcnNlQnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKK30KKworc2l6ZV90IEpTQmlnSW50Ojpl
c3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU0JpZ0ludCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNpemVfdCBidWZmZXJFc3RpbWF0ZWRTaXpl
ID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNpemU7CisgICAgcmV0dXJuIEJhc2U6OmVz
dGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0ZWRTaXplOworfQorCit2b2lkIEpTQmln
SW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlmICh0aGlzLT5pc1plcm8oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRleCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3
aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIXRoaXMtPmRpZ2l0KG5vblplcm9JbmRleCkpCisg
ICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYgKG5vblplcm9JbmRleCA9PSBtX2xlbmd0
aCAtIDEpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBuZXdMZW5ndGggPSBub25aZXJvSW5k
ZXggKyAxOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobmV3TGVuZ3RoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoYmFja2luZ1N0b3JlKTsKKyAgICBEaWdpdCogZGF0YSA9IHN0YXRpY19jYXN0
PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ld0xlbmd0
aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gdGhpcy0+ZGlnaXQoaSk7CisKKyAgICBtX2RhdGEu
c2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZDI3ODI4NGM3OTg2MTZjNWNhYjE2MjVhZjIxOWJkNDFlMTZlNzMxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApA
QCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3Rm
L0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQmlnSW50IDogcHVibGljIEpTQ2VsbCB7
CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHVibGljOgorCisgICAgSlNC
aWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6
ZShib29sIHplcm9Jbml0aWFsaXplKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqKTsKKworICAgIGlubGluZSBzdGF0aWMgaW50IHNpemVGb3IoaW50IGxlbmd0aCkK
KyAgICB7CisgICAgICAgIHJldHVybiBsZW5ndGggKiBEaWdpdFNpemU7CisgICAgfQorCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhC
aWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTQmlnSW50KiBjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGUoZXhlYywgdm0sIDApOworICAgICAg
ICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHplcm9CaWdJbnQ7
CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIGludCBsZW5ndGgpCisgICAgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBKU0JpZ0ludCh2bSwg
dm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOworICAgICAgICBiaWdJbnQtPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb21JbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IGludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50
KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJbnQtPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAg
ICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7
CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsK
KworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbVVpbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVpbnQzMl90IHZhbHVlKQor
ICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJv
KGV4ZWMsIHZtKTsKKworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3Ry
dWN0dXJlLmdldCgpLCAxKTsKKyAgICAgICAgYmlnSW50LT5maW5pc2hDcmVhdGlvbihleGVjLCB2
bSk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVl
KSk7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlRnJvbUFueUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50NjRfdCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlWmVybyhleGVjLCB2bSk7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4o
dm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAg
ICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBpZiAodmFs
dWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERp
Z2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2Fz
dDxEaWdpdD4odmFsdWUpKTsKKyNlbHNlCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2
bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDIpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0
aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICAgICAgaWYg
KHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICBzaWdu
ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIERpZ2l0IGxvd0JpdHMgID0gc3RhdGljX2Nh
c3Q8RGlnaXQ+KHZhbHVlICYgMHhmZmZmZmZmZik7CisgICAgICAgIERpZ2l0IGhpZ2hCaXRzID0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KCh2YWx1ZSA+PiAzMikgJiAweGZmZmZmZmZmKTsKKworICAgICAg
ICBiaWdJbnQtPnNldERpZ2l0KDAsIGxvd0JpdHMpOworICAgICAgICBiaWdJbnQtPnNldERpZ2l0
KDEsIGhpZ2hCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworI2VuZGlmCisg
ICAgICAgIAorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlRnJvbUJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGJvb2wgdmFs
dWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJ
bnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIHZtKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCAxKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgICAgICBpZiAobV9sZW5ndGgpIHsKKyAgICAg
ICAgICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9k
YXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobV9sZW5ndGgpKTsKKyAgICAgICAgICAgIERp
Z2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihiYWNraW5nU3RvcmUpOworICAgICAgICAg
ICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhp
cyk7CisgICAgfQorCisgICAgdm9pZCBzZXRTaWduKGJvb2wgc2lnbikgeyBtX3NpZ24gPSBzaWdu
OyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CisKKyAgICB2b2lk
IHNldExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3RoID0gbGVuZ3RoOyB9CisgICAgaW50IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAgIHN0YXRpYyBK
U0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcykK
KyAgICB7CisgICAgICAgIGlmIChzLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNl
SW50KGV4ZWMsIHZtLCBzLCBzLmNoYXJhY3RlcnM4KCkpOworICAgICAgICByZXR1cm4gcGFyc2VJ
bnQoZXhlYywgdm0sIHMsIHMuY2hhcmFjdGVyczE2KCkpOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqLCBKU0JpZ0ludCos
IGludCByYWRpeCk7CisKKyAgICBib29sIGlzWmVybygpCisgICAgeworICAgICAgICBBU1NFUlQo
bGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgICAgIHJldHVybiBsZW5ndGgoKSA9PSAwOworICAg
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIENoYXJU
eXBlKiAgZGF0YSkKKyAgICB7CisgICAgICAgIGludCBsZW5ndGggPSBzLmxlbmd0aCgpOworCisg
ICAgICAgIGludCBwID0gMDsKKyAgICAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0
ZVNwYWNlKGRhdGFbcF0pKQorICAgICAgICAgICAgKytwOworCisgICAgICAgIC8vIENoZWNrIFJh
ZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgICAgICBpZiAocCArIDEgPCBsZW5ndGgpIHsK
KyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsgMV0gPT0gJ2InIHx8
IGRhdGFbcCArIDFdID09ICdCJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4
ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGlm
IChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsgMV0gPT0gJ3gnIHx8IGRhdGFbcCArIDFdID09
ICdYJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBs
ZW5ndGgsIHAgKyAyLCAxNiwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAoZGF0YVtwXSA9PSAn
MCcgJiYgKGRhdGFbcCArIDFdID09ICdvJyB8fCBkYXRhW3AgKyAxXSA9PSAnTycpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwg
OCwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBzaWduID0gZmFsc2U7CisgICAg
ICAgIGlmIChwIDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA9PSAnKycpCisg
ICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScp
IHsKKyAgICAgICAgICAgICAgICBzaWduID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK3A7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFy
c2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0aCwgcCwgMTApOworCisgICAgICAgIGlmIChyZXN1
bHQgJiYgIXJlc3VsdC0+aXNaZXJvKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFNpZ24oc2ln
bik7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4
LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAg
ICBBU1NFUlQobGVuZ3RoID49IDApOworICAgICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAg
ICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6
ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAg
ICAgICAgICsrcDsKKworICAgICAgICBpbnQgZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAg
ICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49
IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5k
SW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChw
ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKwor
ICAgICAgICBpbnQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAg
ICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChyYWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0
QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxs
b2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKKyAgICAgICAgcmVzdWx0LT5p
bml0aWFsaXplKHRydWUpOworCisgICAgICAgIGZvciAoaW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBp
KyssIHArKykgeworICAgICAgICAgICAgdWludDMyX3QgZGlnaXQ7CisgICAgICAgICAgICBpZiAo
ZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdp
dCA9IGRhdGFbaV0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAm
JiBkYXRhW2ldIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdh
JyArIDEwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8
IGxpbWl0QSkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmVz
dWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihyYWRpeCksIHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oZGlnaXQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
ID09IGxlbmd0aCkgeworICAgICAgICAgICAgcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoRXhlY1N0YXRlKiwg
Vk0mLCBpbnQgcmFkaXgsIGludCBjaGFyY291bnQpOworCisgICAgdHlwZWRlZiB1aW50cHRyX3Qg
RGlnaXQ7CisgICAgc3RhdGljIGNvbnN0IGludCBCaXRzUGVyQnl0ZSA9IDg7CisgICAgc3RhdGlj
IGNvbnN0IGludCBEaWdpdFNpemUgPSBzaXplb2YoRGlnaXQpOworICAgIHN0YXRpYyBjb25zdCBp
bnQgRGlnaXRCaXRzID0gRGlnaXRTaXplICogQml0c1BlckJ5dGU7CisgICAgc3RhdGljIGNvbnN0
IGludCBIYWxmRGlnaXRCaXRzID0gRGlnaXRCaXRzIC8gMjsKKyAgICBzdGF0aWMgY29uc3QgRGln
aXQgSGFsZkRpZ2l0TWFzayA9ICgxdWxsIDw8IEhhbGZEaWdpdEJpdHMpIC0gMTsKKyAgICBzdGF0
aWMgY29uc3QgaW50IE1heEludCA9IDB4N0ZGRkZGRkY7CisKK3B1YmxpYzoKKworICAgIC8vIFRo
ZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRz
IHdvdWxkIGJlCisgICAgLy8gTWF4SW50IC8gRGlnaXRCaXRzLiBIb3dldmVyLCB3ZSB1c2UgYSBs
b3dlciBsaW1pdCBmb3Igbm93LCBiZWNhdXNlCisgICAgLy8gcmFpc2luZyBpdCBsYXRlciBpcyBl
YXNpZXIgdGhhbiBsb3dlcmluZyBpdC4KKyAgICAvLyBTdXBwb3J0IHVwIHRvIDEgbWlsbGlvbiBi
aXRzLgorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TGVuZ3RoID0gMTAyNCAqIDEwMjQgLyAoc2l6
ZW9mKHZvaWQqKSAqIEJpdHNQZXJCeXRlKTsKKworcHJpdmF0ZToKKworICAgIHZvaWQgcmlnaHRU
cmltKFZNJik7CisKKyAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAgc3RhdGlj
IGlubGluZSBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogY2FycnkpOwor
ICAgIHN0YXRpYyBpbmxpbmUgRGlnaXQgZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQq
IGJvcnJvdyk7CisgICAgc3RhdGljIGlubGluZSBEaWdpdCBkaWdpdE11bChEaWdpdCBhLCBEaWdp
dCBiLCBEaWdpdCogaGlnaCk7CisgICAgc3RhdGljIGlubGluZSBEaWdpdCBkaWdpdERpdihEaWdp
dCBoaWdoLCBEaWdpdCBsb3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0KiByZW1haW5kZXIpOworICAg
IHN0YXRpYyBEaWdpdCBkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCk7CisKKyAg
ICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBE
aWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCogcmVtYWluZGVyKTsKKwor
ICAgIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0
b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNCaWdJbnQqIHJlc3VsdCk7CisgICAgdm9pZCBpbnBs
YWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7CisKKyAgICBpbmxp
bmUgRGlnaXQgZGlnaXQoaW50IG4pCisgICAgeworICAgICAgICBBU1NFUlQobiA+PSAwICYmIG4g
PCBsZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChtX2RhdGEpOworICAgICAgICBEaWdpdCogZGF0
YVB0ciA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGFQdHJbbl07CisgICAgfQor
CisgICAgaW5saW5lIHZvaWQgc2V0RGlnaXQoaW50IG4sIERpZ2l0IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobV9k
YXRhKTsKKyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0gbV9kYXRhLmdldCgpOworICAgICAgICBk
aWdpdFB0cltuXSA9IHZhbHVlOworICAgIH0KKworICAgIGJvb2wgbV9zaWduOworICAgIGludCBt
X2xlbmd0aDsKKyAgICBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgRGlnaXQ+
IG1fZGF0YTsKK307CisKK2lubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBq
c0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBk
MDMwNDUyMjBkNWU5NTI2N2VkOWY4ZjdiOWQzMzY1YTgzMTc5ZGQzLi40ZTk2NjAxNGM1ZTE0YTlm
Yzk3NWQzZGFkMmU5NjVlMWJkYjQ1NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMzc2LDYg
KzM3NywxMiBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBh
IHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYg
KGlzQmlnSW50KCkpIHsKKyAgICAgICAgU3RyaW5nIGJpZ0ludFN0cmluZyA9IEpTQmlnSW50Ojp0
b1N0cmluZyhleGVjLCBhc0JpZ0ludChhc0NlbGwoKSksIDEwKTsKKyAgICAgICAgaWYgKGJpZ0lu
dFN0cmluZy5sZW5ndGgoKSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYmlnSW50U3RyaW5nWzBdKTsKKyAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0ludFN0cmluZyk7CisgICAgfQogCiAgICAgQVNT
RVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZl
KGV4ZWMsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKaW5kZXggYzI0ZWE1YmJmMzU0N2I0ZmZkNDVkZWViYTZkZTQxZjI2MTk2ZTM4ZS4u
OWYzOWEzYzdkZTA3N2QyM2RlMDJkYjE5MmFhNDNkMjBlMjAyN2Q3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjIyLDYgKzIyMiw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQW55SW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0
OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7
CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25z
dDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBhMjdmNmExMTFiYmQ1
YmNlZWJhMjNjZmNmMjgzZmZkNWZhMTA0Yzc3Li4yNzkwNTdhMzU2MjY0YTBkNTYxY2I5OTBlN2E5
MjhkMmM2MDQ2ZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAt
NTc4LDYgKzU3OSwxMSBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwogfQogCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJv
bCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgp
OwpAQCAtNzE1LDEwICs3MjEsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZl
TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUKIAogQUxXQVlT
X0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpOworICAg
IGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkNhc3QgZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dl
ZC4iKSk7CisgICAgICAgIHJldHVybiBQTmFOOworICAgIH0KKwogICAgIHJldHVybiB0b051bWJl
clNsb3dDYXNlKGV4ZWMpOwogfQogCkBAIC0xMDIwLDYgKzEwMzMsOCBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2Vs
bCgpLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVj
LCBhc1N0cmluZyh2MikpOworICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkp
CisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0Nl
bGwoKSksIGFzQmlnSW50KHYyLmFzQ2VsbCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4YWMw
ZWU3ZmJjMWJjMzU3OWVlNjNmNWNiMTZhOTYwODM3Li43OTRiYzc3ZTIwMjFmMDMzNTRhYTY2MTQy
MzNjZGQ1OTVkY2EwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKQEAgLTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhl
YywgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVy
cmVkVHlwZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBl
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9Qcmlt
aXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE4MSw2ICsxODMsOCBAQCBKU09i
amVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjbwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9i
YWxPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5
ZmMwYzliMDk0MDE2NDBmYjE1ZDUyNTFhNDE3ZWI4NDg2MGQ2Y2NkLi43MWY5OWQ5N2NmNWNkMjkx
Y2NlNWMzNTRjYTlhYzYyYjk0OTc1YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaApAQCAtMTEyLDYgKzExMiw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBR
dWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBp
c0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlz
T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDU3MGYwOTRi
YWQ0YjA3YTExYWVlMjA2MDdkZTBhNzY4MWY3ZmRjM2UuLjk4MzZiMzQ3MDVlMGE3NTYwMDQ3OTYz
MTg5ZWJkZmE4Mzc3NzY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTIwMSw2ICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjpp
c1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCitp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBl
ID09IEJpZ0ludFR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25z
dAogewogICAgIHJldHVybiBtX3R5cGUgPT0gU3ltYm9sVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMTgyNWU5ZTYyYmU1
MjJkYjFlZWFhNDJhNjZlYmViODhkYjk5ODhhLi4yOGE5MjgwNDBkNmZjYzIzZTc5MzE4YWE3MzIw
ZWM1ZTU5NDNmMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3Ry
dWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG8KIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbG93ZXJOYW1lICMjIENvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7IFwKIAogICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ1JFQVRFX0NPTlNUUlVD
VE9SX0ZPUl9TSU1QTEVfVFlQRSkKLSAgICAKKwogI3VuZGVmIENSRUFURV9DT05TVFJVQ1RPUl9G
T1JfU0lNUExFX1RZUEUKIAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGVy
cm9yQ29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCmluZGV4IGMxYzAzODZkNTY1MGEyMzIxM2I2MDkzZThhMGI2YTQzYTM0
ZDllNDQuLjZmYTJmNzJlYTJlNzI4ZWNiNDgxZWJiYmQ2MjIyZmU0M2Y1MjlhZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTI2
LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKaW5kZXggODUzNTZkMzk3N2FlZDVjNzNiODlhZmYwNWM5N2MyNDJmOTViYjRlYS4uNTc3
ZDE4ZTAyNWMxMWE5OTJjZTE2Yzg1MGNiMjIxOGUyMWM2YzAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50
OF90IHsKICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdUeXBlLAogICAgIFN5bWJvbFR5cGUsCisg
ICAgQmlnSW50VHlwZSwKIAogICAgIEN1c3RvbUdldHRlclNldHRlclR5cGUsCiAgICAgQVBJVmFs
dWVXcmFwcGVyVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
aAppbmRleCBlOGYzMTZjZjQyYjhlOTI4OWZjYTA4OWI0ODMxMjE1YjdhMzAyMDMzLi4wZmRjN2Mz
NTY1Y2U4YWIxZGRlYzUxZGVmZDRjZjM4NTJjMzk5ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC02Niw2ICs2NiwyNSBAQCBpbmxpbmUgaW50IGNs
ejMyKHVpbnQzMl90IG51bWJlcikKICNlbmRpZgogfQogCitpbmxpbmUgaW50IGNsejY0KHVpbnQ2
NF90IG51bWJlcikKK3sKKyNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgaW50IHplcm9D
b3VudCA9IDY0OworICAgIGlmIChudW1iZXIpCisgICAgICAgIHplcm9Db3VudCA9IF9fYnVpbHRp
bl9jbHpsbChudW1iZXIpOworICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZWxzZQorICAgIGludCB6
ZXJvQ291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSA2MzsgaSA+PSAwOyBpLS0pIHsKKyAgICAg
ICAgaWYgKCEobnVtYmVyID4+IGkpKQorICAgICAgICAgICAgemVyb0NvdW50Kys7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gemVyb0NvdW50Owor
I2VuZGlmCit9CisKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQg
aW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBv
cGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0
YXRpb24KIC8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRo
b2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDZkMTA1NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0
MTNkOWI5OGRjMjAuLjk3Y2ZhMDdhOTY5NDAyMjI1NmM5YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04Miw2
ICs4Miw4IEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgaWYgKHYuaXNTeW1ib2woKSkKICAgICAgICAgcmV0
dXJuIHZtLnNtYWxsU3RyaW5ncy5zeW1ib2xTdHJpbmcoKTsKKyAgICBpZiAodi5pc0JpZ0ludCgp
KQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmJpZ2ludFN0cmluZygpOwogICAgIGlm
ICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYp
OwogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQg
YmUgdHJlYXRlZApAQCAtMTEyLDcgKzExNCw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxs
KCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlw
ZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSkKKyAgICBpZiAodHlwZSA9PSBT
dHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAg
ICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggNzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEy
NWY3MTQ5My4uZmJhMzI3ZjBkNWQyZDYwMDYyYWIzNTRkZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNv
bnN0ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1
c2VGYXN0VExTRm9yV2FzbUNvbnRleHQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwg
c3RvcmUgY29udGV4dCBpbiBmYXN0IFRMUy4gSWYgZmFsc2UsIHdlIHdpbGwgcGluIGl0IHRvIGEg
cmVnaXN0ZXIuIikgXAogICAgIHYoYm9vbCwgdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0Nh
bGxzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8g
aW5saW5lIGNhY2hlIFdhc20gdG8gSlMgY2FsbHMuIikgXAogICAgIHYoYm9vbCwgdXNlT2JqZWN0
UmVzdFNwcmVhZCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0
IFJlc3QvU3ByZWFkIGZlYXR1cmUuIikgXAorICAgIHYoYm9vbCwgdXNlQmlnSW50LCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAg
IHYoYm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJ
ZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1
bmRlY2lkZWQuIilcCiAgICAgdihib29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBh
IHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlS2V5LmgKaW5kZXggMTJmNDUzZTc2MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAw
YzlmMTVkNy4uNGVkMTFmOGZlZDJjOGM0YmZmMGU0MmM4NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5
LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwog
Y2xhc3MgUHJvdG90eXBlS2V5IHsKIHB1YmxpYzoKICAgICBQcm90b3R5cGVLZXkoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggODVkNGNi
MTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2ZjhkMGYzOC4uODg1MGM0YTlhMzQzOTRmMThmNzVh
MzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICAgICBtYWNybyh1bmRlZmluZWQpIFwK
ICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhzeW1ib2wpIFwKKyAgICBtYWNybyhiaWdp
bnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0U3RyaW5nKCk7CiAgICAgICAg
IGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25T
dHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCA0MDc1ZmQ3NWIwZWIxOGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2
NjdjLi45ZjU3OGU4YWJjNTQxNjAwMzk0MTg1OGJhYWZiMzFjODhlNzA3Nzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkR1bXBD
b250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKaW5kZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2Nl
YWNiYTZkMmI3OWI0ZDlmZTU1NS4uMjU3MGI3MmUzYmM0YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4
ZGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNo
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xh
c3MgU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcwOWE3ZjU0MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFj
ZTguLjNiZmNmNTcxZjRhODdhMzFlYmY5MDVkNjhkNGI1MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3
ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0
aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0KIAogaW5saW5lIEpTVmFsdWUgU3RydWN0dXJl
Ojpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKaW5kZXggZGIx
NjJiN2Y0ZjRjZTIzZmI4ODA1NmRkZjQxYzQ4ZGUzMGQ1NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVk
YWU0YzFhNDgzNjBkNDBlZjhiYmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1
bmN0aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgb3V0LnByaW50KCJiaWdpbnQi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZW9mVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCmlu
ZGV4IDMzMmZhODEyMTkyYTVhNjJlYjY2YmM2MWIyODA4YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0
MWM2ZGI3NjJjZTgxMDZmZjI4NTNhNmM1OTcwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlb2ZUeXBlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGVudW0gY2xhc3MgVHlwZW9mVHlwZSB7CiAgICAgVW5kZWZpbmVkLAorICAgIEJpZ0ludCwKICAg
ICBCb29sZWFuLAogICAgIE51bWJlciwKICAgICBTdHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggYjIwMDg1NzNmZTAyYTQ1Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5
YS4uNTk3ZGM1M2EwNTAwMTJkYWM3OTEwOTE4ZmM5MDQyMTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkpJVFdv
cmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgw
LDYgKzI4MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHNldEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOworICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50Ojpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAKICAgICBzZW50aW5lbFNldEJ1
Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykp
OwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNy
ZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBi
NTU0YjM1MGQ0MTg1MTVlNDhiNmY4ZmNjMGU4NGVjMDE3MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRm
MzQxMmE2OTZiOGRiMzc3MzJkNDNmZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTM4OCw2ICszODgsNyBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1h
cEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBtYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAg
ICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxs
PiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGlu
ZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzhmODk4YzlmYzRiMTcyOTZjYzczYmU1NmEzM2Y1NmZkMDZiNzY5Yi4uZWQzYTEz
ODI1NmVkYzY0YWU1NWU4YTJiMWVlNTdmYTUzYmVkN2M0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTExLTE3
ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtC
aWdJbnRdIEltcGxlbWVudCBKU0JpZ0ludCwgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFBy
b3RvdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTExLTE2ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVcGRhdGUg
V2luQ2Fpcm9SZXF1aXJlbWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDQx
MWU5YTc1MzIzODY5Mjg5MmU5MzYyMDZmY2NlNzQ5YjE3OGVjYmQuLjljMDA2MjYzNTg5MTBkOTY3
ZGU0NzhiNzljMmY5MjFjNTEwMzM0NzIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpA
QCAtNjE2LDYgKzYxNiwxMCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNP
cHRpb25zKQogICAgIHJ1bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkKCpvcHRpb25hbFRl
c3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQiLCAiLS11c2VCaWdJ
bnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkK
K2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAg
ICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9O
UyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFlZDIyMzdjZGFhNDEzMjQz
ZWViZTQwZmEyYmFhZmIzYTU2NmVlMS4uYzJkMzdmNTU4Zjk3ZGVmZWIwZmRlMzc0YzkwYzU1MTRl
MmY5ODRlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMS0xNyAgQ2FpbyBMaW1hICA8dGljYWlvbGlt
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJ
bnQsIEJpZ0ludENvbnN0cnVjdG9yIGFuZCBCaWdJbnRQcm90b3R5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM1OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmlnSW50VGVzdHMueWFtbDogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanM6IEFkZGVkLgorICAgICAg
ICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAq
IHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKwog
MjAxNy0xMS0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBtYXJrIHJlZ3Jlc3MtMTc4Mzg1LmpzIGFzIG1lbW9yeSBleGhhdXN0
aW5nCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwgYi9KU1Rlc3RzL2JpZ0lu
dFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiMTc3ZTI2MjZjMjU0ODhjM2EyOGQ5NWQxNmU3NTQ2
MjU3MjVmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApAQCAt
MCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
UHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJbnQgdGVzdHMuIFRvIGJlIHJlbW92ZWQg
b25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhpbmQgYSBmZWF0dXJlIGZsYWcuCisKKy0t
LQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFscy5qcworICBjbWQ6IHJ1bkJpZ0ludEVu
YWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCisgIGNtZDogcnVuQmln
SW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmM3
OTIwMDEzNDFhMDU4MzllYjZiYjY4MTkyZjA5Y2JjYWEwNWY1Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5qcwpAQCAtMCwwICsxLDEwNiBAQAorLy9A
IHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBh
c3NlcnRUaHJvd1N5bnRheEVycm9yKGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChp
bnB1dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKTsKKyAgICB9Cit9CisKKy8vIFRlc3Qg
MCBjb252ZXJzaW9ucworbGV0IG4gPSAwbjsKK2Fzc2VydChuID09PSAwbik7CisKK24gPSAwMG47
Cithc3NlcnQobiA9PT0gMG4pOworCisvLyBCaW5hcnkgcmVwcmVzZW50YXRpb24KKworbiA9IDBi
MTExMW47Cithc3NlcnQobiA9PT0gMTVuKTsKKworbiA9IDBiMTBuOworYXNzZXJ0KG4gPT09IDJu
KTsKKworbiA9IDBiMDEwbjsKK2Fzc2VydChuID09PSAybik7CisKK2xldCBiaW5hcnlTdHJpbmcg
PSAiMGIxIjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5n
ICs9ICIwIjsKKworbiA9IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAz
NDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworbiA9IDBCMTExMW47
Cithc3NlcnQobiA9PT0gMTVuKTsKKworbiA9IDBCMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKwor
YmluYXJ5U3RyaW5nID0gIjBCMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAg
IGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cith
c3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisK
Ky8vIE9jdGFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAwbzduOworYXNzZXJ0KG4gPT09IDduKTsK
KworbiA9IDBvMTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBvMjBuOworYXNzZXJ0KG4g
PT09IDE2bik7CisKK24gPSAwbzAwMDIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gME83
bjsKK2Fzc2VydChuID09PSA3bik7CisKK24gPSAwTzEwbjsKK2Fzc2VydChuID09PSA4bik7CisK
K24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gME8yMG47Cithc3NlcnQobiA9
PT0gMTZuKTsKKworLy8gSGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24KKworbiA9IDB4YW47Cith
c3NlcnQobiA9PT0gMTBuKTsKKworbiA9IDB4ZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCitu
ID0gMHgwMDBmZm47Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweGZhYmNuOworYXNzZXJ0
KG4gPT09IDY0MTg4bik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMm4iKTsKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjBiMDJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjFu
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG84OW4iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjBvMDhuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzdubiIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMHhnbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHgwZ24i
KTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Zm5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVy
cm9yKCIxMDBubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMWEwbm4iKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC10eXBlLW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1M2NkMzAxMjQ2Yjk1OGY0YzZkNGRhMTFh
ZjdjZDBhNmI0MDkyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LXR5cGUtb2YuanMKQEAgLTAsMCArMSwxMCBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVu
Y3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGFzc2VydGlvbiIpOworfQorCithc3NlcnQodHlwZW9mIDBuID09PSAiYmlnaW50Iik7Cith
c3NlcnQodHlwZW9mIDFuICE9PSAib2JqZWN0Iik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327298</attachid>
            <date>2017-11-17 19:45:13 -0800</date>
            <delta_ts>2017-11-17 20:00:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171118014447.patch</filename>
            <type>text/plain</type>
            <size>89450</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZTYyYTQzN2NhNGYxMDYx
N2EyYWI0NDVmMzBkNGFjNGYzYzVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJbnRD
b25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJl
IGludHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBp
dCBvbiBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1d
IAorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgb24gSlNC
aWdJbnQ6Om1fZGF0YSB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9ybWFuY2Ug
ZHVlIHRvIGNhY2hlIGxvY2FsaXR5IGFuZCBhbGxvd2luZworICAgICAgICA2NC1iaXR3aXNlIChv
ciAzMi1iaXR3aXNlKSBhcml0aG1ldGljIG9wZXJhdGlvbnMuIEpTQmlnSW50IGFsc28gaGFzIG1f
c2lnbgorICAgICAgICB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQgbV9s
ZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEgYXJl
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXByZXNl
bnRhdGlvbiwgSlNCaWdJbnQ6Om1fZGF0YVswXSByZXByZXNlbnRzCisgICAgICAgIHRoZSBsZWFz
dCBzaWduaWZpY2FudCBkaWdpdCBhbmQgSlNCaWdJbnQ6Om1fZGF0YVttX2xlbmd0aCAtIDFdIHJl
cHJlc2VudHMgdGhlIG1vc3QKKyAgICAgICAgc2lnaW5pZmljYW50IGRpZ2l0LgorCisgICAgICAg
IFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRjaCB0aGUgQmlnSW50IGxpdGVy
YWxzIExleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBzdXBwb3J0LiBUaGUgb3BlcmF0
aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJlaW5nCisgICAgICAgIGltcGxl
bWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2UgZmVhdHVyZXMgYXJlIGJlaW5n
IGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0tdXNlQmlnSW50IiBhbmQKKyAg
ICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vu
cy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
RGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUludCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVGcm9tVWludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9t
QW55SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb21Cb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNp
Z24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmlzWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFzQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1i
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpjbHo2NCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVLZXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnR5cGVTdHJpbmcgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZlYXR1cmUgZGVmaW5lIGZvciBhbHRlcm5hdGl2ZSBwcmVzZW50YXRpb24gYnV0dG9uIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTljNGE5OWJhYjA1MDgwN2U2
NzI2ZTE2YmIyNTlhZDAyYjI2NGQ3MC4uMmNmZjY1ODFlNDMzNTFiMDc1ODRlYTAyZTVkMWNlMTFh
YWE0NjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjksNiArMTEyOSw3
IEBACiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFBy
aXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAx
MTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZE
NEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QURE
MTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8q
IEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJN
djcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QURE
MTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBA
CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZh
dGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcw
MDExNTlGNiAvKiBKU0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0JpZ0ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3
MDAxMTU5RjYgLyogSlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNCaWdJbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNC
NjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
QTA1NDQ2MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNt
LmFzbTsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3
MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20u
YXNtOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTEtbW0ubW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UyLW1tLm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMy1tbS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5p
ZmllZFNvdXJjZTQtbW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2U1LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UyLW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UzLW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMy5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2U0LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlNC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2U1LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlNS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2U2LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTcuY3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFE
QjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFB
NTgzRjAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJD
MDY0ODgxRTFBNTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAor
CQkJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4
OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJC
QkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJC
QkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJ
CThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDFBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtOTg5OCwxNCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAv
KiB1ZGlzODZfc3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkx
MDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjcz
NUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTM2QjMxOUIxRjczNUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZB
NTQ1IC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNkIzMTlCMUY3MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmll
ZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNjYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUzMEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3
MGU0MzcuLmE1ODc4YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGlt
ZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAKK3J1bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1
bnRpbWUvSlNDSlNWYWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNh
YjYwZTJjNWY4NTgxYjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNk
ZmVjMThiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJi
YTgxMjc0NGNlYmZiNWNiZjg5NzY0OTkwZTU1MC4uNTlkNDQ2NjZhZjFmYTc2ZmRkYmZhY2FlMzkx
YWExYjk5ZDRjNGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmln
SW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNzgzLDYgKzE3ODQsMTQgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKE9wY29kZUlEIG9w
Y29kZUlELCBSZWdpc3RlcklEKiBkc3QKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoU3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAi
YmlnaW50IikgeworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKKyAgICAgICAgICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsKKyAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0OworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJvYmplY3QiKSB7CiAgICAgICAg
ICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOwogICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bf
aXNfb2JqZWN0X29yX251bGwpOwpAQCAtMzEyNSw2ICszMTM0LDE2IEBAIHVuc2lnbmVkIEJ5dGVj
b2RlR2VuZXJhdG9yOjphZGRDb25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0
dXJuIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudEJ1ZmZlcihsZW5ndGgpOwogfQogCitKU0JpZ0lu
dCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCit7CisgICAgSlNCaWdJbnQqJiBiaWdJbnRJbk1hcCA9IG1fYmlnSW50TWFw
LmFkZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlm
ICghYmlnSW50SW5NYXApIHsKKyAgICAgICAgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJ
bnQobnVsbHB0ciwgKnZtKCksIFN0cmluZ1ZpZXcoaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAg
ICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKKyAgICB9CisgICAgcmV0dXJuIGJp
Z0ludEluTWFwOworfQorCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0Nv
bnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgSlNTdHJpbmcqJiBz
dHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDJiMjQyNjQxODAzYmQ0MDUyYWU1YTJi
NmEwOTc1ZGEwNDBkNWFmN2IuLjU1ODhmNjIyNTI4NGUyMzdlMDMzYzI5N2NiMGFiMDg3YTI1NmEz
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgi
CkBAIC0xMDAyLDYgKzEwMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPiBOdW1iZXJNYXA7CiAgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+IElk
ZW50aWZpZXJTdHJpbmdNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5n
SW1wbCosIEpTQmlnSW50KiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJCaWdJbnRNYXA7
CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lz
dGVySUQqPiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogICAgICAgICAKICAgICAgICAgLy8gSGVs
cGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRoaXMgd29ya3MgYmVjYXVz
ZSB0aGUgc2V0IG9mCkBAIC0xMDg4LDYgKzEwOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICAgICAgSlNCaWdJbnQqIGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50
aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0
YW50KFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKIAogICAgICAgICBWZWN0b3I8VW5saW5r
ZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7
IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtMTE4Nyw2ICsxMTkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNl
bnRhdGlvbiwgdW5zaWduZWQsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCwg
RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoVHJhaXRzPiBKU1ZhbHVlTWFwOwog
ICAgICAgICBKU1ZhbHVlTWFwIG1fanNWYWx1ZU1hcDsKICAgICAgICAgSWRlbnRpZmllclN0cmlu
Z01hcCBtX3N0cmluZ01hcDsKKyAgICAgICAgSWRlbnRpZmllckJpZ0ludE1hcCBtX2JpZ0ludE1h
cDsKICAgICAgICAgVGVtcGxhdGVSZWdpc3RyeUtleU1hcCBtX3RlbXBsYXRlUmVnaXN0cnlLZXlN
YXA7CiAKICAgICAgICAgU3RhdGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIgeyAmbV9pbnN0cnVjdGlvbnMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1
NDBkN2ViY2E3MGRmODA4NDdmMzIwLi42MDk3MWI4YzI3MjZjZmExYzc2MTE5ZWY2MzRmYjg0Y2U4
OTgyOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6
anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBn
ZW5lcmF0b3IuYWRkU3RyaW5nQ29uc3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50
Tm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAg
IHJldHVybiBnZW5lcmF0b3IuYWRkQmlnSW50Q29uc3RhbnQobV92YWx1ZSk7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCA0Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41
ZTJjNDc2NGMyMWE3MjU3MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAg
Ym9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3Ry
dWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAg
ICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8
IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5
bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAo
IWlzU3RyaWN0TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsK
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1i
b2xzIGhlcmUgc2luY2UgZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5
YWM3YmViMDI0ZDYwMC4uZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBj
YXNlIEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJn
dW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggYjlmNzgzMDgxNzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2
ZDU4YjhlMGNlM2I3OWMzNGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAppbmRleCBhYjk1NjEzZTZlNTUyODBiY2RiMDQ4ZjIyNTJiMTI1YzMxZGYzZGFlLi43MWUxMTIw
M2Q0YWFhOGFlMWNmZmY3MjNjNWExNjc5NTg1YTc3NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjMyLDYgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIGluY0NvbnN0YW50cygpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJ
bnRlZ2VyTm9kZShsb2NhdGlvbiwgZCk7CiAgICAgfQorICAgIAorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciogYmlnSW50KQorICAgIHsKKyAgICAgICAgaW5jQ29uc3RhbnRzKCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpZ0ludE5vZGUobG9jYXRpb24sICpiaWdJbnQp
OworICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNmVlNmM1ZGJkNTlhZGUzN2Yy
ZDFiMjJkMjkxNjQ4YWQyOTZmNTQxZC4uNjMzNzE5OWE3OWI3ODI4ZWJmYmJhYjU5MjAwMzc5YmIy
ZDFhNjliOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTE1MDAs
NyArMTUwMCw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxU
Pjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJl
dHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUm
IHJldHVyblZhbHVlKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2
YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0x
NTEyLDkgKzE1MTIsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRv
dWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tbWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxl
IChpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSAmJiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0g
ICAgaWYgKG1heGltdW1EaWdpdHMgPj0gMCkgeworICAgIGlmIChtYXhpbXVtRGlnaXRzID49IDAg
JiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApICE9
ICduJykpIHsKICAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGlu
IHRoZSBoZXhWYWx1ZSBidWZmZXIuCkBAIC0xNTMzLDcgKzE1MzMsMTEgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBz
aGlmdCgpOwogICAgIH0KIAorICAgIGlmIChVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0g
J24nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHJldHVyblZhbHVlID0gcGFy
c2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTU1NCw3ICsx
NTU4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUm
IHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5h
cnlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9j
dXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIFVOTElLRUxZKChtX2N1cnJlbnQgfCAweDIwKSAhPSAn
bicpKSB7CiAgICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTE1NzIsNiArMTU3Niw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIGlmIChVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0g
J24nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUlu
dE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMTU5NCw3ICsxNjAxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIExl
eGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7
CiAgICAgfSB3aGlsZSAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAw
KTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewor
ICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBVTkxJS0VM
WShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewog
ICAgICAgICByZXR1cm5WYWx1ZSA9IG9jdGFsVmFsdWU7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTE2MTIsNiArMTYxOSw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6
cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgaWYgKFVOTElLRUxZKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3co
bV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgOCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNjM4LDcgKzE2NDgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBh
cnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAgICAgLS1kaWdpdDsKICAg
ICAgICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAK
LSAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAobV9jdXJyZW50
IHwgMHgyMCkgIT0gJ2UnKSB7CisgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAh
PSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJyAmJiBVTkxJS0VMWShPcHRpb25zOjp1
c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMjExMywxMyArMjEyMywyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNo
aWZ0IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAg
ICAgIHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKCFw
YXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSAmJiBVTkxJS0VMWShPcHRpb25zOjp1c2VC
aWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKSkgeworICAgICAgICAgICAgICAg
IHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPExDaGFyPiBjb21wbGV0ZUlkZW50OworICAgICAgICAgICAgICAgIGNvbXBsZXRl
SWRlbnQuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQo
J3gnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZChtX2J1ZmZlcjguZGF0
YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gbWFrZUlkZW50aWZpZXIoY29tcGxldGVJZGVudC5kYXRhKCksIGNvbXBsZXRlSWRlbnQuc2l6
ZSgpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1
cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIp
OwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJfRVJST1JU
T0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEt
PmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkK
KyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxMzMsMTMgKzIxNTMsMjMgQEAgc3Rh
cnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICdiJyBwcmVmaXguCiAgICAgICAgICAg
ICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUJpbmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSkgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjAp
ID09ICduJykpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIFZlY3RvcjxMQ2hhcj4gY29tcGxldGVJZGVu
dDsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnMCcpOworICAgICAgICAg
ICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCdiJyk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGVJZGVudC5hcHBlbmQobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKGNvbXBsZXRlSWRl
bnQuZGF0YSgpLCBjb21wbGV0ZUlkZW50LnNpemUoKSk7CisgICAgICAgICAgICB9OworCiAgICAg
ICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkg
bGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJN
SU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1
cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9y
SW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2Vu
VHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAg
ICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIxNTQsMTMgKzIxODQsMjMgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQg
dGhlICdvJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJz
ZU9jdGFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKCFwYXJzZU9j
dGFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpICYmIFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0lu
dCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAgICAgICAgICAgICAgdG9r
ZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICBW
ZWN0b3I8TENoYXI+IGNvbXBsZXRlSWRlbnQ7CisgICAgICAgICAgICAgICAgY29tcGxldGVJZGVu
dC5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnbycp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBt
YWtlSWRlbnRpZmllcihjb21wbGV0ZUlkZW50LmRhdGEoKSwgY29tcGxldGVJZGVudC5zaXplKCkp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVu
dCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
Tm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTgwLDI0ICsyMjIwLDMwIEBAIHN0YXJ0OgogICAg
IGNhc2UgQ2hhcmFjdGVyTnVtYmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVH
RVIgJiYgdG9rZW4gIT0gRE9VQkxFKSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwo
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVH
RVI7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3VycmVudCB8IDB4
MjApID09ICduJykpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAg
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9
IElOVEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogaW5OdW1iZXJBZnRlckRlY2ltYWxQb2lu
dDoKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwot
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
Ik5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRF
UkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBET1VCTEU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
Tm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19M
SVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBz
aXplX3QgcGFyc2VkTGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwg
cGFyc2VkTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09IElOVEVHRVIp
CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtl
VG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7Ci0gICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5z
aXplKCksIHBhcnNlZExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuID09IElOVEVH
RVIpCi0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VU
b2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEt
PmRvdWJsZVZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CmluZGV4IGQ4NDVlMmUxNGY1NjlhNGQzOGUyYzNkOTllZjZjNDY3MjMyNDMyMjAuLmFkOTA3NjQ4
YzAwZTE2ZGM0NWI2ZWU5Y2NmMGE0NDk1MzY5YTljYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzLCBMZXhlckVzY2FwZVBhcnNlTW9kZSBlc2NhcGVQYXJz
ZU1vZGU+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VDb21wbGV4RXNjYXBl
KGJvb2wgc3RyaWN0TW9kZSwgVCBzdHJpbmdRdW90ZUNoYXJhY3Rlcik7CiAgICAgQUxXQVlTX0lO
TElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSos
IFJhd1N0cmluZ3NCdWlsZE1vZGUpOwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJzZUhleChk
b3VibGUmIHJldHVyblZhbHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VIZXgoZG91
YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5KGRv
dWJsZSYgcmV0dXJuVmFsdWUpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU9jdGFsKGRv
dWJsZSYgcmV0dXJuVmFsdWUpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2ltYWwo
ZG91YmxlJiByZXR1cm5WYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0NmFkZGQ3MzliZWNl
YzhiZDE5YmYuLjU5OTU2ODRjNTU5NDQyNGUyZTZjM2RhMTQ5OTMwNGEyN2Y2M2Q3NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC05
Miw2ICs5MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5l
IEJpZ0ludE5vZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgdmFsdWUpCisgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAg
IDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAyYTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNjLi41NDk5Zjg2ZDNhZWRh
NmM3MWI1ODYwNDRlZTU2YTQ0N2YxOTg5N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmly
dHVhbCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpA
QCAtMzI4LDYgKzMyOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBD
b25zdGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Ym9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
SlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICB9OworCiAgICAgY2xhc3MgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDQ5MDg5ODU5OTNhYzFiZDU0MjZjNGExMWYwMmRhYThlOThkNTMxNTAuLmVlYzA2ZTNlMWQ1ZTc5
OTFkMDM3ZTZkZmFkMzFhOTQyZjY2MDc5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTQ0OTIsNiArNDQ5MiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHBy
ZQogCiAgICAgICAgIHJldHVybiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwg
aWRlbnQsICppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBzdGFydCwgbG9jYXRp
b24pOwogICAgIH0KKyAgICBjYXNlIEJJR0lOVDogeworICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50KTsKKyAgICB9CiAgICAgY2Fz
ZSBTVFJJTkc6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRl
eCA1MWZkNGE3YWYyZTljOGUzNTI3M2NjYzdlNzQ1OWJkNTkwOTYxNmM1Li43NzlhMDViYmY4YmY0
ZDAyOGQ1NzAyZDdlNDM2YmQ2NTdjNGQ2ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBlbnVtIEpTVG9rZW5UeXBl
IHsKICAgICBCQUNLUVVPVEUsCiAgICAgSU5URUdFUiwKICAgICBET1VCTEUsCisgICAgQklHSU5U
LAogICAgIElERU5ULAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOGRiMzVjNzc5NmY0ZDM2ZmE1
NDUyNTkxNjBkYzU4OWViODQ5ZDk1Ni4uMTUzNjI3YzAzODdmZmQzNjRiN2I3MTNjOWZjZDI4YTEw
OTdkZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhw
ciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAwMDAwMDsKICAgICBlbnVtIDogaW50IHsgTm9u
ZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2Vy
RXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBS
ZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4
cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9i
amVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJF
eHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCiAgICAgICAg
IE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsCkBAIC0x
NzUsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG91YmxlRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJsZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0
dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQmlnSW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBCaWdJbnRFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJl
dHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE5M2M5MWUwN2I1Y2E5
OGFkN2JjMzBmNDU5Y2MyNTFiZGU1NWY5OGYuLmQ2NDc2NmEzMDRmNzU3MmZkMzJjZDA1NGUxMTcy
MzkyMjM4NzQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMzAsNiArMzAsNyBAQAogICAgIG1hY3JvKEFycmF5QnVmZmVy
KSBcCiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVN
RU5UKSBcCisgICAgbWFjcm8oQmlnSW50KSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAogICAgIG1h
Y3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMDA3OTZkMzgyZjk5YmZl
Y2RjYzMyMGVmMGJhNzIxODQ4ZGIyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTAsMCArMSw1NjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFBhcnRzIG9mIHRoZSBpbXBsZW1l
bnRhdGlvbiBiZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNyB0aGUgVjggcHJvamVjdCBhdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE0IHRoZSBEYXJ0
IHByb2plY3QgYXV0aG9ycy4gIFBsZWFzZSBzZWUgdGhlIEFVVEhPUlMgZmlsZSBbMV0KKyAqIGZv
ciBkZXRhaWxzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhCisgKiBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlIFsyXS4KKyAqCisgKiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2Rh
cnQtbGFuZy9zZGsvYmxvYi9tYXN0ZXIvQVVUSE9SUworICogWzJdIGh0dHBzOi8vZ2l0aHViLmNv
bS9kYXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBDb3B5cmlnaHQgMjAw
OSBUaGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCisgKiBsaWNlbnNlIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzNdLgorICoKKyAqIFszXSBodHRwczovL2dv
bGFuZy5vcmcvTElDRU5TRQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0JpZ0ludC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKKworI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwg
IkpTQmlnSW50IGFzc3VtZXMgIiAjY29uZCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBKU0JpZ0ludDo6c19pbmZvID0KKyAgICB7ICJKU0JpZ0ludCIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCaWdJbnQpIH07CisKK3ZvaWQg
SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgaWYgKHRo
aXNPYmplY3QtPm1fZGF0YSkKKyAgICAgICAgdmlzaXRvci5tYXJrQXV4aWxpYXJ5KHRoaXNPYmpl
Y3QtPm1fZGF0YS5nZXQoKSk7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUo
Ym9vbCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBBU1NFUlQobV9kYXRhKTsKKworICAgIHNldFNp
Z24oZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlhbGl6ZSkgeworICAgICAgICB2b2lkKiBkYXRh
ID0gbV9kYXRhLmdldCgpOworICAgICAgICBtZW1zZXQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
ZGF0YSksIDAsIGxlbmd0aCgpICogRGlnaXRTaXplKTsKKyAgICB9Cit9CisKKy8vIERpZ2l0IGFy
aXRobWV0aWMgaGVscGVycy4KKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEhBVkVf
VFdPRElHSVRfVCAxCit0eXBlZGVmIHVpbnQ2NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQx
MjhfVCkKKyNkZWZpbmUgSEFWRV9UV09ESUdJVF9UIDEKK3R5cGVkZWYgX191aW50MTI4X3QgVHdv
RGlnaXQ7CisjZW5kaWYKKworLy8ge2NhcnJ5fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxpemVk
IERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxlZnQg
YWxvbmUuCitpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdEFkZChEaWdpdCBh
LCBEaWdpdCBiLCBEaWdpdCogY2FycnkpCit7CisjaWYgSEFWRV9UV09ESUdJVF9UCisgICAgVHdv
RGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdv
RGlnaXQ+KGIpOworICAgICpjYXJyeSArPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdpdCByZXN1bHQg
PSBhICsgYjsKKworICAgIGlmIChyZXN1bHQgPCBhKQorICAgICAgICAqY2FycnkgKz0gMTsKKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKy8vIHtib3Jyb3d9IG11c3QgcG9p
bnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVk
CisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK2lubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJ
bnQ6OmRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBib3Jyb3cpCit7CisjaWYgSEFW
RV9UV09ESUdJVF9UCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+
KGEpIC0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgICpib3Jyb3cgKz0gKHJlc3VsdCA+
PiBEaWdpdEJpdHMpICYgMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJl
c3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgLSBiOworICAgIGlmIChyZXN1bHQg
PiBhKQorICAgICAgICAqYm9ycm93ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERpZ2l0PihyZXN1bHQpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9m
IHRoZSByZXN1bHQuIEhpZ2ggaGFsZiBpcyBpbiB7aGlnaH0uCitpbmxpbmUgSlNCaWdJbnQ6OkRp
Z2l0IEpTQmlnSW50OjpkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogaGlnaCkKK3sK
KyNpZiBIQVZFX1RXT0RJR0lUX1QKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxU
d29EaWdpdD4oYSkgKiBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgKmhpZ2ggPSByZXN1
bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQp
OworI2Vsc2UKKyAgICAvLyBNdWx0aXBseSBpbiBoYWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgor
ICAgIC8vIEZvciBpbnB1dHMgW0FIIEFMXSpbQkggQkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8v
CisgICAgLy8gICAgICAgICAgICBbQUwqQkxdICAvLyByTG93CisgICAgLy8gICAgKyAgICBbQUwq
QkhdICAgICAvLyByTWlkMQorICAgIC8vICAgICsgICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAg
ICAvLyAgICArIFtBSCpCSF0gICAgICAgIC8vIHJIaWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIg
UjFdICAvLyBoaWdoID0gW1I0IFIzXSwgbG93ID0gW1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hl
cmUgb2YgY291cnNlIHdlIG11c3QgYmUgY2FyZWZ1bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUg
Y29sdW1ucy4KKyAgICBEaWdpdCBhTG93ICA9IGEgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0
IGFIaWdoID0gYSA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IGJMb3cgID0gYiAmIEhhbGZE
aWdpdE1hc2s7CisgICAgRGlnaXQgYkhpZ2ggPSBiID4+IEhhbGZEaWdpdEJpdHM7CisgICAgCisg
ICAgRGlnaXQgckxvdyAgPSBhTG93ICogYkxvdzsKKyAgICBEaWdpdCByTWlkMSA9IGFMb3cgKiBi
SGlnaDsKKyAgICBEaWdpdCByTWlkMiA9IGFIaWdoICogYkxvdzsKKyAgICBEaWdpdCBySGlnaCA9
IGFIaWdoICogYkhpZ2g7CisgICAgCisgICAgRGlnaXQgY2FycnkgPSAwOworICAgIERpZ2l0IGxv
dyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8IEhhbGZEaWdpdEJpdHMsICZjYXJyeSk7CisgICAg
bG93ID0gZGlnaXRBZGQobG93LCByTWlkMiA8PCBIYWxmRGlnaXRCaXRzLCAmY2FycnkpOworCisg
ICAgKmhpZ2ggPSAock1pZDEgPj4gSGFsZkRpZ2l0Qml0cykgKyAock1pZDIgPj4gSGFsZkRpZ2l0
Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisgICAgcmV0dXJuIGxvdzsKKyNlbmRpZgorfQorCisv
LyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBvZiB7ZXhwb25lbnR9LiBEb2VzIG5vdCBjaGVj
ayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0UG93KERpZ2l0
IGJhc2UsIERpZ2l0IGV4cG9uZW50KQoreworICAgIERpZ2l0IHJlc3VsdCA9IDF1bGw7CisgICAg
d2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAgICAgICBpZiAoZXhwb25lbnQgJiAxKQorICAgICAg
ICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAgICAgZXhwb25lbnQgPj49IDE7CisgICAgICAg
IGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1
cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50ID0gKGhpZ2ggPDwgRGlnaXRCaXRzICsgbG93
IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRE
aXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLCBEaWdpdCogcmVtYWluZGVy
KQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNvcik7CisjaWYgQ1BVKFg4Nl82NCkgJiYgQ09N
UElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsK
KyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVv
dGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBpbiByZHguCisgICAgICAgIDogIj1hIihxdW90
aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byByZHgs
IHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lz
dGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlz
b3JdICJybSIoZGl2aXNvcikpOworICAgICpyZW1haW5kZXIgPSByZW07CisgICAgcmV0dXJuIHF1
b3RpZW50OworI2VsaWYgQ1BVKFg4NikgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERp
Z2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZsICAlW2Rpdmlz
b3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gZWF4LCB7cmVt
fSBpbiBlZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAv
LyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byBlZHgsIHtsb3d9IGludG8gZWF4LCBhbmQge2Rpdmlz
b3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAg
IDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgICpy
ZW1haW5kZXIgPSByZW07CisgICAgcmV0dXJuIHF1b3RpZW50OworI2Vsc2UKKyAgICBzdGF0aWMg
Y29uc3QgRGlnaXQga0hhbGZEaWdpdEJhc2UgPSAxdWxsIDw8IEhhbGZEaWdpdEJpdHM7CisgICAg
Ly8gQWRhcHRlZCBmcm9tIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgcC4gMTUyLgorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgaW50IHMgPSBjbHo2NChkaXZpc29yKTsKKyNlbHNlCisgICAgaW50
IHMgPSBjbHozMihkaXZpc29yKTsKKyNlbmRpZgorICAgIGRpdmlzb3IgPDw9IHM7CisgICAgCisg
ICAgRGlnaXQgdm4xID0gZGl2aXNvciA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHZuMCA9
IGRpdmlzb3IgJiBIYWxmRGlnaXRNYXNrOworCisgICAgLy8ge3N9IGNhbiBiZSAwLiAibG93ID4+
IERpZ2l0Qml0cyA9PSBsb3ciIG9uIHg4Niwgc28gd2UgIiYiIGl0IHdpdGgKKyAgICAvLyB7c196
ZXJvX21hc2t9IHdoaWNoIGlzIDAgaWYgcyA9PSAwIGFuZCBhbGwgMS1iaXRzIG90aGVyd2lzZS4K
KyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihpbnRwdHJfdCkgPT0gc2l6ZW9mKERpZ2l0KSk7Cisg
ICAgRGlnaXQgc1plcm9NYXNrID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PGludHB0
cl90PigtcykgPj4gKERpZ2l0Qml0cyAtIDEpKTsKKyAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwg
cykgfCAoKGxvdyA+PiAoRGlnaXRCaXRzIC0gcykpICYgc1plcm9NYXNrKTsKKyAgICBEaWdpdCB1
bjEwID0gbG93IDw8IHM7CisgICAgRGlnaXQgdW4xID0gdW4xMCA+PiBIYWxmRGlnaXRCaXRzOwor
ICAgIERpZ2l0IHVuMCA9IHVuMTAgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IHExID0gdW4z
MiAvIHZuMTsKKyAgICBEaWdpdCByaGF0ID0gdW4zMiAtIHExICogdm4xOworCisgICAgd2hpbGUg
KHExID49IGtIYWxmRGlnaXRCYXNlIHx8IHExICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNl
ICsgdW4xKSB7CisgICAgICAgIHExLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBp
ZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIERpZ2l0IHVuMjEgPSB1bjMyICoga0hhbGZEaWdpdEJhc2UgKyB1bjEgLSBxMSAqIGRpdmlz
b3I7CisgICAgRGlnaXQgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAgKiB2
bjE7CisKKyAgICB3aGlsZSAocTAgPj0ga0hhbGZEaWdpdEJhc2UgfHwgcTAgKiB2bjAgPiByaGF0
ICoga0hhbGZEaWdpdEJhc2UgKyB1bjApIHsKKyAgICAgICAgcTAtLTsKKyAgICAgICAgcmhhdCAr
PSB2bjE7CisgICAgICAgIGlmIChyaGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgKnJlbWFpbmRlciA9ICh1bjIxICoga0hhbGZEaWdpdEJhc2Ug
KyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAgcmV0dXJuIHExICoga0hhbGZEaWdpdEJh
c2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBsaWVzIHtzb3VyY2V9IHdpdGgge2ZhY3Rv
cn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCisvLyB7cmVzdWx0fSBhbmQge3Nv
dXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3IgaW5wbGFjZSBtb2RpZmljYXRpb24uCit2
b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0
IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpTQmlnSW50KiByZXN1bHQpCit7CisgICAg
QVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3Ro
KCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1bW1hbmQ7CisgICAgRGlnaXQgaGlnaCA9
IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgRGlnaXQgY3Vy
cmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAgIERpZ2l0IG5ld0NhcnJ5ID0gMDsKKwor
ICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBtdWx0aXBsaWNhdGlvbi4KKyAgICAgICAg
RGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJlbnQgPSBkaWdpdE11bChjdXJyZW50LCBm
YWN0b3IsICZuZXdIaWdoKTsKKworICAgICAgICAvLyBBZGQgbGFzdCByb3VuZCdzIGNhcnJ5b3Zl
cnMuCisgICAgICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJyZW50LCBoaWdoLCAmbmV3Q2Fycnkp
OworICAgICAgICBjdXJyZW50ID0gZGlnaXRBZGQoY3VycmVudCwgY2FycnksICZuZXdDYXJyeSk7
CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVwYXJlIGZvciBuZXh0IHJvdW5kLgor
ICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQpOworICAgICAgICBjYXJyeSA9IG5l
d0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0
LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyssIGNhcnJ5ICsg
aGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJzIGRvbid0IHBhc3MgaW4gc3VjaCBs
YXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0LgorICAgICAgICB3aGlsZSAobiA8IHJl
c3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERpZ2l0KG4rKywgMCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoY2FycnkgKyBoaWdoKSk7Cit9CisK
Ky8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRv
IHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQodWludHB0cl90
IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2Yo
ZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihzdW1t
YW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlwbHlBZGQodGhpcywg
ZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVx
dWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWdu
KCkgIT0geS0+c2lnbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVu
Z3RoKCkgIT0geS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQo
aSkgIT0geS0+ZGlnaXQoaSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERpdmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJu
aW5nIHRoZSByZXN1bHQgaW4ge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1h
dGljYWxseSwgdGhlIGNvbnRyYWN0IGlzOgorLy8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikg
LyBkaXZpc29yLCB3aXRoIDAgPD0gcmVtYWluZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVu
dH0gaXMgYW4gZW1wdHkgaGFuZGxlLCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxs
IGJlCisvLyBhbGxvY2F0ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3Vy
ZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2guCisvLyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBh
cyB7eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlzaW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBi
ZSBudWxscHRyIGlmIHRoZSBjYWxsZXIgaXMgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5k
ZXIuCit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0KiByZW1h
aW5kZXIpCit7CisgICAgQVNTRVJUKGRpdmlzb3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKKyAgICAqcmVtYWluZGVyID0gMDsKKyAgICBp
ZiAoZGl2aXNvciA9PSAxKSB7CisgICAgICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKQorICAg
ICAgICAgICAgKnF1b3RpZW50ID0geDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlu
dCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikgewor
ICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgICpxdW90aWVudCA9IEpT
QmlnSW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQg
aSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBEaWdpdCBxID0gZGln
aXREaXYoKnJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAg
ICAgICAgICAoKnF1b3RpZW50KS0+c2V0RGlnaXQoaSwgcSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisgICAg
ICAgICAgICBkaWdpdERpdigqcmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWlu
ZGVyKTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVy
IG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFycmF5
CisvLyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdlbmVy
YXRlIHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHByaW50
KE1hdGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWludDhf
dCBNYXhCaXRzUGVyQ2hhcltdID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwg
IDgzLCAgOTAsICA5NiwgIC8vIDAuLjgKKyAgICAxMDIsIDEwNywgMTExLCAxMTUsIDExOSwgMTIy
LCAxMjYsIDEyOCwgICAgICAvLyA5Li4xNgorICAgIDEzMSwgMTM0LCAxMzYsIDEzOSwgMTQxLCAx
NDMsIDE0NSwgMTQ3LCAgICAgIC8vIDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2
LCAxNTgsIDE1OSwgMTYwLCAgICAgIC8vIDI1Li4zMgorICAgIDE2MiwgMTYzLCAxNjUsIDE2Niwg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMzLi4zNgorfTsKKworc3RhdGljIGNvbnN0IGlu
dCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQgPSA1Oworc3RhdGljIGNvbnN0IHNpemVfdCBCaXRzUGVy
Q2hhclRhYmxlTXVsdGlwbGllciA9IDF1IDw8IEJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKworSlNC
aWdJbnQqIEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50
IHJhZGl4LCBpbnQgY2hhcmNvdW50KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4
IDw9IDM2KTsKKyAgICBBU1NFUlQoY2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gTWF4
Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHNpemVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNpemVf
dD4oY2hhcmNvdW50KTsKKyAgICBjb25zdCBpbnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFibGVN
dWx0aXBsaWVyIC0gMTsKKyAgICBpZiAoY2hhcnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgLSByb3VuZHVwKSAvIGJpdHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVfdCBi
aXRzTWluID0gYml0c1BlckNoYXIgKiBjaGFyczsKKworICAgICAgICAvLyBEaXZpZGUgYnkgMzIg
KHNlZSB0YWJsZSksIHJvdW5kaW5nIHVwLgorICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4gKyBy
b3VuZHVwKSA+PiBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWluIDw9
IHN0YXRpY19jYXN0PHNpemVfdD4oTWF4SW50KSkgeworICAgICAgICAgICAgLy8gRGl2aWRlIGJ5
IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAoc3Rh
dGljX2Nhc3Q8aW50PihiaXRzTWluKSArIERpZ2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOworICAg
ICAgICAgICAgaWYgKGxlbmd0aCA8PSBKU0JpZ0ludDo6TWF4TGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0
aCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChleGVjKQorICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgY29uc3QgY2hh
ciBDb252ZXJzaW9uQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXoiOworCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIGludCByYWRpeCkKK3sKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHRCdWlsZGVyOworICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZCgn
MCcpOworICAgICAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdG9TdHJpbmdHZW5lcmljKGV4ZWMsIHgsIHJhZGl4KTsKK30KKwor
U3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgaW50IHJhZGl4KQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0QnVpbGRlcjsKKwor
ICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoIXgtPmlz
WmVybygpKTsKKworICAgIGNvbnN0IGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBjb25z
dCBib29sIHNpZ24gPSB4LT5zaWduKCk7CisKKyAgICAvLyBDb21wdXRlIChhbiBvdmVyYXBwcm94
aW1hdGlvbiBvZikgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZzoKKyAgICAvLyBE
aXZpZGUgYml0IGxlbmd0aCBvZiB0aGUgQmlnSW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIg
Y2hhcmFjdGVyLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNs
ejY0KHgtPmRpZ2l0KGxlbmd0aCAtIDEpKTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9
IGNsejMyKHgtPmRpZ2l0KGxlbmd0aCAtIDEpKTsKKyNlbmRpZgorICAgIGNvbnN0IHNpemVfdCBi
aXRMZW5ndGggPSBsZW5ndGggKiBEaWdpdEJpdHMgLSBsZWFkaW5nWmVyb3M7CisKKyAgICAvLyBN
YXhpbXVtIG51bWJlciBvZiBiaXRzIHdlIGNhbiByZXByZXNlbnQgd2l0aCBvbmUgY2hhcmFjdGVy
LiBXZSdsbCB1c2UgdGhpcworICAgIC8vIHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgY2h1bmsgc2l6
ZSBiZWxvdy4KKyAgICBjb25zdCB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNo
YXJbcmFkaXhdOworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVzdWx0IGxlbmd0aCwgd2UgaGF2
ZSB0byBiZSBwZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAgLy8gdGhlIG1pbmltdW0gbnVt
YmVyIG9mIGJpdHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50LgorICAgIGNvbnN0IHVpbnQ4
X3QgbWluQml0c1BlckNoYXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAgICAvLyBQZXJmb3Jt
IHRoZSBmb2xsb3dpbmcgY29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBhdm9pZCBvdmVyZmxv
d3MuCisgICAgdWludDY0X3QgY2hhcnNSZXF1aXJlZCA9IGJpdExlbmd0aDsKKyAgICBjaGFyc1Jl
cXVpcmVkICo9IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyOworCisgICAgLy8gUm91bmQgdXAu
CisgICAgY2hhcnNSZXF1aXJlZCArPSBtaW5CaXRzUGVyQ2hhciAtIDE7CisgICAgY2hhcnNSZXF1
aXJlZCAvPSBtaW5CaXRzUGVyQ2hhcjsKKyAgICBjaGFyc1JlcXVpcmVkICs9IHNpZ247CisKKyAg
ICBpZiAoY2hhcnNSZXF1aXJlZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiByZXN1bHRCdWls
ZGVyLnRvU3RyaW5nKCkuaW1wbCgpOworICAgIH0KKworICAgIGludCBwb3MgPSAwOworCisgICAg
Ly8gV2UgYXJlIG9rIHRvIGNhc3QsIGJlY2F1c2UgaGVyZSBjaGFyc1JlcXVpcmVkIDw9IEpTU3Ry
aW5nOjpNYXhMZW5ndGgKKyAgICByZXN1bHRCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNoYXJzUmVxdWlyZWQpKTsKKworICAgIERpZ2l0IGxhc3REaWdpdDsKKyAg
ICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRpZ2l0KDApOworICAg
IGVsc2UgeworICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAqIEJpdHNQZXJDaGFy
VGFibGVNdWx0aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERpZ2l0IGNodW5rRGl2
aXNvciA9IGRpZ2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAgICAvLyBCeSBjb25z
dHJ1Y3Rpb24gb2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVuIG92ZXJmbG93Lgor
ICAgICAgICBBU1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5vblplcm9EaWdpdCA9
IGxlbmd0aCAtIDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKwor
ICAgICAgICAvLyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0ludCB0aGF0IHdlIGhh
dmVuJ3QgbG9va2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgg
InJlbWFpbmRlciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0cjsKKworICAgICAg
ICAvLyBJbiB0aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFsbG9jYXRpbmcgYSBu
ZXcgQmlnSW50IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7IGZyb20gdGhlbiBv
biBkaXZpZGUgdGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50KiogZGl2aWRlbmQg
PSAmeDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7CisgICAgICAgICAg
ICBhYnNvbHV0ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwg
JmNodW5rKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN0KTsKKworICAgICAgICAgICAgZGl2aWRl
bmQgPSAmcmVzdDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2h1bmtDaGFyczsg
aSsrKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoQ29udmVyc2lvbkNo
YXJzW2NodW5rICUgcmFkaXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRpeDsKKyAg
ICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCgh
Y2h1bmspOworCisgICAgICAgICAgICBpZiAoIXJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpCisg
ICAgICAgICAgICAgICAgbm9uWmVyb0RpZ2l0LS07CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBu
ZXZlciBjbGVhciBtb3JlIHRoYW4gb25lIGRpZ2l0IHBlciBpdGVyYXRpb24sIGJlY2F1c2UKKyAg
ICAgICAgICAgIC8vIGNodW5rRGl2aXNvciBpcyBzbWFsbGVyIHRoYW4gbWF4IGRpZ2l0IHZhbHVl
LgorICAgICAgICAgICAgQVNTRVJUKHJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworICAgICAg
ICB9IHdoaWxlIChub25aZXJvRGlnaXQgPiAwKTsKKworICAgICAgICBsYXN0RGlnaXQgPSByZXN0
LT5kaWdpdCgwKTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBw
ZW5kKENvbnZlcnNpb25DaGFyc1tsYXN0RGlnaXQgJSByYWRpeF0pOworICAgICAgICBsYXN0RGln
aXQgLz0gcmFkaXg7CisgICAgICAgIHBvcysrOworICAgIH0gd2hpbGUgKGxhc3REaWdpdCA+IDAp
OworICAgIEFTU0VSVChwb3MpOworICAgIEFTU0VSVChwb3MgPD0gc3RhdGljX2Nhc3Q8aW50Pihj
aGFyc1JlcXVpcmVkKSk7CisKKyAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvZXMuCisgICAgd2hp
bGUgKHBvcyA+IDEgJiYgcmVzdWx0QnVpbGRlcltwb3MgLSAxXSA9PSAnMCcpCisgICAgICAgIHBv
cy0tOworCisgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoJy0n
KTsKKyAgICAgICAgcG9zKys7CisgICAgfQorCisgICAgLy8gUmV2ZXJzZSB0aGUgc3RyaW5nLgor
ICAgIFN0cmluZ0J1aWxkZXIgcmV2ZXJzZUJ1aWxkZXI7CisgICAgcmV2ZXJzZUJ1aWxkZXIucmVz
ZXJ2ZUNhcGFjaXR5KHN0YXRpY19jYXN0PHNpemVfdD4oY2hhcnNSZXF1aXJlZCkpOworICAgIGZv
ciAoaW50IGkgPSBwb3MgLSAxOyBpID49IDA7IGktLSkKKyAgICAgICAgcmV2ZXJzZUJ1aWxkZXIu
YXBwZW5kKHJlc3VsdEJ1aWxkZXJbaV0pOworCisgICAgcmV0dXJuIHJldmVyc2VCdWlsZGVyLnRv
U3RyaW5nKCkuaW1wbCgpOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlND
ZWxsKiBjZWxsKQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50
Kj4oY2VsbCk7CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNpemUgPSB0aGlzT2JqZWN0LT5t
X2xlbmd0aCAqIERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxs
KSArIGJ1ZmZlckVzdGltYXRlZFNpemU7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OnJpZ2h0VHJpbShW
TSYgdm0pCit7CisgICAgaWYgKHRoaXMtPmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbnQgbm9uWmVyb0luZGV4ID0gbV9sZW5ndGggLSAxOworICAgIHdoaWxlIChub25aZXJvSW5k
ZXggPj0gMCAmJiAhdGhpcy0+ZGlnaXQobm9uWmVyb0luZGV4KSkKKyAgICAgICAgbm9uWmVyb0lu
ZGV4LS07CisKKyAgICBpZiAobm9uWmVyb0luZGV4ID09IG1fbGVuZ3RoIC0gMSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaW50IG5ld0xlbmd0aCA9IG5vblplcm9JbmRleCArIDE7CisgICAgdm9p
ZCogYmFja2luZ1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCku
dHJ5QWxsb2NhdGUoc2l6ZUZvcihuZXdMZW5ndGgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYWNr
aW5nU3RvcmUpOworICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihiYWNraW5n
U3RvcmUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmV3TGVuZ3RoOyBpKyspCisgICAgICAg
IGRhdGFbaV0gPSB0aGlzLT5kaWdpdChpKTsKKworICAgIG1fZGF0YS5zZXQodm0sIHRoaXMsIGRh
dGEpOworICAgIG1fbGVuZ3RoID0gbmV3TGVuZ3RoOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMjc4
Mjg0Yzc5ODYxNmM1Y2FiMTYyNWFmMjE5YmQ0MWUxNmU3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0wLDAgKzEsMzUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSlNCaWdJbnQgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworCitwdWJsaWM6CisKKyAgICBKU0JpZ0ludChWTSYsIFN0cnVj
dHVyZSosIGludCBsZW5ndGgpOworCisgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgemVyb0luaXRp
YWxpemUpOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworCisg
ICAgaW5saW5lIHN0YXRpYyBpbnQgc2l6ZUZvcihpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGxlbmd0aCAqIERpZ2l0U2l6ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0
ZVplcm8oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCisgICAgeworICAgICAgICBKU0JpZ0ludCog
emVyb0JpZ0ludCA9IGNyZWF0ZShleGVjLCB2bSwgMCk7CisgICAgICAgIHplcm9CaWdJbnQtPnNl
dFNpZ24oZmFsc2UpOworICAgICAgICByZXR1cm4gemVyb0JpZ0ludDsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IGxlbmd0
aCkKKyAgICB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1
cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
dm0pOworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0lu
dCogY3JlYXRlRnJvbUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50MzJfdCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVy
byhleGVjLCB2bSk7CisKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0
cnVjdHVyZS5nZXQoKSwgMSk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywg
dm0pOworCisgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KC0xICogdmFsdWUpKTsKKyAgICAgICAgICAgIGJp
Z0ludC0+c2V0U2lnbih0cnVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiaWdJbnQt
PnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkpOworCisgICAgICAgIHJldHVy
biBiaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tVWludChF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgdWludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisg
ICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Jp
Z0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEp
OworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
QW55SW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZt
KTsKKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0lu
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJ
bnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQoKSwgMSk7CisgICAgICAgIGJpZ0ludC0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgdm0pOworCisgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAg
ICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KC0xICogdmFsdWUp
KTsKKyAgICAgICAgICAgIGJpZ0ludC0+c2V0U2lnbih0cnVlKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pih2YWx1ZSkp
OworI2Vsc2UKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVy
ZS5nZXQoKSwgMik7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOwor
CisgICAgICAgIGJvb2wgc2lnbiA9IGZhbHNlOworICAgICAgICBpZiAodmFsdWUgPCAwKSB7Cisg
ICAgICAgICAgICB2YWx1ZSAqPSAtMTsKKyAgICAgICAgICAgIHNpZ24gPSB0cnVlOworICAgICAg
ICB9CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyAgPSBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUg
JiAweGZmZmZmZmZmKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdp
dD4oKHZhbHVlID4+IDMyKSAmIDB4ZmZmZmZmZmYpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGln
aXQoMCwgbG93Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOwor
ICAgICAgICBiaWdJbnQtPnNldFNpZ24oc2lnbik7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAg
IHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
Qm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgYm9vbCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7
CisKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQo
KSwgMSk7CisgICAgICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOworICAgICAg
ICBiaWdJbnQtPnNldERpZ2l0KDAsIDEpOworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0K
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworCisgICAgICAgIGlmIChtX2xlbmd0aCkgeworICAgICAgICAgICAgdm9pZCogYmFj
a2luZ1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5QWxs
b2NhdGUoc2l6ZUZvcihtX2xlbmd0aCkpOworICAgICAgICAgICAgRGlnaXQqIGRhdGEgPSBzdGF0
aWNfY2FzdDxEaWdpdCo+KGJhY2tpbmdTdG9yZSk7CisgICAgICAgICAgICBpZiAoIWRhdGEpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZGF0YS5z
ZXQodm0sIHRoaXMsIGRhdGEpOworICAgICAgICB9CisgICAgfQorCisgICAgSlNWYWx1ZSB0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2lnbiA9IHNpZ247IH0KKyAgICBib29sIHNp
Z24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKworICAgIHZvaWQgc2V0TGVuZ3RoKGludCBs
ZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KiwgSlNCaWdJbnQqLCBpbnQgcmFkaXgpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUlu
dChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RyaW5nVmlldyBzKQorICAgIHsKKyAgICAgICAg
aWYgKHMuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMs
IHMuY2hhcmFjdGVyczgoKSk7CisgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgcywg
cy5jaGFyYWN0ZXJzMTYoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWxUb0JpZ0lu
dChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKwor
ICAgIGJvb2wgaXNaZXJvKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGgoKSB8fCAhc2ln
bigpKTsKKyAgICAgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7CisgICAgfQorCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgQ2hhclR5cGUqICBkYXRhKQorICAg
IHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHMubGVuZ3RoKCk7CisKKyAgICAgICAgaW50IHAgPSAw
OworICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkp
CisgICAgICAgICAgICArK3A7CisKKyAgICAgICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBj
aGFyYWN0ZXJzCisgICAgICAgIGlmIChwICsgMSA8IGxlbmd0aCkgeworICAgICAgICAgICAgaWYg
KGRhdGFbcF0gPT0gJzAnICYmIChkYXRhW3AgKyAxXSA9PSAnYicgfHwgZGF0YVtwICsgMV0gPT0g
J0InKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIGRhdGEsIGxl
bmd0aCwgcCArIDIsIDIsIGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKGRhdGFbcF0gPT0gJzAn
ICYmIChkYXRhW3AgKyAxXSA9PSAneCcgfHwgZGF0YVtwICsgMV0gPT0gJ1gnKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDE2
LCBmYWxzZSk7CisKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsg
MV0gPT0gJ28nIHx8IGRhdGFbcCArIDFdID09ICdPJykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCA4LCBmYWxzZSk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICAgICAgaWYgKHAgPCBsZW5n
dGgpIHsKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICAgICAr
K3A7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICAgICAg
ICAgIHNpZ24gPSB0cnVlOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChleGVjLCB2bSwg
ZGF0YSwgbGVuZ3RoLCBwLCAxMCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5p
c1plcm8oKSkKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2lnbihzaWduKTsKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
KyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBD
aGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRpeCwgYm9v
bCBhbGxvd0VtcHR5U3RyaW5nID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGgg
Pj0gMCk7CisgICAgICAgIGludCBwID0gc3RhcnRJbmRleDsKKworICAgICAgICBpZiAoIWFsbG93
RW1wdHlTdHJpbmcgJiYgc3RhcnRJbmRleCA9PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCisgICAgICAgIHdo
aWxlIChwIDwgbGVuZ3RoICYmIGRhdGFbcF0gPT0gJzAnKQorICAgICAgICAgICAgKytwOworCisg
ICAgICAgIGludCBlbmRJbmRleCA9IGxlbmd0aCAtIDE7CisgICAgICAgIC8vIFJlbW92aW5nIHRy
YWlsaW5nIHNwYWNlcworICAgICAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBpc1N0cldoaXRl
U3BhY2UoZGF0YVtlbmRJbmRleF0pKQorICAgICAgICAgICAgLS1lbmRJbmRleDsKKworICAgICAg
ICBsZW5ndGggPSBlbmRJbmRleCArIDE7CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIGludCBsaW1p
dDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgICAgICBpbnQgbGltaXRh
ID0gJ2EnICsgKHJhZGl4IC0gMTApOworICAgICAgICBpbnQgbGltaXRBID0gJ0EnICsgKHJhZGl4
IC0gMTApOworCisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihleGVjLCB2
bSwgcmFkaXgsIGxlbmd0aCAtIHApOworICAgICAgICByZXN1bHQtPmluaXRpYWxpemUodHJ1ZSk7
CisKKyAgICAgICAgZm9yIChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAg
ICAgICAgICB1aW50MzJfdCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAm
JiBkYXRhW2ldIDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcw
JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1p
dGEpCisgICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAg
ICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0
aXBseUFkZChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0
cl90PihkaWdpdCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7Cisg
ICAgICAgICAgICByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
c3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwg
aW50IGNoYXJjb3VudCk7CisKKyAgICB0eXBlZGVmIHVpbnRwdHJfdCBEaWdpdDsKKyAgICBzdGF0
aWMgY29uc3QgaW50IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29uc3QgaW50IERpZ2l0
U2l6ZSA9IHNpemVvZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdpdEJpdHMgPSBE
aWdpdFNpemUgKiBCaXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50IEhhbGZEaWdpdEJp
dHMgPSBEaWdpdEJpdHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBIYWxmRGlnaXRNYXNr
ID0gKDF1bGwgPDwgSGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4
SW50ID0gMHg3RkZGRkZGRjsKKworcHVibGljOgorCisgICAgLy8gVGhlIG1heGltdW0gbGVuZ3Ro
IHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgd291bGQgYmUKKyAgICAv
LyBNYXhJbnQgLyBEaWdpdEJpdHMuIEhvd2V2ZXIsIHdlIHVzZSBhIGxvd2VyIGxpbWl0IGZvciBu
b3csIGJlY2F1c2UKKyAgICAvLyByYWlzaW5nIGl0IGxhdGVyIGlzIGVhc2llciB0aGFuIGxvd2Vy
aW5nIGl0LgorICAgIC8vIFN1cHBvcnQgdXAgdG8gMSBtaWxsaW9uIGJpdHMuCisgICAgc3RhdGlj
IGNvbnN0IGludCBNYXhMZW5ndGggPSAxMDI0ICogMTAyNCAvIChzaXplb2Yodm9pZCopICogQml0
c1BlckJ5dGUpOworCitwcml2YXRlOgorCisgICAgdm9pZCByaWdodFRyaW0oVk0mKTsKKworICAg
IC8vIERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KKyAgICBzdGF0aWMgaW5saW5lIERpZ2l0IGRp
Z2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBjYXJyeSk7CisgICAgc3RhdGljIGlubGlu
ZSBEaWdpdCBkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogYm9ycm93KTsKKyAgICBz
dGF0aWMgaW5saW5lIERpZ2l0IGRpZ2l0TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBoaWdo
KTsKKyAgICBzdGF0aWMgaW5saW5lIERpZ2l0IGRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxv
dywgRGlnaXQgZGl2aXNvciwgRGlnaXQqIHJlbWFpbmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRp
Z2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsKKworICAgIHN0YXRpYyB2b2lkIGFi
c29sdXRlRGl2U21hbGwoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpT
QmlnSW50KiogcXVvdGllbnQsIERpZ2l0KiByZW1haW5kZXIpOworCisgICAgdm9pZCBpbnRlcm5h
bE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFu
ZCwgaW50LCBKU0JpZ0ludCogcmVzdWx0KTsKKyAgICB2b2lkIGlucGxhY2VNdWx0aXBseUFkZChE
aWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKworICAgIGlubGluZSBEaWdpdCBkaWdpdChp
bnQgbikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkYXRhUHRyID0gbV9kYXRhLmdl
dCgpOworICAgICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9p
ZCBzZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobiA+
PSAwICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChtX2RhdGEpOworICAgICAgICBE
aWdpdCogZGlnaXRQdHIgPSBtX2RhdGEuZ2V0KCk7CisgICAgICAgIGRpZ2l0UHRyW25dID0gdmFs
dWU7CisgICAgfQorCisgICAgYm9vbCBtX3NpZ247CisgICAgaW50IG1fbGVuZ3RoOworICAgIENh
Z2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOworfTsKKwor
aW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2
YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+
KHZhbHVlLmFzQ2VsbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGQwMzA0NTIyMGQ1ZTk1MjY3
ZWQ5ZjhmN2I5ZDMzNjVhODMxNzlkZDMuLjRlOTY2MDE0YzVlMTRhOWZjOTc1ZDNkYWQyZTk2NWUx
YmRiNDU0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0zNzYsNiArMzc3LDEyIEBAIEpTU3Ry
aW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZXR1
cm5FbXB0eVN0cmluZ09uRXJyCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOwogICAg
ICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwogICAgIH0KKyAgICBpZiAoaXNCaWdJbnQoKSkgewor
ICAgICAgICBTdHJpbmcgYmlnSW50U3RyaW5nID0gSlNCaWdJbnQ6OnRvU3RyaW5nKGV4ZWMsIGFz
QmlnSW50KGFzQ2VsbCgpKSwgMTApOworICAgICAgICBpZiAoYmlnSW50U3RyaW5nLmxlbmd0aCgp
ID09IDEpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3Rl
clN0cmluZyhiaWdJbnRTdHJpbmdbMF0pOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKCZ2bSwgYmlnSW50U3RyaW5nKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBj
MjRlYTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5YTNjN2RlMDc3ZDIz
ZGUwMmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bnlJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0
cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2VlYmEyM2NmY2YyODNm
ZmQ1ZmExMDRjNzcuLjI3OTA1N2EzNTYyNjRhMGQ1NjFjYjk5MGU3YTkyOGQyYzYwNDZkNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxs
KCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
QmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmln
SW50KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC03MTUsMTAgKzcy
MSwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRl
KiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZQogCiBBTFdBWVNfSU5MSU5FIGRvdWJsZSBK
U1ZhbHVlOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgICBpZiAoaXNE
b3VibGUoKSkKICAgICAgICAgcmV0dXJuIGFzRG91YmxlKCk7CisgICAgaWYgKGlzQmlnSW50KCkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fz
dCBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiIpKTsKKyAgICAgICAg
cmV0dXJuIFBOYU47CisgICAgfQorCiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZXhlYyk7
CiB9CiAKQEAgLTEwMjAsNiArMTAzMyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpz
dHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2CiAKICAg
ICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7
CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjplcXVhbFRvQmlnSW50KGFzQmlnSW50KHYxLmFzQ2VsbCgpKSwgYXNCaWdJbnQo
djIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZThhYzBlZTdmYmMxYmMzNTc5ZWU2
M2Y1Y2IxNmE5NjA4MzcuLjc5NGJjNzdlMjAyMWYwMzM1NGFhNjYxNDIzM2NkZDU5NWRjYTBiNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTU1LDYgKzE1
NSw4IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBl
KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKKyAgICBp
ZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVm
ZXJyZWRUeXBlKTsKIH0KIApAQCAtMTgxLDYgKzE4Myw4IEBAIEpTT2JqZWN0KiBKU0NlbGw6OnRv
T2JqZWN0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvCiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGV4
ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxP
YmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDlmYzBjOWIwOTQwMTY0MGZi
MTVkNTI1MWE0MTdlYjg0ODYwZDZjY2QuLjcxZjk5ZDk3Y2Y1Y2QyOTFjY2U1YzM1NGNhOWFjNjJi
OTQ5NzViMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMTIs
NiArMTEyLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBl
LgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7
CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsK
ICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNTcwZjA5NGJhZDRiMDdhMTFhZWUyMDYw
N2RlMGE3NjgxZjdmZGMzZS4uOTgzNmIzNDcwNWUwYTc1NjAwNDc5NjMxODllYmRmYTgzNzc3NjU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApA
QCAtMjAxLDYgKzIwMSwxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKK2lubGluZSBib29sIEpTQ2Vs
bDo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsK
K30KKwogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fdHlwZSA9PSBTeW1ib2xUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGYxODI1ZTllNjJiZTUyMmRiMWVlYWE0MmE2NmVi
ZWI4OGRiOTk4OGEuLjI4YTkyODA0MGQ2ZmNjMjNlNzkzMThhYTczMjBlYzVlNTk0M2YxZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTYzNyw3ICs2MzcsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0bwogbV8gIyMgbG93ZXJO
YW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsgXAogCiAgICAgRk9S
X0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9U
WVBFKQotICAgIAorCiAjdW5kZWYgQ1JFQVRFX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRQog
CiAgICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZXJyb3JDb25zdHJ1Y3Rvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAK
aW5kZXggYzFjMDM4NmQ1NjUwYTIzMjEzYjYwOTNlOGEwYjZhNDNhMzRkOWU0NC4uNmZhMmY3MmVh
MmU3MjhlY2I0ODFlYmJiZDYyMjJmZTQzZjUyOWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjYsMTAgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKIAorI2luY2x1
ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZp
cm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA4NTM1
NmQzOTc3YWVkNWM3M2I4OWFmZjA1Yzk3YzI0MmY5NWJiNGVhLi41NzdkMThlMDI1YzExYTk5MmNl
MTZjODUwY2IyMjE4ZTIxYzZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxU
eXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAgICBCaWdJbnRUeXBlLAog
CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGU4ZjMxNmNm
NDJiOGU5Mjg5ZmNhMDg5YjQ4MzEyMTViN2EzMDIwMzMuLjBmZGM3YzM1NjVjZThhYjFkZGVjNTFk
ZWZkNGNmMzg1MmMzOTk4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmgKQEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVt
YmVyKQogI2VuZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQorewor
I2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0NvdW50ID0gNjQ7CisgICAg
aWYgKG51bWJlcikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7
CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHplcm9Db3VudCA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoIShudW1iZXIg
Pj4gaSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZW5kaWYKK30KKwogLy8g
VGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBv
ZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVu
dGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhl
IHJlc3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxl
ZCB0byBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAKaW5kZXggNmQxMDU1ODI3MDhhMjRhM2FkNGE0YTUwMGQzOTQxM2Q5Yjk4ZGMyMC4uOTdj
ZmEwN2E5Njk0MDIyMjU2YzljMzhhNjZjNzY0MzM1MTdjZDY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDYgKzgyLDggQEAgSlNWYWx1
ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJp
bmcoKTsKICAgICBpZiAodi5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJp
bmdzLnN5bWJvbFN0cmluZygpOworICAgIGlmICh2LmlzQmlnSW50KCkpCisgICAgICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3MuYmlnaW50U3RyaW5nKCk7CiAgICAgaWYgKHYuaXNPYmplY3QoKSkg
ewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7CiAgICAgICAgIC8vIFJl
dHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkCkBAIC0x
MTIsNyArMTE0LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9yTnVsbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlw
ZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUg
fHwgdHlwZSA9PSBTeW1ib2xUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlw
ZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0
KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAppbmRleCA3OGU3N2FkMTg2NGM4ZmEwMDczODdjM2Y1MGM5MzkyMTI1ZjcxNDkzLi5mYmEzMjdm
MGQ1ZDJkNjAwNjJhYjM1NGRmZjllOWRkZTFjNGI4MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00NzgsNiArNDc4LDcgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlQXN5bmNJdGVyYXRpb24gPSBmYWxzZTsKICAgICB2KGJvb2wsIHVzZUZhc3RUTFNGb3JXYXNt
Q29udGV4dCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBzdG9yZSBjb250ZXh0IGlu
IGZhc3QgVExTLiBJZiBmYWxzZSwgd2Ugd2lsbCBwaW4gaXQgdG8gYSByZWdpc3Rlci4iKSBcCiAg
ICAgdihib29sLCB1c2VDYWxsSUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHMsIHRydWUsIE5vcm1h
bCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIENhbGxMaW5rSW5mbyB0byBpbmxpbmUgY2FjaGUgV2Fz
bSB0byBKUyBjYWxscy4iKSBcCiAgICAgdihib29sLCB1c2VPYmplY3RSZXN0U3ByZWFkLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBPYmplY3QgUmVzdC9TcHJlYWQgZmVh
dHVyZS4iKSBcCisgICAgdihib29sLCB1c2VCaWdJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVl
LCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCiAgICAgdihib29sLCB1c2VBcnJh
eUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNl
IG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxs
b2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKVwKICAg
ICB2KGJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRl
X3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1
Y3R1cmUuIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXku
aAppbmRleCAxMmY0NTNlNzYwMWIyZmFhNjdiOWVmYmVhNDAwMWRmMDBjOWYxNWQ3Li40ZWQxMWY4
ZmVkMmM4YzRiZmYwZTQyYzg1NjIwYmFjMDE3ZDhkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworCiBjbGFzcyBQcm90b3R5cGVL
ZXkgewogcHVibGljOgogICAgIFByb3RvdHlwZUtleSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA4NWQ0Y2IxNTU4NTgzZTgwMWI5ZDAx
MGIwMTNjMzE2ZjZmOGQwZjM4Li44ODUwYzRhOWEzNDM5NGYxOGY3NWEzNWQ2N2JhM2E0NWExOWZl
NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApA
QCAtNDAsNiArNDAsNyBAQAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAgIG1hY3JvKHN0cmlu
ZykgXAogICAgIG1hY3JvKHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkgXAogICAgIG1hY3Jv
KHRydWUpCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2FzZSBUeXBlb2ZUeXBl
OjpGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmluZygpOworICAgICAg
ICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVybiBiaWdpbnRTdHJp
bmcoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmlu
ZGV4IDQwNzVmZDc1YjBlYjE4ZmNlOGE2MzJiYTI3Y2I3MzE2MjdkYTY2N2MuLjlmNTc4ZThhYmM1
NDE2MDAzOTQxODU4YmFhZmIzMWM4OGU3MDc3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2FjaGUuaAppbmRleCA1Mzk3ZTgxN2YxMjdmMzVhZDY3Y2VhY2JhNmQyYjc5YjRkOWZl
NTU1Li4yNTcwYjcyZTNiYzRhMGM3ZmIyZGYzNzliZTlhZDAwYzJiZDhkYzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5k
ZXggYWU1MjEwNzA5YTdmNTQxNmE5ODJhN2M3NWMwYzMzNjFjMmQwMWNlOC4uM2JmY2Y1NzFmNGE4
N2EzMWViZjkwNWQ2OGQ0YjUyZDZkOGE1NWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjAzLDcgKzIwMyw2IEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBTeW1ib2xUeXBlKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90
b3R5cGUoKTsKLQogfQogCiBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxv
b2t1cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAppbmRleCBkYjE2MmI3ZjRmNGNlMjNmYjg4
MDU2ZGRmNDFjNDhkZTMwZDU2NGNkLi5hYTNmZmE3YzM4MmUxMDVkNWRhZTRjMWE0ODM2MGQ0MGVm
OGJiYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNw
cApAQCAtNTQsNiArNTQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
VHlwZW9mVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAg
IG91dC5wcmludCgiZnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZW9m
VHlwZTo6QmlnSW50OgorICAgICAgICBvdXQucHJpbnQoImJpZ2ludCIpOworICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4MTIxOTJh
NWE2MmViNjZiYzYxYjI4MDhiNmY1MzVhNGVkOC4uOTY0ODVkMDJkMjQxYzZkYjc2MmNlODEwNmZm
Mjg1M2E2YzU5NzBiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZW9mVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5
cGUuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBl
b2ZUeXBlIHsKICAgICBVbmRlZmluZWQsCisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAg
TnVtYmVyLAogICAgIFN0cmluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCBiMjAwODU3M2ZlMDJhNDVjZmVkMGVhNzUxYmUyZDVkZTk3ZTg0NTlhLi41OTdkYzUzYTA1MDAx
MmRhYzc5MTA5MThmYzkwNDIxOTIzOGVkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRl
ICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVk
QXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0yODAsNiArMjgxLDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGhhc2hNYXBCdWNrZXRN
YXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
VmFsdWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc2V0SXRl
cmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Cisg
ICAgYmlnSW50U3RydWN0dXJlLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKIAogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywg
SlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxN
YXBCdWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRo
aXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGI1NTRiMzUwZDQxODUxNWU0
OGI2ZjhmY2MwZTg0ZWMwMTcyNGY2MWEuLmNjNTQwYzM5ZmFjYWI5ZGYzNDEyYTY5NmI4ZGIzNzcz
MmQ0M2ZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzg4LDYgKzM4OCw3
IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNldEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IG1hcEl0ZXJhdG9yU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGJpZ0ludFN0cnVjdHVyZTsKIAogICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlO
YW1lRW51bWVyYXRvcjsKICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5lbFNldEJ1Y2tldDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOGY4OThj
OWZjNGIxNzI5NmNjNzNiZTU2YTMzZjU2ZmQwNmI3NjliLi5lZDNhMTM4MjU2ZWRjNjRhZTU1ZThh
MmIxZWU1N2ZhNTNiZWQ3YzRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50
IEpTQmlnSW50LCBCaWdJbnRDb25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMTYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVwZGF0ZSBXaW5DYWlyb1JlcXVpcmVt
ZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggNDExZTlhNzUzMjM4NjkyODky
ZTkzNjIwNmZjY2U3NDliMTc4ZWNiZC4uOWMwMDYyNjM1ODkxMGQ5NjdkZTQ3OGI3OWMyZjkyMWM1
MTAzMzQ3MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC02MTYsNiArNjE2LDEw
IEBAIGRlZiBydW5EZWZhdWx0KCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVu
KCJkZWZhdWx0IiwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykp
CiBlbmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVzZUJpZ0ludD10cnVlIiAsICooRlRM
X09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQorZW5kCisKIGRlZiBydW5G
VExOb0NKSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oIm1pc2MtZnRs
LW5vLWNqaXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgb3B0aW9uYWxUZXN0
U3BlY2lmaWNPcHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMWVkMjIzN2NkYWE0MTMyNDNlZWJlNDBmYTJiYWFmYjNh
NTY2ZWUxLi5jMmQzN2Y1NThmOTdkZWZlYjBmZGUzNzRjOTBjNTUxNGUyZjk4NGU3IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBKU0JpZ0ludCwgQmlnSW50Q29uc3Ry
dWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1saXRlcmFscy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0VGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQt
dHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorCiAyMDE3LTExLTE2ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IG1hcmsgcmVncmVzcy0xNzgzODUuanMgYXMgbWVtb3J5IGV4aGF1c3RpbmcKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbCBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMmIxNzdlMjYyNmMyNTQ4OGMzYTI4ZDk1ZDE2ZTc1NDYyNTcyNWYzCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCkBAIC0wLDAgKzEsMzMgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRlZCB0byBzaW1w
bGlmeSBydW5uaW5nIEJpZ0ludCB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIEJpZ0ludAorIyBh
cmUgbm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBhdGg6IHN0cmVz
cy9iaWctaW50LWxpdGVyYWxzLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCistIHBhdGg6
IHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2Yzc5MjAwMTM0MWEwNTgzOWVi
NmJiNjgxOTJmMDljYmNhYTA1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCkBAIC0wLDAgKzEsMTA2IEBACisvL0AgcnVuQmlnSW50RW5hYmxl
ZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4
RXJyb3IoaW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAg
YXNzZXJ0KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3Rh
bmNlb2YgU3ludGF4RXJyb3IpOworICAgIH0KK30KKworLy8gVGVzdCAwIGNvbnZlcnNpb25zCits
ZXQgbiA9IDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworbiA9IDAwbjsKK2Fzc2VydChuID09PSAw
bik7CisKKy8vIEJpbmFyeSByZXByZXNlbnRhdGlvbgorCituID0gMGIxMTExbjsKK2Fzc2VydChu
ID09PSAxNW4pOworCituID0gMGIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCituID0gMGIwMTBu
OworYXNzZXJ0KG4gPT09IDJuKTsKKworbGV0IGJpbmFyeVN0cmluZyA9ICIwYjEiOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0g
ZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2
MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCituID0gMEIxMTExbjsKK2Fzc2VydChuID09PSAx
NW4pOworCituID0gMEIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitiaW5hcnlTdHJpbmcgPSAi
MEIxIjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9
ICIwIjsKKworbiA9IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAy
ODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworLy8gT2N0YWwgcmVwcmVz
ZW50YXRpb24KKworbiA9IDBvN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gMG8xMG47Cith
c3NlcnQobiA9PT0gOG4pOworCituID0gMG8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9
IDBvMDAwMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzduOworYXNzZXJ0KG4gPT09
IDduKTsKKworbiA9IDBPMTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBPMjBuOworYXNz
ZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCisvLyBI
ZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbgorCituID0gMHhhbjsKK2Fzc2VydChuID09PSAxMG4p
OworCituID0gMHhmZm47Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweDAwMGZmbjsKK2Fz
c2VydChuID09PSAyNTVuKTsKKworbiA9IDB4ZmFiY247Cithc3NlcnQobiA9PT0gNjQxODhuKTsK
KworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMGIwMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMW5uIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwbzg5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG8wOG4iKTsK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvN25uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIweGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweDBnbiIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMHhmbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwMG5uIik7Cith
c3NlcnRUaHJvd1N5bnRheEVycm9yKCIxYTBubiIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LXR5cGUtb2YuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2Yu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTUzY2QzMDEyNDZiOTU4ZjRjNmQ0ZGExMWFmN2NkMGE2YjQwOTJhYwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpAQCAt
MCwwICsxLDEwIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkg
eworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
Cit9CisKK2Fzc2VydCh0eXBlb2YgMG4gPT09ICJiaWdpbnQiKTsKK2Fzc2VydCh0eXBlb2YgMW4g
IT09ICJvYmplY3QiKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327299</attachid>
            <date>2017-11-17 20:00:50 -0800</date>
            <delta_ts>2017-11-17 20:17:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171118020047.patch</filename>
            <type>text/plain</type>
            <size>91029</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZTYyYTQzN2NhNGYxMDYx
N2EyYWI0NDVmMzBkNGFjNGYzYzVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJbnRD
b25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJl
IGludHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBp
dCBvbiBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1d
IAorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgb24gSlNC
aWdJbnQ6Om1fZGF0YSB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9ybWFuY2Ug
ZHVlIHRvIGNhY2hlIGxvY2FsaXR5IGFuZCBhbGxvd2luZworICAgICAgICA2NC1iaXR3aXNlIChv
ciAzMi1iaXR3aXNlKSBhcml0aG1ldGljIG9wZXJhdGlvbnMuIEpTQmlnSW50IGFsc28gaGFzIG1f
c2lnbgorICAgICAgICB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQgbV9s
ZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEgYXJl
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXByZXNl
bnRhdGlvbiwgSlNCaWdJbnQ6Om1fZGF0YVswXSByZXByZXNlbnRzCisgICAgICAgIHRoZSBsZWFz
dCBzaWduaWZpY2FudCBkaWdpdCBhbmQgSlNCaWdJbnQ6Om1fZGF0YVttX2xlbmd0aCAtIDFdIHJl
cHJlc2VudHMgdGhlIG1vc3QKKyAgICAgICAgc2lnaW5pZmljYW50IGRpZ2l0LgorCisgICAgICAg
IFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRjaCB0aGUgQmlnSW50IGxpdGVy
YWxzIExleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBzdXBwb3J0LiBUaGUgb3BlcmF0
aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJlaW5nCisgICAgICAgIGltcGxl
bWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2UgZmVhdHVyZXMgYXJlIGJlaW5n
IGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0tdXNlQmlnSW50IiBhbmQKKyAg
ICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vu
cy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
RGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUludCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVGcm9tVWludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9t
QW55SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb21Cb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNp
Z24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmlzWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFzQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1i
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpjbHo2NCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVLZXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnR5cGVTdHJpbmcgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZlYXR1cmUgZGVmaW5lIGZvciBhbHRlcm5hdGl2ZSBwcmVzZW50YXRpb24gYnV0dG9uIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTljNGE5OWJhYjA1MDgwN2U2
NzI2ZTE2YmIyNTlhZDAyYjI2NGQ3MC4uZWYyNTJjM2FkNzM2NWYzNjc2ZWM0MDM2OGViZTRkNzc5
ZWFiYTNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5Miw3ICs3OTIsNyBA
QAogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291
cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsg
fTsKLQkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhEMTFFREI1NjcyMDAzRjJC
MEIgLyogUGFyc2VJbnQuaCAqLzsgfTsKKwkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBh
cnNlSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3
ODFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50
ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0
aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI5LDYgKzExMjksNyBAQAogCQk4NjcwNEI4ODEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1
NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFD
MTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QURE
MTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVF
QzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zNjQ0LDYgKzM2NDUsOCBAQAogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJ
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCaWdJbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmln
SW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlnSW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkND
IC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdWx0
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1NTY0NTFCMDA0
NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlci5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBMb3dM
ZXZlbEludGVycHJldGVyLmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcg
LyogTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbGluZUVuZGluZyA9
IDA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU4NTIsMTQgKzU4NTUsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJNTM2QjMxOTgxRjczNUU1QzAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tICov
LAotCQkJCTUzNkIzMTk2MUY3MzVFNUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAq
LywKLQkJCQk1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0g
Ki8sCi0JCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1t
ICovLAotCQkJCTUzMEE2NkI1MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEuY3Bw
ICovLAorCQkJCTUzNkIzMTk2MUY3MzVFNUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3Bw
ICovLAorCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMuY3Bw
ICovLAorCQkJCTUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5t
bSAqLywKIAkJCQk1MzZCMzBFMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQuY3Bw
ICovLAorCQkJCTUzMEE2NkI1MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5t
bSAqLywKIAkJCQk1MzZCMzBFMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3Bw
ICovLAogCQkJCTUzNkIzMEVBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNi5jcHAg
Ki8sCiAJCQkJNTM2QjMwRTkxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCAq
LywKQEAgLTY0ODcsNiArNjQ5MCw4IEBACiAJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8q
IEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJCThCQzA2NDg3MUUxQTU4M0YwMEIyQjhDQSAvKiBK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJCThCQzA2NDg4MUUxQTU4NDAwMEIy
QjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCAqLywKKwkJCQk4Njg5MjFDMzFGOUMy
OTQ3MDAxMTU5RjYgLyogSlNCaWdJbnQuY3BwICovLAorCQkJCTg2ODkyMUMxMUY5QzBDQjcwMDEx
NTlGNiAvKiBKU0JpZ0ludC5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlND
YWxsZWUuY3BwICovLApAQCAtODc0NSw2ICs4NzUwLDcgQEAKIAkJCQk4QkMwNjQ4OTFFMUFCQTY0
MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxQTBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4OTgsMTQgKzk5
MDQsMTQgQEAKIAkJCQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRl
bC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4
Nl9zeW4uYyBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlBMUY3MzVFNzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzNkIzMTlCMUY3MzVFNzgw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzMEE2
NkI5MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSBp
biBTb3VyY2VzICovLAotCQkJCTUzMEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTVGMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE5QjFGNzM1RTc4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTItbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZC
MzE1NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNTgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTY2MUY3MUM1OTkw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzBBNjZC
QjFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MzZCMzE2NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxNkYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTZFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCA3MGU0YTMyNTcwNDIyNTU2ZGFjNzNiNzJmOWUyMTliMmUyNzBlNDM3Li5hNTg3OGI1Mjdk
ZDk0ZDRjYjdhOTlmYjRjMzRiYTNiOGMxMDU1YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC03NjQsNiArNzY0LDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9u
LmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmln
SW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCiBydW50aW1lL0pTQ2FsbGVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYWZmNGIwYzZmZDMwYzkzYWI2MGUyYzVmODU4MWI4N2Mx
Yjk2Njc4Li42ZmM0ZjY4YzVhYWYxNjc2NzVmMGE3NmI1NjNlYjAzZGZlYzE4YjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMs
NyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVE1hdGhJQy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZTM5OGQ2MTFiYmE4MTI3NDRjZWJmYjVjYmY4
OTc2NDk5MGU1NTAuLjU5ZDQ0NjY2YWYxZmE3NmZkZGJmYWNhZTM5MWFhMWI5OWQ0YzRiZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgpAQCAtMTc4Myw2ICsxNzg0LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJ
RCogZHN0CiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFN5bWJvbFR5cGUp
OwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKKyAgICAg
ICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9pc19jZWxsX3dpdGhfdHlwZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyY0luZGV4KTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoQmlnSW50
VHlwZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgICAgIHJld2luZFVu
YXJ5T3AoKTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX29iamVjdF9vcl9udWxs
KTsKQEAgLTMxMjUsNiArMzEzNCwxNiBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRk
Q29uc3RhbnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBtX2NvZGVCbG9jay0+
YWRkQ29uc3RhbnRCdWZmZXIobGVuZ3RoKTsKIH0KIAorSlNCaWdJbnQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorewor
ICAgIEpTQmlnSW50KiYgYmlnSW50SW5NYXAgPSBtX2JpZ0ludE1hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIWJpZ0ludEluTWFwKSB7
CisgICAgICAgIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsICp2bSgp
LCBTdHJpbmdWaWV3KGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgYWRkQ29uc3RhbnRW
YWx1ZShiaWdJbnRJbk1hcCk7CisgICAgfQorICAgIHJldHVybiBiaWdJbnRJbk1hcDsKK30KKwog
SlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0
cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCAyYjI0MjY0MTgwM2JkNDA1MmFlNWEyYjZhMDk3NWRhMDQwZDVhZjdi
Li41NTg4ZjYyMjUyODRlMjM3ZTAzM2MyOTdjYjBhYjA4N2EyNTZhMzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTAwMiw2ICsxMDAz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwg
SlNWYWx1ZT4gTnVtYmVyTWFwOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmlu
Z0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFw
OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU0JpZ0ludCos
IElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyQmlnSW50TWFwOwogICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxhdGVS
ZWdpc3RyeUtleU1hcDsKICAgICAgICAgCiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwo
KSBhbmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgpAQCAt
MTA4OCw2ICsxMDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IEpTQmlnSW50KiBhZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVS
ZWdpc3RyeUtleT4mJik7CiAKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7IH0KQEAgLTExODcsNiArMTE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVk
LCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0
aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1h
cCBtX2pzVmFsdWVNYXA7CiAgICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7
CisgICAgICAgIElkZW50aWZpZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBs
YXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAgICAgIFN0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1
Y3Rpb25zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMjM1YWE2YjFiYTQzMzllOTM5NTQwZDdlYmNhNzBkZjgwODQ3
ZjMyMC4uNjA5NzFiOGMyNzI2Y2ZhMWM3NjExOWVmNjM0ZmI4NGNlODk4MjkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMTIyLDYgKzEyMiwxMSBAQCBKU1ZhbHVlIFN0cmluZ05vZGU6OmpzVmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKICAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZFN0cmlu
Z0NvbnN0YW50KG1fdmFsdWUpOwogfQogCitKU1ZhbHVlIEJpZ0ludE5vZGU6OmpzVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmFkZEJpZ0ludENvbnN0YW50KG1fdmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNGNh
YWY1ZmE0NTU2OGJjZmE2Y2YxYjRiZmRjNjRiNDE1NmFjYmY4ZS4uNWUyYzQ3NjRjMjFhNzI1NzIx
NzQzYzc1ZDY5NDIzNTNhMGI3MmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTc1LDcgKzE3
NSw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9v
bCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9U
aGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsm
XShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8g
dHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlz
T2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBT
eW1ib2xUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50
eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUu
dHlwZSgpID09IEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVp
dGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCmluZGV4IDM1ZTg0YTVjMTQ1MTdlYmVkOGQ2MTQ4NzFmOWFjN2JlYjAyNGQ2MDAuLmRj
Mjk0ZjEwZTNlZjU0MGNkNDZhZWM3MGQ0MGIwM2IwYzRlZGYxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjAyLDYgKzIw
Miw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6CisgICAgY2FzZSBCaWdJbnRUeXBlOgog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVu
Y3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgIGFyZ3VtZW50cykpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGI5Zjc4MzA4MTc0
ODE4YWViNTMwMDBhNDY4ODgyNDJkM2JlNzExNDQuLjhmMTdhZTNlNmQ1OGI4ZTBjZTNiNzljMzRm
NjVhM2UxMjNiMGM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXIuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxM2U2
ZTU1MjgwYmNkYjA0OGYyMjUyYjEyNWMzMWRmM2RhZS4uNzFlMTEyMDNkNGFhYThhZTFjZmZmNzIz
YzVhMTY3OTU4NWE3NzVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTIzMiw2ICsyMzIsMTIgQEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMo
KTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRp
b24sIGQpOwogICAgIH0KKyAgICAKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCkK
KyAgICB7CisgICAgICAgIGluY0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBCaWdJbnROb2RlKGxvY2F0aW9uLCAqYmlnSW50KTsKKyAgICB9CiAKICAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZlZTZjNWRiZDU5YWRlMzdmMmQxYjIyZDI5MTY0OGFkMjk2
ZjU0MWQuLjYzMzcxOTlhNzliNzgyOGViZmJiYWI1OTIwMDM3OWJiMmQxYTY5YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB0eXBl
bmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVM
aXRlcmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19J
TkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKIHsK
ICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2ltYWwgdmFsdWVzIGZpdCBpbnRvIDQg
Ynl0ZXMuCiAgICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpAQCAtMTUxMiw5ICsxNTEyLDkgQEAg
QUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICAtLW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0
KG1fY3VycmVudCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlmIChtYXhpbXVtRGln
aXRzID49IDApIHsKKyAgICBpZiAobWF4aW11bURpZ2l0cyA+PSAwICYmIFVOTElLRUxZKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnbicpKSB7CiAgICAgICAg
IHJldHVyblZhbHVlID0gaGV4VmFsdWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBpbiB0aGUgaGV4VmFsdWUgYnVm
ZmVyLgpAQCAtMTUzMyw3ICsxNTMzLDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6
cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAK
KyAgICBpZiAoVU5MSUtFTFkoKG1fY3VycmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTE1NTQsNyArMTU1OCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAg
ICAgICAgLS1kaWdpdDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJyZW50
KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYg
ZGlnaXQgPj0gMCkgeworICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQg
Pj0gMCAmJiBVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xNTcyLDYgKzE1NzYsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmlu
YXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBpZiAoVU5MSUtFTFkoKG1fY3VycmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZl
cjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1OTQsNyArMTYwMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3Rh
bChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlz
QVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlz
QVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKKyAgICBpZiAoIWlzQVNDSUlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmln
SW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICduJykpIHsKICAgICAgICAgcmV0dXJuVmFs
dWUgPSBvY3RhbFZhbHVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjEyLDYg
KzE2MTksOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChV
TkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCksIDgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTYzOCw3ICsx
NjQ4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlz
QVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdp
dCA+PSAwICYmIG1fY3VycmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykg
eworICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmIChtX2N1cnJl
bnQgfCAweDIwKSAhPSAnZScgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1f
Y3VycmVudCB8IDB4MjApICE9ICduJykpIHsKICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZGVj
aW1hbFZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIxMTMs
MTMgKzIxMjMsMjMgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBw
cmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VIZXgodG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSkgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3Vy
cmVudCB8IDB4MjApID09ICduJykpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsK
KyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIFZlY3RvcjxMQ2hhcj4g
Y29tcGxldGVJZGVudDsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnMCcp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCd4Jyk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVy
KGNvbXBsZXRlSWRlbnQuZGF0YSgpLCBjb21wbGV0ZUlkZW50LnNpemUoKSk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAg
dG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMTMzLDEzICsyMTUzLDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAg
Ly8gU2hpZnQgb3V0IHRoZSAnYicgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAg
ICAgICAgICAgcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAg
ICBpZiAoIXBhcnNlQmluYXJ5KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpICYmIFVOTElLRUxZKE9w
dGlvbnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAg
ICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8TENoYXI+IGNvbXBsZXRlSWRlbnQ7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVJZGVudC5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlk
ZW50LmFwcGVuZCgnYicpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKG1f
YnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSBtYWtlSWRlbnRpZmllcihjb21wbGV0ZUlkZW50LmRhdGEoKSwgY29tcGxl
dGVJZGVudC5zaXplKCkpOworICAgICAgICAgICAgfTsKKwogICAgICAgICAgICAgaWYgKGlzSWRl
bnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50
aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVN
QkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNo
cmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTU0LDEzICsyMTg0
LDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnbycgcHJlZml4Lgog
ICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEt
PmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlKSAmJiBVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50
IHwgMHgyMCkgPT0gJ24nKSkgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgVmVjdG9yPExDaGFyPiBjb21w
bGV0ZUlkZW50OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCcwJyk7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQoJ28nKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZUlkZW50LmFwcGVuZChtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoY29t
cGxldGVJZGVudC5kYXRhKCksIGNvbXBsZXRlSWRlbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4g
b2N0YWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0g
VU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0g
dG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAg
ICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMjE4MCwyNCArMjIyMCwzMCBAQCBzdGFydDoKICAgICBjYXNlIENoYXJhY3Rlck51
bWJlcjoKICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBJTlRFR0VSICYmIHRva2VuICE9IERP
VUJMRSkpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VEZWNpbWFsKHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOwotICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBz
aGlmdCgpOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50
aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBET1VCTEU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElO
VkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwotICAgICAgICAgICAgICAgICAgICAgICAg
Z290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxF
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgobV9jdXJy
ZW50IHwgMHgyMCkgPT0gJ2UnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNl
TnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQg
YWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6
IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0
aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91
YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3Qg
cGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBw
YXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5n
dGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAgICAgICAg
ICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBkODQ1ZTJlMTRm
NTY5YTRkMzhlMmMzZDk5ZWY2YzQ2NzIzMjQzMjIwLi5hZDkwNzY0OGMwMGUxNmRjNDViNmVlOWNj
ZjBhNDQ5NTM2OWE5Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0x
NzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxk
U3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJzZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5M
SU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUs
IFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VS
ZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRN
b2RlKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1
ZSk7CisgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUp
OwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVl
KTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAppbmRleCBhY2RhYzZjYTExNjdkNWRmNGJmNDZhZGRkNzM5YmVjZWM4YmQxOWJmLi41OTk1Njg0
YzU1OTQ0MjRlMmU2YzNkYTE0OTkzMDRhMjdmNjNkNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtOTIsNiArOTIsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBCaWdJbnROb2RlOjpCaWdJ
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IHZhbHVlKQorICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3Ry
aW5nVHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKwogICAg
IGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQogICAgICAgICA6IENvbnN0YW50Tm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMmE2ZGRkMjJjZDhkMTdj
ZWYyYjNkYmY3MTY4YjMyYTk5MmFhY2RjYy4uNTQ5OWY4NmQzYWVkYTZjNzFiNTg2MDQ0ZWU1NmE0
NDdmMTk4OTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTYyLDYg
KzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JpZ0lu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVj
dExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNBcnJheUxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMyOCw2ICszMjksMTgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CiAg
ICAgfTsKIAorICAgIGNsYXNzIEJpZ0ludE5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIEpTVmFsdWUganNWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fdmFsdWU7CisgICAgfTsKKwogICAgIGNsYXNzIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0OTA4OTg1OTkzYWMxYmQ1
NDI2YzRhMTFmMDJkYWE4ZTk4ZDUzMTUwLi5lZWMwNmUzZTFkNWU3OTkxZDAzN2U2ZGZhZDMxYTk0
MmY2NjA3OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00
NDkyLDYgKzQ0OTIsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKIAogICAgICAgICByZXR1
cm4gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKGNvbnRleHQsIGlkZW50LCAqaWRlbnQgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCwgc3RhcnQsIGxvY2F0aW9uKTsKICAgICB9CisgICAg
Y2FzZSBCSUdJTlQ6IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CisgICAgICAgIG5leHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QmlnSW50KGxvY2F0aW9uLCBpZGVudCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5Yzhl
MzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZjNS4uNzc5YTA1YmJmOGJmNGQwMjhkNTcwMmQ3ZTQzNmJk
NjU3YzRkNmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RF
LAogICAgIElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAg
ICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCmluZGV4IDhkYjM1Yzc3OTZmNGQzNmZhNTQ1MjU5MTYwZGM1ODllYjg0
OWQ5NTYuLjE1MzYyN2MwMzg3ZmZkMzY0YjdiNzEzYzlmY2QyOGExMDk3ZGZiNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0
eUJpdCA9IDB4ODAwMDAwMDA7CiAgICAgZW51bSA6IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAg
ICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIs
IFN0cmluZ0V4cHIsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVn
ZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlz
RXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwK
ICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwg
QnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHBy
LCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1
YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdWJsZUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7
IHJldHVybiBEb3VibGVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUx
YmRlNTVmOThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFy
cmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3Jv
KEJpZ0ludCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAog
ICAgIG1hY3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDAwNzk2ZDM4MmY5OWJmZWNkY2MzMjBlZjBiYTcyMTg0
OGRiMjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC0wLDAgKzEsNTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6Cisg
KgorICogQ29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMu
ICBQbGVhc2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQor
ICogQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBbMl0uCisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2Iv
bWFzdGVyL0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9i
bG9iL21hc3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisKKyNkZWZpbmUg
U1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVz
ICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6
OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OworCit2b2lkIEpTQmlnSW50Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNCaWdJ
bnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2RhdGEp
CisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2JqZWN0LT5tX2RhdGEuZ2V0KCkp
OworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50IGxlbmd0aCkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKK3sgfQorCit2b2lkIEpTQmlnSW50Ojppbml0aWFsaXplKGJvb2wgemVyb0luaXRpYWxp
emUpCit7CisgICAgQVNTRVJUKG1fZGF0YSk7CisKKyAgICBzZXRTaWduKGZhbHNlKTsKKyAgICBp
ZiAoemVyb0luaXRpYWxpemUpIHsKKyAgICAgICAgdm9pZCogZGF0YSA9IG1fZGF0YS5nZXQoKTsK
KyAgICAgICAgbWVtc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGRhdGEpLCAwLCBsZW5ndGgo
KSAqIERpZ2l0U2l6ZSk7CisgICAgfQorfQorCisvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMu
CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT0RJR0lUX1QgMQordHlw
ZWRlZiB1aW50NjRfdCBUd29EaWdpdDsKKyNlbGlmIEhBVkUoSU5UMTI4X1QpCisjZGVmaW5lIEhB
VkVfVFdPRElHSVRfVCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2VuZGlmCisK
Ky8vIHtjYXJyeX0gbXVzdCBwb2ludCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBl
aXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgoraW5saW5lIEpT
QmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQq
IGNhcnJ5KQoreworI2lmIEhBVkVfVFdPRElHSVRfVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0
YXRpY19jYXN0PFR3b0RpZ2l0PihhKSArIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICAq
Y2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
aWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGlnaXQgcmVzdWx0ID0gYSArIGI7CisKKyAgICBp
ZiAocmVzdWx0IDwgYSkKKyAgICAgICAgKmNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxp
emVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxl
ZnQgYWxvbmUuCitpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFN1YihEaWdp
dCBhLCBEaWdpdCBiLCBEaWdpdCogYm9ycm93KQoreworI2lmIEhBVkVfVFdPRElHSVRfVAorICAg
IFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSAtIHN0YXRpY19jYXN0
PFR3b0RpZ2l0PihiKTsKKyAgICAqYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRzKSAmIDE7
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAg
ICBEaWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgKmJv
cnJvdyArPSAxOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsK
KyNlbmRpZgorfQorCisvLyBSZXR1cm5zIHRoZSBsb3cgaGFsZiBvZiB0aGUgcmVzdWx0LiBIaWdo
IGhhbGYgaXMgaW4ge2hpZ2h9LgoraW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGln
aXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGhpZ2gpCit7CisjaWYgSEFWRV9UV09ESUdJ
VF9UCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3Rh
dGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgICpoaWdoID0gcmVzdWx0ID4+IERpZ2l0Qml0czsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgLy8g
TXVsdGlwbHkgaW4gaGFsZi1wb2ludGVyLXNpemVkIGNodW5rcy4KKyAgICAvLyBGb3IgaW5wdXRz
IFtBSCBBTF0qW0JIIEJMXSwgdGhlIHJlc3VsdCBpczoKKyAgICAvLworICAgIC8vICAgICAgICAg
ICAgW0FMKkJMXSAgLy8gckxvdworICAgIC8vICAgICsgICAgW0FMKkJIXSAgICAgLy8gck1pZDEK
KyAgICAvLyAgICArICAgIFtBSCpCTF0gICAgIC8vIHJNaWQyCisgICAgLy8gICAgKyBbQUgqQkhd
ICAgICAgICAvLyBySGlnaAorICAgIC8vICAgID0gW1I0IFIzIFIyIFIxXSAgLy8gaGlnaCA9IFtS
NCBSM10sIGxvdyA9IFtSMiBSMV0KKyAgICAvLworICAgIC8vIFdoZXJlIG9mIGNvdXJzZSB3ZSBt
dXN0IGJlIGNhcmVmdWwgd2l0aCBjYXJyaWVzIGJldHdlZW4gdGhlIGNvbHVtbnMuCisgICAgRGln
aXQgYUxvdyAgPSBhICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEgPj4gSGFs
ZkRpZ2l0Qml0czsKKyAgICBEaWdpdCBiTG93ICA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERp
Z2l0IGJIaWdoID0gYiA+PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgID0g
YUxvdyAqIGJMb3c7CisgICAgRGlnaXQgck1pZDEgPSBhTG93ICogYkhpZ2g7CisgICAgRGlnaXQg
ck1pZDIgPSBhSGlnaCAqIGJMb3c7CisgICAgRGlnaXQgckhpZ2ggPSBhSGlnaCAqIGJIaWdoOwor
ICAgIAorICAgIERpZ2l0IGNhcnJ5ID0gMDsKKyAgICBEaWdpdCBsb3cgPSBkaWdpdEFkZChyTG93
LCByTWlkMSA8PCBIYWxmRGlnaXRCaXRzLCAmY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRkKGxv
dywgck1pZDIgPDwgSGFsZkRpZ2l0Qml0cywgJmNhcnJ5KTsKKworICAgICpoaWdoID0gKHJNaWQx
ID4+IEhhbGZEaWdpdEJpdHMpICsgKHJNaWQyID4+IEhhbGZEaWdpdEJpdHMpICsgckhpZ2ggKyBj
YXJyeTsKKworICAgIHJldHVybiBsb3c7CisjZW5kaWYKK30KKworLy8gUmFpc2VzIHtiYXNlfSB0
byB0aGUgcG93ZXIgb2Yge2V4cG9uZW50fS4gRG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93Lgor
SlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBv
bmVudCkKK3sKKyAgICBEaWdpdCByZXN1bHQgPSAxdWxsOworICAgIHdoaWxlIChleHBvbmVudCA+
IDApIHsKKyAgICAgICAgaWYgKGV4cG9uZW50ICYgMSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSBi
YXNlOworCisgICAgICAgIGV4cG9uZW50ID4+PSAxOworICAgICAgICBiYXNlICo9IGJhc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB0aGUgcXVvdGllbnQu
CisvLyBxdW90aWVudCA9IChoaWdoIDw8IERpZ2l0Qml0cyArIGxvdyAtIHJlbWFpbmRlcikgLyBk
aXZpc29yCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERp
Z2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQqIHJlbWFpbmRlcikKK3sKKyAgICBBU1NFUlQo
aGlnaCA8IGRpdmlzb3IpOworI2lmIENQVShYODZfNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2
cSAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGlu
IHJheCwge3JlbX0gaW4gcmR4LgorICAgICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkK
KyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8gcmR4LCB7bG93fSBpbnRvIHJheCwg
YW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90
LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3Ip
KTsKKyAgICAqcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQ
VShYODYpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAg
ICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8g
T3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAg
ICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hp
Z2h9IGludG8gZWR4LCB7bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAg
IC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEi
KGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICAqcmVtYWluZGVyID0gcmVtOwor
ICAgIHJldHVybiBxdW90aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxm
RGlnaXRCYXNlID0gMXVsbCA8PCBIYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBX
YXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGludCBzID0gY2x6NjQoZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNv
cik7CisjZW5kaWYKKyAgICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRp
dmlzb3IgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRp
Z2l0TWFzazsKKworICAgIC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93
IiBvbiB4ODYsIHNvIHdlICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBp
cyAwIGlmIHMgPT0gMCBhbmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VS
VChzaXplb2YoaW50cHRyX3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFz
ayA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdp
dEJpdHMgLSAxKSk7CisgICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERp
Z2l0Qml0cyAtIHMpKSAmIHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOwor
ICAgIERpZ2l0IHVuMSA9IHVuMTAgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1
bjEwICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGln
aXQgcmhhdCA9IHVuMzIgLSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0
QmFzZSB8fCBxMSAqIHZuMCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAg
ICBxMS0tOworICAgICAgICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZE
aWdpdEJhc2UpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0g
dW4zMiAqIGtIYWxmRGlnaXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEw
ID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUg
KHEwID49IGtIYWxmRGlnaXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNl
ICsgdW4wKSB7CisgICAgICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBp
ZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgICpyZW1haW5kZXIgPSAodW4yMSAqIGtIYWxmRGlnaXRCYXNlICsgdW4wIC0gcTAgKiBkaXZp
c29yKSA+PiBzOworICAgIHJldHVybiBxMSAqIGtIYWxmRGlnaXRCYXNlICsgcTA7CisjZW5kaWYK
K30KKworLy8gTXVsdGlwbGllcyB7c291cmNlfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1t
YW5kfSB0byB0aGUgcmVzdWx0LgorLy8ge3Jlc3VsdH0gYW5kIHtzb3VyY2V9IG1heSBiZSB0aGUg
c2FtZSBCaWdJbnQgZm9yIGlucGxhY2UgbW9kaWZpY2F0aW9uLgordm9pZCBKU0JpZ0ludDo6aW50
ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1
bW1hbmQsIGludCBuLCBKU0JpZ0ludCogcmVzdWx0KQoreworICAgIEFTU0VSVChzb3VyY2UtPmxl
bmd0aCgpID49IG4pOworICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID49IG4pOworCisgICAg
RGlnaXQgY2FycnkgPSBzdW1tYW5kOworICAgIERpZ2l0IGhpZ2ggPSAwOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIERpZ2l0IGN1cnJlbnQgPSBzb3VyY2UtPmRp
Z2l0KGkpOworICAgICAgICBEaWdpdCBuZXdDYXJyeSA9IDA7CisKKyAgICAgICAgLy8gQ29tcHV0
ZSB0aGlzIHJvdW5kJ3MgbXVsdGlwbGljYXRpb24uCisgICAgICAgIERpZ2l0IG5ld0hpZ2ggPSAw
OworICAgICAgICBjdXJyZW50ID0gZGlnaXRNdWwoY3VycmVudCwgZmFjdG9yLCAmbmV3SGlnaCk7
CisKKyAgICAgICAgLy8gQWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJy
ZW50ID0gZGlnaXRBZGQoY3VycmVudCwgaGlnaCwgJm5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVu
dCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNhcnJ5LCAmbmV3Q2FycnkpOworCisgICAgICAgIC8vIFN0
b3JlIHJlc3VsdCBhbmQgcHJlcGFyZSBmb3IgbmV4dCByb3VuZC4KKyAgICAgICAgcmVzdWx0LT5z
ZXREaWdpdChpLCBjdXJyZW50KTsKKyAgICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAg
aGlnaCA9IG5ld0hpZ2g7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPiBuKSB7
CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQobisrLCBjYXJyeSArIGhpZ2gpOworCisgICAgICAg
IC8vIEN1cnJlbnQgY2FsbGVycyBkb24ndCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVzdWx0cywgYnV0
IGxldCdzIGJlIHJvYnVzdC4KKyAgICAgICAgd2hpbGUgKG4gPCByZXN1bHQtPmxlbmd0aCgpKQor
ICAgICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyssIDApOworICAgIH0gZWxzZQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghKGNhcnJ5ICsgaGlnaCkpOworfQorCisvLyBNdWx0aXBsaWVzIHt0
aGlzfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9p
ZCBKU0JpZ0ludDo6aW5wbGFjZU11bHRpcGx5QWRkKHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJf
dCBzdW1tYW5kKQoreworICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9m
KERpZ2l0KSk7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERp
Z2l0KSk7CisKKyAgICBpbnRlcm5hbE11bHRpcGx5QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwg
bGVuZ3RoKCksIHRoaXMpOworfQorCitib29sIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKK3sKKyAgICBpZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgt
Pmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCisvLyBEaXZpZGVzIHt4fSBieSB7ZGl2aXNvcn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGlu
IHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9LgorLy8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250
cmFjdCBpczoKKy8vIHF1b3RpZW50ID0gKHggLSByZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAw
IDw9IHJlbWFpbmRlciA8IGRpdmlzb3IuCisvLyBJZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhh
bmRsZSwgYW4gYXBwcm9wcmlhdGVseSBzaXplZCBCaWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVk
IGZvciBpdDsgb3RoZXJ3aXNlIHRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcg
ZW5vdWdoLgorLy8ge3F1b3RpZW50fSBjYW4gYmUgdGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1w
bGFjZSBkaXZpc2lvbi4ge3F1b3RpZW50fSBjYW4KKy8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUg
Y2FsbGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0lu
dDo6YWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBk
aXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCogcmVtYWluZGVyKQoreworICAgIEFT
U0VSVChkaXZpc29yKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4
LT5pc1plcm8oKSk7CisgICAgKnJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRpdmlzb3IgPT0gMSkg
eworICAgICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICpxdW90aWVu
dCA9IHg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVu
Z3RoKCk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKCpxdW90
aWVudCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4
ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBp
ID49IDA7IGktLSkgeworICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KCpyZW1haW5kZXIs
IHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVu
dCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYo
KnJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQor
CisvLyBMb29rdXAgdGFibGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVk
IHBlciBjaGFyYWN0ZXIgb2YgYQorLy8gYmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh
IG51bWJlci4gVG8gaW5jcmVhc2UgYWNjdXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhl
IGFjdHVhbCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgor
Ly8gZm9yICh2YXIgaSA9IDA7IGkgPD0gMzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5s
b2cyKGkpICogMzIpICsgIiwiKTsgfQorY29uc3RleHByIHVpbnQ4X3QgTWF4Qml0c1BlckNoYXJb
XSA9IHsKKyAgICAwLCAgIDAsICAgMzIsICA1MSwgIDY0LCAgNzUsICA4MywgIDkwLCAgOTYsICAv
LyAwLi44CisgICAgMTAyLCAxMDcsIDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAg
Ly8gOS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAg
ICAvLyAxNy4uMjQKKyAgICAxNDksIDE1MSwgMTUzLCAxNTQsIDE1NiwgMTU4LCAxNTksIDE2MCwg
ICAgICAvLyAyNS4uMzIKKyAgICAxNjIsIDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJs
ZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxp
ZXIgPSAxdSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJj
b3VudCkKK3sKKyAgICBBU1NFUlQoMiA8PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNT
RVJUKGNoYXJjb3VudCA+PSAwKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHNpemVfdCBiaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4
XTsKKyAgICBzaXplX3QgY2hhcnMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7Cisg
ICAgY29uc3QgaW50IHJvdW5kdXAgPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7Cisg
ICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91
bmR1cCkgLyBiaXRzUGVyQ2hhcikgeworICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJD
aGFyICogY2hhcnM7CisKKyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3Vu
ZGluZyB1cC4KKyAgICAgICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1Bl
ckNoYXJUYWJsZVNoaWZ0OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1heEludCkpIHsKKyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91
bmRpbmcgdXAuCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0
c01pbikgKyBEaWdpdEJpdHMgLSAxKSAvIERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5n
dGggPD0gSlNCaWdJbnQ6Ok1heExlbmd0aCkgeworICAgICAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZXhlYykKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgQ29udmVyc2lvbkNoYXJz
W10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKworU3RyaW5nIEpT
QmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgp
Cit7CisgICAgaWYgKHgtPmlzWmVybygpKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
QnVpbGRlcjsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdEJ1aWxkZXIudG9TdHJpbmcoKS5pbXBsKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHRvU3RyaW5nR2VuZXJpYyhleGVjLCB4LCByYWRpeCk7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIGludCByYWRpeCkK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdEJ1aWxkZXI7CisKKyAgICBBU1NFUlQocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBj
b25zdCBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgY29uc3QgYm9vbCBzaWduID0geC0+
c2lnbigpOworCisgICAgLy8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBs
ZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisgICAgLy8gRGl2aWRlIGJpdCBsZW5ndGgg
b2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NCh4LT5kaWdpdChsZW5n
dGggLSAxKSk7CisjZWxzZQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHozMih4LT5kaWdpdChs
ZW5ndGggLSAxKSk7CisjZW5kaWYKKyAgICBjb25zdCBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3Ro
ICogRGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Yg
Yml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMK
KyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgY29u
c3QgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAg
IC8vIEZvciBlc3RpbWF0aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0
aWMgYW5kIHdvcmsgd2l0aAorICAgIC8vIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBj
aGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4KKyAgICBjb25zdCB1aW50OF90IG1pbkJpdHNQZXJDaGFy
ID0gbWF4Qml0c1BlckNoYXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNv
bXB1dGF0aW9uIHdpdGggdWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90
IGNoYXJzUmVxdWlyZWQgPSBiaXRMZW5ndGg7CisgICAgY2hhcnNSZXF1aXJlZCAqPSBCaXRzUGVy
Q2hhclRhYmxlTXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAgIGNoYXJzUmVxdWly
ZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIGNoYXJzUmVxdWlyZWQgLz0gbWluQml0c1Bl
ckNoYXI7CisgICAgY2hhcnNSZXF1aXJlZCArPSBzaWduOworCisgICAgaWYgKGNoYXJzUmVxdWly
ZWQgPiBKU1N0cmluZzo6TWF4TGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmlt
cGwoKTsKKyAgICB9CisKKyAgICBpbnQgcG9zID0gMDsKKworICAgIC8vIFdlIGFyZSBvayB0byBj
YXN0LCBiZWNhdXNlIGhlcmUgY2hhcnNSZXF1aXJlZCA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoCisg
ICAgcmVzdWx0QnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihjaGFy
c1JlcXVpcmVkKSk7CisKKyAgICBEaWdpdCBsYXN0RGlnaXQ7CisgICAgaWYgKGxlbmd0aCA9PSAx
KQorICAgICAgICBsYXN0RGlnaXQgPSB4LT5kaWdpdCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
aW50IGNodW5rQ2hhcnMgPSBEaWdpdEJpdHMgKiBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAv
IG1heEJpdHNQZXJDaGFyOworICAgICAgICBEaWdpdCBjaHVua0Rpdmlzb3IgPSBkaWdpdFBvdyhy
YWRpeCwgY2h1bmtDaGFycyk7CisKKyAgICAgICAgLy8gQnkgY29uc3RydWN0aW9uIG9mIGNodW5r
Q2hhcnMsIHRoZXJlIGNhbid0IGhhdmUgYmVlbiBvdmVyZmxvdy4KKyAgICAgICAgQVNTRVJUKGNo
dW5rRGl2aXNvcik7CisgICAgICAgIGludCBub25aZXJvRGlnaXQgPSBsZW5ndGggLSAxOworICAg
ICAgICBBU1NFUlQoeC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisKKyAgICAgICAgLy8ge3Jlc3R9
IGhvbGRzIHRoZSBwYXJ0IG9mIHRoZSBCaWdJbnQgdGhhdCB3ZSBoYXZlbid0IGxvb2tlZCBhdCB5
ZXQuCisgICAgICAgIC8vIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoICJyZW1haW5kZXIiIQorICAg
ICAgICBKU0JpZ0ludCogcmVzdCA9IG51bGxwdHI7CisKKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0
IHJvdW5kLCBkaXZpZGUgdGhlIGlucHV0LCBhbGxvY2F0aW5nIGEgbmV3IEJpZ0ludCBmb3IKKyAg
ICAgICAgLy8gdGhlIHJlc3VsdCA9PSByZXN0OyBmcm9tIHRoZW4gb24gZGl2aWRlIHRoZSByZXN0
IGluLXBsYWNlLgorICAgICAgICBKU0JpZ0ludCoqIGRpdmlkZW5kID0gJng7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIERpZ2l0IGNodW5rOworICAgICAgICAgICAgYWJzb2x1dGVEaXZTbWFs
bChleGVjLCAqZGl2aWRlbmQsIGNodW5rRGl2aXNvciwgJnJlc3QsICZjaHVuayk7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgeworICAgICAgICAg
ICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKENvbnZlcnNpb25DaGFyc1tjaHVuayAlIHJhZGl4
XSk7CisgICAgICAgICAgICAgICAgY2h1bmsgLz0gcmFkaXg7CisgICAgICAgICAgICAgICAgcG9z
Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAg
ICAgICAgaWYgKCFyZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5v
blplcm9EaWdpdC0tOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0
aGFuIG9uZSBkaWdpdCBwZXIgaXRlcmF0aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVu
a0Rpdmlzb3IgaXMgc21hbGxlciB0aGFuIG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFT
U0VSVChyZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVy
b0RpZ2l0ID4gMCk7CisKKyAgICAgICAgbGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAg
fQorCisgICAgZG8geworICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZChDb252ZXJzaW9uQ2hh
cnNbbGFzdERpZ2l0ICUgcmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAg
ICAgICBwb3MrKzsKKyAgICB9IHdoaWxlIChsYXN0RGlnaXQgPiAwKTsKKyAgICBBU1NFUlQocG9z
KTsKKyAgICBBU1NFUlQocG9zIDw9IHN0YXRpY19jYXN0PGludD4oY2hhcnNSZXF1aXJlZCkpOwor
CisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgorICAgIHdoaWxlIChwb3MgPiAxICYmIHJl
c3VsdEJ1aWxkZXJbcG9zIC0gMV0gPT0gJzAnKQorICAgICAgICBwb3MtLTsKKworICAgIGlmIChz
aWduKSB7CisgICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgIHBvcysr
OworICAgIH0KKworICAgIC8vIFJldmVyc2UgdGhlIHN0cmluZy4KKyAgICBTdHJpbmdCdWlsZGVy
IHJldmVyc2VCdWlsZGVyOworICAgIHJldmVyc2VCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0
aWNfY2FzdDxzaXplX3Q+KGNoYXJzUmVxdWlyZWQpKTsKKyAgICBmb3IgKGludCBpID0gcG9zIC0g
MTsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJldmVyc2VCdWlsZGVyLmFwcGVuZChyZXN1bHRCdWls
ZGVyW2ldKTsKKworICAgIHJldHVybiByZXZlcnNlQnVpbGRlci50b1N0cmluZygpLmltcGwoKTsK
K30KKworc2l6ZV90IEpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNp
emVfdCBidWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNp
emU7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0
ZWRTaXplOworfQorCit2b2lkIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlm
ICh0aGlzLT5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRl
eCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIXRoaXMt
PmRpZ2l0KG5vblplcm9JbmRleCkpCisgICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYg
KG5vblplcm9JbmRleCA9PSBtX2xlbmd0aCAtIDEpCisgICAgICAgIHJldHVybjsKKworICAgIGlu
dCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9
IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVG
b3IobmV3TGVuZ3RoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFja2luZ1N0b3JlKTsKKyAgICBE
aWdpdCogZGF0YSA9IHN0YXRpY19jYXN0PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gdGhpcy0+
ZGlnaXQoaSk7CisKKyAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICBtX2xlbmd0
aCA9IG5ld0xlbmd0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDI3ODI4NGM3OTg2MTZjNWNhYjE2
MjVhZjIxOWJkNDFlMTZlNzMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBh
cnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
QmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworcHVibGljOgorCisgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3Ro
KTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIHplcm9Jbml0aWFsaXplKTsKKworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKworICAgIGlubGluZSBzdGF0aWMg
aW50IHNpemVGb3IoaW50IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBsZW5ndGggKiBE
aWdpdFNpemU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtKQorICAgIHsKKyAgICAgICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVh
dGUoZXhlYywgdm0sIDApOworICAgICAgICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBsZW5ndGgpCisgICAgeworICAgICAg
ICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+
KHZtLmhlYXApKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgp
OworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb21JbnQo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisg
ICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Jp
Z0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEp
OworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBp
ZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19j
YXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0
aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0K
KworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbVVpbnQoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBKU0JpZ0ludCog
YmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBK
U0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCAxKTsKKyAgICAgICAgYmlnSW50
LT5maW5pc2hDcmVhdGlvbihleGVjLCB2bSk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwg
c3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUFueUludChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisgICAgICAgIAorI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRT
dHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IHZtKTsKKworICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNl
dERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBi
aWdJbnQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50
LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKyNlbHNlCisgICAgICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4o
dm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDIpOworICAg
ICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBib29sIHNp
Z24gPSBmYWxzZTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUg
Kj0gLTE7CisgICAgICAgICAgICBzaWduID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIERp
Z2l0IGxvd0JpdHMgID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlICYgMHhmZmZmZmZmZik7Cisg
ICAgICAgIERpZ2l0IGhpZ2hCaXRzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KCh2YWx1ZSA+PiAzMikg
JiAweGZmZmZmZmZmKTsKKworICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGxvd0JpdHMpOwor
ICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGhpZ2hCaXRzKTsKKyAgICAgICAgYmlnSW50LT5z
ZXRTaWduKHNpZ24pOworI2VuZGlmCisgICAgICAgIAorICAgICAgICByZXR1cm4gYmlnSW50Owor
ICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUJvb2xlYW4oRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmln
SW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVh
cCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBi
aWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdp
dCgwLCAxKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgICAg
ICBpZiAobV9sZW5ndGgpIHsKKyAgICAgICAgICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobV9s
ZW5ndGgpKTsKKyAgICAgICAgICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihi
YWNraW5nU3RvcmUpOworICAgICAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRh
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRTaWduKGJv
b2wgc2lnbikgeyBtX3NpZ24gPSBzaWduOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduOyB9CisKKyAgICB2b2lkIHNldExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3Ro
ID0gbGVuZ3RoOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50
IHJhZGl4KTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcykKKyAgICB7CisgICAgICAgIGlmIChzLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLCBzLmNoYXJhY3RlcnM4KCkp
OworICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMsIHMuY2hhcmFjdGVyczE2KCkp
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nR2VuZXJp
YyhFeGVjU3RhdGUqLCBKU0JpZ0ludCosIGludCByYWRpeCk7CisKKyAgICBib29sIGlzWmVybygp
CisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgICAgIHJl
dHVybiBsZW5ndGgoKSA9PSAwOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0m
IHZtLCBTdHJpbmdWaWV3IHMsIENoYXJUeXBlKiAgZGF0YSkKKyAgICB7CisgICAgICAgIGludCBs
ZW5ndGggPSBzLmxlbmd0aCgpOworCisgICAgICAgIGludCBwID0gMDsKKyAgICAgICAgd2hpbGUg
KHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQorICAgICAgICAgICAgKytw
OworCisgICAgICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgICAg
ICBpZiAocCArIDEgPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcwJyAm
JiAoZGF0YVtwICsgMV0gPT0gJ2InIHx8IGRhdGFbcCArIDFdID09ICdCJykpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBm
YWxzZSk7CisKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsgMV0g
PT0gJ3gnIHx8IGRhdGFbcCArIDFdID09ICdYJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBh
cnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAxNiwgZmFsc2UpOworCisgICAg
ICAgICAgICBpZiAoZGF0YVtwXSA9PSAnMCcgJiYgKGRhdGFbcCArIDFdID09ICdvJyB8fCBkYXRh
W3AgKyAxXSA9PSAnTycpKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2
bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgOCwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBzaWduID0gZmFsc2U7CisgICAgICAgIGlmIChwIDwgbGVuZ3RoKSB7CisgICAgICAgICAg
ICBpZiAoZGF0YVtwXSA9PSAnKycpCisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAg
ZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBzaWduID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0aCwgcCwg
MTApOworCisgICAgICAgIGlmIChyZXN1bHQgJiYgIXJlc3VsdC0+aXNaZXJvKCkpCisgICAgICAg
ICAgICByZXN1bHQtPnNldFNpZ24oc2lnbik7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGljIEpTQmln
SW50KiBwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGlu
dCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmlu
ZyA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoID49IDApOworICAgICAgICBp
bnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0
YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAm
JiBkYXRhW3BdID09ICcwJykKKyAgICAgICAgICAgICsrcDsKKworICAgICAgICBpbnQgZW5kSW5k
ZXggPSBsZW5ndGggLSAxOworICAgICAgICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKKyAg
ICAgICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5k
ZXhdKSkKKyAgICAgICAgICAgIC0tZW5kSW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0gZW5kSW5k
ZXggKyAxOworCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBj
cmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBpbnQgbGltaXQwID0gJzAnICsgKHJhZGl4
IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChyYWRpeCAt
IDEwKTsKKyAgICAgICAgaW50IGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKworICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBsZW5ndGgg
LSBwKTsKKyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplKHRydWUpOworCisgICAgICAgIGZvciAo
aW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgeworICAgICAgICAgICAgdWludDMyX3Qg
ZGlnaXQ7CisgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0
MCkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7CisgICAgICAgICAgICBl
bHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQorICAgICAgICAgICAg
ICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0
YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8IGxpbWl0QSkKKyAgICAgICAgICAgICAgICBkaWdpdCA9
IGRhdGFbaV0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nh
c3Q8dWludHB0cl90PihyYWRpeCksIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oZGlnaXQpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChwID09IGxlbmd0aCkgeworICAgICAgICAgICAgcmVzdWx0
LT5yaWdodFRyaW0odm0pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCog
YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiwgVk0mLCBpbnQgcmFkaXgsIGludCBjaGFyY291bnQpOwor
CisgICAgdHlwZWRlZiB1aW50cHRyX3QgRGlnaXQ7CisgICAgc3RhdGljIGNvbnN0IGludCBCaXRz
UGVyQnl0ZSA9IDg7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdpdFNpemUgPSBzaXplb2YoRGln
aXQpOworICAgIHN0YXRpYyBjb25zdCBpbnQgRGlnaXRCaXRzID0gRGlnaXRTaXplICogQml0c1Bl
ckJ5dGU7CisgICAgc3RhdGljIGNvbnN0IGludCBIYWxmRGlnaXRCaXRzID0gRGlnaXRCaXRzIC8g
MjsKKyAgICBzdGF0aWMgY29uc3QgRGlnaXQgSGFsZkRpZ2l0TWFzayA9ICgxdWxsIDw8IEhhbGZE
aWdpdEJpdHMpIC0gMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heEludCA9IDB4N0ZGRkZGRkY7
CisKK3B1YmxpYzoKKworICAgIC8vIFRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHRoZSBjdXJyZW50
IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHdvdWxkIGJlCisgICAgLy8gTWF4SW50IC8gRGlnaXRC
aXRzLiBIb3dldmVyLCB3ZSB1c2UgYSBsb3dlciBsaW1pdCBmb3Igbm93LCBiZWNhdXNlCisgICAg
Ly8gcmFpc2luZyBpdCBsYXRlciBpcyBlYXNpZXIgdGhhbiBsb3dlcmluZyBpdC4KKyAgICAvLyBT
dXBwb3J0IHVwIHRvIDEgbWlsbGlvbiBiaXRzLgorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TGVu
Z3RoID0gMTAyNCAqIDEwMjQgLyAoc2l6ZW9mKHZvaWQqKSAqIEJpdHNQZXJCeXRlKTsKKworcHJp
dmF0ZToKKworICAgIHZvaWQgcmlnaHRUcmltKFZNJik7CisKKyAgICAvLyBEaWdpdCBhcml0aG1l
dGljIGhlbHBlcnMuCisgICAgc3RhdGljIGlubGluZSBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBE
aWdpdCBiLCBEaWdpdCogY2FycnkpOworICAgIHN0YXRpYyBpbmxpbmUgRGlnaXQgZGlnaXRTdWIo
RGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGJvcnJvdyk7CisgICAgc3RhdGljIGlubGluZSBEaWdp
dCBkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogaGlnaCk7CisgICAgc3RhdGljIGlu
bGluZSBEaWdpdCBkaWdpdERpdihEaWdpdCBoaWdoLCBEaWdpdCBsb3csIERpZ2l0IGRpdmlzb3Is
IERpZ2l0KiByZW1haW5kZXIpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdFBvdyhEaWdpdCBiYXNl
LCBEaWdpdCBleHBvbmVudCk7CisKKyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdlNtYWxsKEV4
ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50
LCBEaWdpdCogcmVtYWluZGVyKTsKKworICAgIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0Jp
Z0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNCaWdJbnQq
IHJlc3VsdCk7CisgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgbXVsdGlwbGllciwg
RGlnaXQgcGFydCk7CisKKyAgICBpbmxpbmUgRGlnaXQgZGlnaXQoaW50IG4pCisgICAgeworICAg
ICAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChtX2Rh
dGEpOworICAgICAgICBEaWdpdCogZGF0YVB0ciA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGFQdHJbbl07CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgc2V0RGlnaXQoaW50IG4s
IERpZ2l0IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVuZ3Ro
KCkpOworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0g
bV9kYXRhLmdldCgpOworICAgICAgICBkaWdpdFB0cltuXSA9IHZhbHVlOworICAgIH0KKworICAg
IGJvb2wgbV9zaWduOworICAgIGludCBtX2xlbmd0aDsKKyAgICBDYWdlZEJhcnJpZXJQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgRGlnaXQ+IG1fZGF0YTsKK307CisKK2lubGluZSBKU0JpZ0ludCog
YXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlz
QmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBkMDMwNDUyMjBkNWU5NTI2N2VkOWY4ZjdiOWQzMzY1YTgz
MTc5ZGQzLi40ZTk2NjAxNGM1ZTE0YTlmYzk3NWQzZGFkMmU5NjVlMWJkYjQ1NGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgpAQCAtMzc2LDYgKzM3NywxMiBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9T
dHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVy
cgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9y
VmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50KCkpIHsKKyAgICAgICAgU3RyaW5nIGJp
Z0ludFN0cmluZyA9IEpTQmlnSW50Ojp0b1N0cmluZyhleGVjLCBhc0JpZ0ludChhc0NlbGwoKSks
IDEwKTsKKyAgICAgICAgaWYgKGJpZ0ludFN0cmluZy5sZW5ndGgoKSA9PSAxKQorICAgICAgICAg
ICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYmlnSW50U3Ry
aW5nWzBdKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0ludFN0
cmluZyk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYzI0ZWE1YmJmMzU0N2I0ZmZk
NDVkZWViYTZkZTQxZjI2MTk2ZTM4ZS4uOWYzOWEzYzdkZTA3N2QyM2RlMDJkYjE5MmFhNDNkMjBl
MjAyN2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApA
QCAtMjIyLDYgKzIyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW55SW50KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAg
ICBib29sIGlzQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCBhMjdmNmExMTFiYmQ1YmNlZWJhMjNjZmNmMjgzZmZkNWZhMTA0Yzc3Li4yNzkw
NTdhMzU2MjY0YTBkNTYxY2I5OTBlN2E5MjhkMmM2MDQ2ZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNTc4LDYgKzU3OSwxMSBAQCBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5p
c1N0cmluZygpOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworfQorCiBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgp
ICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgpOwpAQCAtNzE1LDEwICs3MjEsMTcgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBu
dW1iZXIsIEpTVmFsdWUKIAogQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChpc0ludDMyKCkp
CiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAg
IHJldHVybiBhc0RvdWJsZSgpOworICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhc3QgZnJvbSAnQmlnSW50JyB0
byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgICAgIHJldHVybiBQTmFOOworICAg
IH0KKwogICAgIHJldHVybiB0b051bWJlclNsb3dDYXNlKGV4ZWMpOwogfQogCkBAIC0xMDIwLDYg
KzEwMzMsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgp
LT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
YXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmluZyh2MikpOworICAgIGlmICh2MS5pc0Jp
Z0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxU
b0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSksIGFzQmlnSW50KHYyLmFzQ2VsbCgpKSk7CiAg
ICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcAppbmRleCAxNDM0NmU4YWMwZWU3ZmJjMWJjMzU3OWVlNjNmNWNiMTZhOTYwODM3Li43
OTRiYzc3ZTIwMjFmMDMzNTRhYTY2MTQyMzNjZGQ1OTVkY2EwYjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpT
Q2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
IHByZWZlcnJlZFR5cAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcq
Pih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3lt
Ym9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+
dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1p
dGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAK
QEAgLTE4MSw2ICsxODMsOCBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjbwogICAgIEFTU0VSVCgh
aXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3Qp
OworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NF
UlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRo
aXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCA5ZmMwYzliMDk0MDE2NDBmYjE1ZDUyNTFhNDE3ZWI4NDg2
MGQ2Y2NkLi43MWY5OWQ5N2NmNWNkMjkxY2NlNWMzNTRjYTlhYzYyYjk0OTc1YjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTEyLDYgKzExMiw3IEBAIHByb3Rl
Y3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlzU3Ry
aW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1i
b2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRl
clNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCmluZGV4IDU3MGYwOTRiYWQ0YjA3YTExYWVlMjA2MDdkZTBhNzY4MWY3ZmRjM2Uu
Ljk4MzZiMzQ3MDVlMGE3NTYwMDQ3OTYzMTg5ZWJkZmE4Mzc3NzY1NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIwMSw2ICsyMDEsMTEg
QEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJpZ0ludFR5cGU7Cit9CisKIGlubGluZSBib29s
IEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGUgPT0gU3ltYm9s
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBmMTgyNWU5ZTYyYmU1MjJkYjFlZWFhNDJhNjZlYmViODhkYjk5ODhhLi4yOGE5
MjgwNDBkNmZjYzIzZTc5MzE4YWE3MzIwZWM1ZTU5NDNmMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MzcsNyArNjM3LDcg
QEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG8KIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwKIAogICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlM
VElOX1RZUEUoQ1JFQVRFX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRSkKLSAgICAKKwogI3Vu
ZGVmIENSRUFURV9DT05TVFJVQ1RPUl9GT1JfU0lNUExFX1RZUEUKIAogICAgIG1fZXJyb3JDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGVycm9yQ29uc3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGMxYzAzODZkNTY1
MGEyMzIxM2I2MDkzZThhMGI2YTQzYTM0ZDllNDQuLjZmYTJmNzJlYTJlNzI4ZWNiNDgxZWJiYmQ2
MjIyZmU0M2Y1MjlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAKQEAgLTI2LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMu
aCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODUzNTZkMzk3N2FlZDVjNzNiODlh
ZmYwNWM5N2MyNDJmOTViYjRlYS4uNTc3ZDE4ZTAyNWMxMWE5OTJjZTE2Yzg1MGNiMjIxOGUyMWM2
YzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTMzLDYgKzMz
LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdU
eXBlLAogICAgIFN5bWJvbFR5cGUsCisgICAgQmlnSW50VHlwZSwKIAogICAgIEN1c3RvbUdldHRl
clNldHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCBlOGYzMTZjZjQyYjhlOTI4OWZjYTA4OWI0
ODMxMjE1YjdhMzAyMDMzLi4wZmRjN2MzNTY1Y2U4YWIxZGRlYzUxZGVmZDRjZjM4NTJjMzk5ODU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC02Niw2
ICs2NiwyNSBAQCBpbmxpbmUgaW50IGNsejMyKHVpbnQzMl90IG51bWJlcikKICNlbmRpZgogfQog
CitpbmxpbmUgaW50IGNsejY0KHVpbnQ2NF90IG51bWJlcikKK3sKKyNpZiBDT01QSUxFUihHQ0Nf
T1JfQ0xBTkcpCisgICAgaW50IHplcm9Db3VudCA9IDY0OworICAgIGlmIChudW1iZXIpCisgICAg
ICAgIHplcm9Db3VudCA9IF9fYnVpbHRpbl9jbHpsbChudW1iZXIpOworICAgIHJldHVybiB6ZXJv
Q291bnQ7CisjZWxzZQorICAgIGludCB6ZXJvQ291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSA2
MzsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKCEobnVtYmVyID4+IGkpKQorICAgICAgICAg
ICAgemVyb0NvdW50Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gemVyb0NvdW50OworI2VuZGlmCit9CisKIC8vIFRoaXMgaW4gdGhlIFRvSW50
MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNw
ZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMy
IG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KIC8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBh
dHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1wbGVtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDZkMTA1
NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAuLjk3Y2ZhMDdhOTY5NDAyMjI1NmM5
YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9y
VmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgaWYgKHYu
aXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zeW1ib2xTdHJpbmco
KTsKKyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LmJpZ2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIg
Zm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApAQCAtMTEyLDcgKzExNCw3IEBAIGJv
b2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikK
ICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxs
KCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9s
VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8
fCB0eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlw
ZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZt
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNzhlNzdhZDE4
NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJhMzI3ZjBkNWQyZDYwMDYyYWIzNTRk
ZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9u
ID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQsIHRydWUsIE5v
cm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBpbiBmYXN0IFRMUy4gSWYgZmFs
c2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAogICAgIHYoYm9vbCwgdXNlQ2Fs
bElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3
aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdhc20gdG8gSlMgY2FsbHMuIikg
XAogICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFkIGZlYXR1cmUuIikgXAorICAgIHYo
Ym9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUg
QmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmls
aW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5
IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3
aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilcCiAgICAgdihib29sLCBmb3JjZVBv
bHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlz
IGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKaW5kZXggMTJmNDUzZTc2
MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAwYzlmMTVkNy4uNGVkMTFmOGZlZDJjOGM0YmZmMGU0MmM4
NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwogY2xhc3MgUHJvdG90eXBlS2V5IHsKIHB1YmxpYzoKICAg
ICBQcm90b3R5cGVLZXkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmgKaW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2ZjhkMGYz
OC4uODg1MGM0YTlhMzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhz
eW1ib2wpIFwKKyAgICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0U3RyaW5nKCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBl
OjpCaWdJbnQ6CisgICAgICAgICAgICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDc1ZmQ3NWIwZWIx
OGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2NjdjLi45ZjU3OGU4YWJjNTQxNjAwMzk0MTg1OGJhYWZi
MzFjODhlNzA3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2Fj
aGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKaW5k
ZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2NlYWNiYTZkMmI3OWI0ZDlmZTU1NS4uMjU3MGI3MmUzYmM0
YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4ZGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcwOWE3ZjU0
MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFjZTguLjNiZmNmNTcxZjRhODdhMzFlYmY5MDVkNjhkNGI1
MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZQogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlw
ZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0KIAog
aW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZW9mVHlwZS5jcHAKaW5kZXggZGIxNjJiN2Y0ZjRjZTIzZmI4ODA1NmRkZjQxYzQ4ZGUzMGQ1
NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVkYWU0YzFhNDgzNjBkNDBlZjhiYmM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlwZSkK
ICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1bmN0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAg
ICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4IDMzMmZhODEyMTkyYTVhNjJlYjY2YmM2MWIyODA4
YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0MWM2ZGI3NjJjZTgxMDZmZjI4NTNhNmM1OTcwYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKQEAgLTMxLDYgKzMx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgVHlwZW9mVHlwZSB7CiAgICAgVW5k
ZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAogICAgIE51bWJlciwKICAgICBTdHJp
bmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjIwMDg1NzNmZTAyYTQ1
Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5YS4uNTk3ZGM1M2EwNTAwMTJkYWM3OTEwOTE4ZmM5MDQy
MTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdy
YXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgwLDYgKzI4MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgq
dGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNldEl0ZXJhdG9yU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGJpZ0ludFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBl
OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhp
cywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNTU0YjM1MGQ0MTg1MTVlNDhiNmY4ZmNjMGU4NGVjMDE3
MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRmMzQxMmE2OTZiOGRiMzc3MzJkNDNmZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM4OCw2ICszODgsNyBAQCBwdWJsaWM6CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBt
YXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1
cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAg
ICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhmODk4YzlmYzRiMTcyOTZjYzczYmU1
NmEzM2Y1NmZkMDZiNzY5Yi4uZWQzYTEzODI1NmVkYzY0YWU1NWU4YTJiMWVlNTdmYTUzYmVkN2M0
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBKU0JpZ0ludCwgQmlnSW50
Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgor
CiAyMDE3LTExLTE2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgW1dpbkNhaXJvXSBVcGRhdGUgV2luQ2Fpcm9SZXF1aXJlbWVudHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCmluZGV4IDQxMWU5YTc1MzIzODY5Mjg5MmU5MzYyMDZmY2NlNzQ5YjE3
OGVjYmQuLjljMDA2MjYzNTg5MTBkOTY3ZGU0NzhiNzljMmY5MjFjNTEwMzM0NzIgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwxMCBAQCBkZWYgcnVuRGVmYXVs
dCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigiZGVmYXVsdCIsICooRlRM
X09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5C
aWdJbnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWct
aW50LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25h
bFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExf
T1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykp
CiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzFlZDIyMzdjZGFhNDEzMjQzZWViZTQwZmEyYmFhZmIzYTU2NmVlMS4uYzJkMzdmNTU4
Zjk3ZGVmZWIwZmRlMzc0YzkwYzU1MTRlMmY5ODRlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMS0x
NyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJbnQsIEJpZ0ludENvbnN0cnVjdG9yIGFuZCBCaWdJbnRQ
cm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogYmlnSW50VGVzdHMueWFtbDogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0
ZXJhbHMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93
U3ludGF4RXJyb3IpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKwogMjAxNy0xMS0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYXJrIHJlZ3Jlc3MtMTc4
Mzg1LmpzIGFzIG1lbW9yeSBleGhhdXN0aW5nCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRl
c3RzLnlhbWwgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiMTc3ZTI2
MjZjMjU0ODhjM2EyOGQ5NWQxNmU3NTQ2MjU3MjVmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvYmlnSW50VGVzdHMueWFtbApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAx
NyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJ
bnQgdGVzdHMuIFRvIGJlIHJlbW92ZWQgb25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhp
bmQgYSBmZWF0dXJlIGZsYWcuCisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFs
cy5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10
eXBlLW9mLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRl
cmFscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NmM3OTIwMDEzNDFhMDU4MzllYjZiYjY4MTkyZjA5Y2JjYWEw
NWY1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5q
cwpAQCAtMCwwICsxLDEwNiBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNz
ZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlucHV0KSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9y
KTsKKyAgICB9Cit9CisKKy8vIFRlc3QgMCBjb252ZXJzaW9ucworbGV0IG4gPSAwbjsKK2Fzc2Vy
dChuID09PSAwbik7CisKK24gPSAwMG47Cithc3NlcnQobiA9PT0gMG4pOworCisvLyBCaW5hcnkg
cmVwcmVzZW50YXRpb24KKworbiA9IDBiMTExMW47Cithc3NlcnQobiA9PT0gMTVuKTsKKworbiA9
IDBiMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworbiA9IDBiMDEwbjsKK2Fzc2VydChuID09PSAy
bik7CisKK2xldCBiaW5hcnlTdHJpbmcgPSAiMGIxIjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4
OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsKKworbiA9IGV2YWwoYmluYXJ5U3RyaW5n
ICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3Njgy
MTE0NTZuKTsKKworbiA9IDBCMTExMW47Cithc3NlcnQobiA9PT0gMTVuKTsKKworbiA9IDBCMTBu
OworYXNzZXJ0KG4gPT09IDJuKTsKKworYmluYXJ5U3RyaW5nID0gIjBCMSI7Citmb3IgKGxldCBp
ID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBldmFs
KGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYz
Mzc0NjA3NDMxNzY4MjExNDU2bik7CisKKy8vIE9jdGFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAw
bzduOworYXNzZXJ0KG4gPT09IDduKTsKKworbiA9IDBvMTBuOworYXNzZXJ0KG4gPT09IDhuKTsK
KworbiA9IDBvMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwbzAwMDIwbjsKK2Fzc2Vy
dChuID09PSAxNm4pOworCituID0gME83bjsKK2Fzc2VydChuID09PSA3bik7CisKK24gPSAwTzEw
bjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOwor
CituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworLy8gSGV4YWRlY2ltYWwgcmVwcmVz
ZW50YXRpb24KKworbiA9IDB4YW47Cithc3NlcnQobiA9PT0gMTBuKTsKKworbiA9IDB4ZmZuOwor
YXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHgwMDBmZm47Cithc3NlcnQobiA9PT0gMjU1bik7
CisKK24gPSAweGZhYmNuOworYXNzZXJ0KG4gPT09IDY0MTg4bik7CisKK2Fzc2VydFRocm93U3lu
dGF4RXJyb3IoIjBiMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMDJuIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIwYjFubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG84
OW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvMDhuIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIwbzdubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhnbiIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMHgwZ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Zm5u
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMDBubiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMWEwbm4iKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBl
LW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
M2NkMzAxMjQ2Yjk1OGY0YzZkNGRhMTFhZjdjZDBhNmI0MDkyYWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKQEAgLTAsMCArMSwxMCBAQAorLy9A
IHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCithc3NlcnQodHlw
ZW9mIDBuID09PSAiYmlnaW50Iik7Cithc3NlcnQodHlwZW9mIDFuICE9PSAib2JqZWN0Iik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327301</attachid>
            <date>2017-11-17 20:18:01 -0800</date>
            <delta_ts>2017-11-19 10:13:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171118021759.patch</filename>
            <type>text/plain</type>
            <size>91047</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZTYyYTQzN2NhNGYxMDYx
N2EyYWI0NDVmMzBkNGFjNGYzYzVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJbnRD
b25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJl
IGludHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBp
dCBvbiBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1d
IAorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgb24gSlNC
aWdJbnQ6Om1fZGF0YSB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9ybWFuY2Ug
ZHVlIHRvIGNhY2hlIGxvY2FsaXR5IGFuZCBhbGxvd2luZworICAgICAgICA2NC1iaXR3aXNlIChv
ciAzMi1iaXR3aXNlKSBhcml0aG1ldGljIG9wZXJhdGlvbnMuIEpTQmlnSW50IGFsc28gaGFzIG1f
c2lnbgorICAgICAgICB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQgbV9s
ZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEgYXJl
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXByZXNl
bnRhdGlvbiwgSlNCaWdJbnQ6Om1fZGF0YVswXSByZXByZXNlbnRzCisgICAgICAgIHRoZSBsZWFz
dCBzaWduaWZpY2FudCBkaWdpdCBhbmQgSlNCaWdJbnQ6Om1fZGF0YVttX2xlbmd0aCAtIDFdIHJl
cHJlc2VudHMgdGhlIG1vc3QKKyAgICAgICAgc2lnaW5pZmljYW50IGRpZ2l0LgorCisgICAgICAg
IFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRjaCB0aGUgQmlnSW50IGxpdGVy
YWxzIExleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBzdXBwb3J0LiBUaGUgb3BlcmF0
aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJlaW5nCisgICAgICAgIGltcGxl
bWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2UgZmVhdHVyZXMgYXJlIGJlaW5n
IGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0tdXNlQmlnSW50IiBhbmQKKyAg
ICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vu
cy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFic29sdXRl
RGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGltYXRlZFNpemUpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUludCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVGcm9tVWludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVGcm9t
QW55SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb21Cb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNp
Z24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmlzWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFzQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1i
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpjbHo2NCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVLZXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Nt
YWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnR5cGVTdHJpbmcgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZlYXR1cmUgZGVmaW5lIGZvciBhbHRlcm5hdGl2ZSBwcmVzZW50YXRpb24gYnV0dG9uIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTljNGE5OWJhYjA1MDgwN2U2
NzI2ZTE2YmIyNTlhZDAyYjI2NGQ3MC4uZWYyNTJjM2FkNzM2NWYzNjc2ZWM0MDM2OGViZTRkNzc5
ZWFiYTNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5Miw3ICs3OTIsNyBA
QAogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291
cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsg
fTsKLQkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhEMTFFREI1NjcyMDAzRjJC
MEIgLyogUGFyc2VJbnQuaCAqLzsgfTsKKwkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBh
cnNlSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3
ODFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50
ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0
aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTI5LDYgKzExMjksNyBAQAogCQk4NjcwNEI4ODEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1
NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFD
MTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QURE
MTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVF
QzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zNjQ0LDYgKzM2NDUsOCBAQAogCQk4Njg4MEYxQjE0MzI4
QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJ
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCaWdJbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmln
SW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlnSW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkND
IC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdWx0
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1NTY0NTFCMDA0
NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlci5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBMb3dM
ZXZlbEludGVycHJldGVyLmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcg
LyogTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbGluZUVuZGluZyA9
IDA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU4NTIsMTQgKzU4NTUsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJNTM2QjMxOTgxRjczNUU1QzAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tICov
LAotCQkJCTUzNkIzMTk2MUY3MzVFNUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAq
LywKLQkJCQk1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0g
Ki8sCi0JCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1t
ICovLAotCQkJCTUzMEE2NkI1MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEuY3Bw
ICovLAorCQkJCTUzNkIzMTk2MUY3MzVFNUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3Bw
ICovLAorCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5t
bSAqLywKIAkJCQk1MzZCMzBEMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMuY3Bw
ICovLAorCQkJCTUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5t
bSAqLywKIAkJCQk1MzZCMzBFMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQuY3Bw
ICovLAorCQkJCTUzMEE2NkI1MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5t
bSAqLywKIAkJCQk1MzZCMzBFMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3Bw
ICovLAogCQkJCTUzNkIzMEVBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNi5jcHAg
Ki8sCiAJCQkJNTM2QjMwRTkxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCAq
LywKQEAgLTY0ODcsNiArNjQ5MCw4IEBACiAJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8q
IEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJCThCQzA2NDg3MUUxQTU4M0YwMEIyQjhDQSAvKiBK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJCThCQzA2NDg4MUUxQTU4NDAwMEIy
QjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCAqLywKKwkJCQk4Njg5MjFDMzFGOUMy
OTQ3MDAxMTU5RjYgLyogSlNCaWdJbnQuY3BwICovLAorCQkJCTg2ODkyMUMxMUY5QzBDQjcwMDEx
NTlGNiAvKiBKU0JpZ0ludC5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlND
YWxsZWUuY3BwICovLApAQCAtODc0NSw2ICs4NzUwLDcgQEAKIAkJCQk4QkMwNjQ4OTFFMUFCQTY0
MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxQTBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4OTgsMTQgKzk5
MDQsMTQgQEAKIAkJCQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRl
bC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4
Nl9zeW4uYyBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTlBMUY3MzVFNzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzNkIzMTlCMUY3MzVFNzgw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUzMEE2
NkI5MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSBp
biBTb3VyY2VzICovLAotCQkJCTUzMEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTVGMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE5QjFGNzM1RTc4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTItbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZC
MzE1NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNTgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTY2MUY3MUM1OTkw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzBBNjZC
QjFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MzZCMzE2NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2QjMxNkYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTZFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCA3MGU0YTMyNTcwNDIyNTU2ZGFjNzNiNzJmOWUyMTliMmUyNzBlNDM3Li5hNTg3OGI1Mjdk
ZDk0ZDRjYjdhOTlmYjRjMzRiYTNiOGMxMDU1YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC03NjQsNiArNzY0LDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9u
LmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmln
SW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCiBydW50aW1lL0pTQ2FsbGVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYWZmNGIwYzZmZDMwYzkzYWI2MGUyYzVmODU4MWI4N2Mx
Yjk2Njc4Li42ZmM0ZjY4YzVhYWYxNjc2NzVmMGE3NmI1NjNlYjAzZGZlYzE4YjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMs
NyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVE1hdGhJQy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZTM5OGQ2MTFiYmE4MTI3NDRjZWJmYjVjYmY4
OTc2NDk5MGU1NTAuLjU5ZDQ0NjY2YWYxZmE3NmZkZGJmYWNhZTM5MWFhMWI5OWQ0YzRiZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgpAQCAtMTc4Myw2ICsxNzg0LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJ
RCogZHN0CiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFN5bWJvbFR5cGUp
OwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKKyAgICAg
ICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9pc19jZWxsX3dpdGhfdHlwZSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyY0luZGV4KTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoQmlnSW50
VHlwZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgICAgIHJld2luZFVu
YXJ5T3AoKTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX29iamVjdF9vcl9udWxs
KTsKQEAgLTMxMjUsNiArMzEzNCwxNiBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRk
Q29uc3RhbnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBtX2NvZGVCbG9jay0+
YWRkQ29uc3RhbnRCdWZmZXIobGVuZ3RoKTsKIH0KIAorSlNCaWdJbnQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorewor
ICAgIEpTQmlnSW50KiYgYmlnSW50SW5NYXAgPSBtX2JpZ0ludE1hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIWJpZ0ludEluTWFwKSB7
CisgICAgICAgIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsICp2bSgp
LCBTdHJpbmdWaWV3KGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgYWRkQ29uc3RhbnRW
YWx1ZShiaWdJbnRJbk1hcCk7CisgICAgfQorICAgIHJldHVybiBiaWdJbnRJbk1hcDsKK30KKwog
SlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0
cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCAyYjI0MjY0MTgwM2JkNDA1MmFlNWEyYjZhMDk3NWRhMDQwZDVhZjdi
Li41NTg4ZjYyMjUyODRlMjM3ZTAzM2MyOTdjYjBhYjA4N2EyNTZhMzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtMTAwMiw2ICsxMDAz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwg
SlNWYWx1ZT4gTnVtYmVyTWFwOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmlu
Z0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFw
OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU0JpZ0ludCos
IElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyQmlnSW50TWFwOwogICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxhdGVS
ZWdpc3RyeUtleU1hcDsKICAgICAgICAgCiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwo
KSBhbmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgpAQCAt
MTA4OCw2ICsxMDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IEpTQmlnSW50KiBhZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVS
ZWdpc3RyeUtleT4mJik7CiAKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7IH0KQEAgLTExODcsNiArMTE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVk
LCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0
aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1h
cCBtX2pzVmFsdWVNYXA7CiAgICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7
CisgICAgICAgIElkZW50aWZpZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBs
YXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAgICAgIFN0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1
Y3Rpb25zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMjM1YWE2YjFiYTQzMzllOTM5NTQwZDdlYmNhNzBkZjgwODQ3
ZjMyMC4uNjA5NzFiOGMyNzI2Y2ZhMWM3NjExOWVmNjM0ZmI4NGNlODk4MjkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMTIyLDYgKzEyMiwxMSBAQCBKU1ZhbHVlIFN0cmluZ05vZGU6OmpzVmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKICAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZFN0cmlu
Z0NvbnN0YW50KG1fdmFsdWUpOwogfQogCitKU1ZhbHVlIEJpZ0ludE5vZGU6OmpzVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmFkZEJpZ0ludENvbnN0YW50KG1fdmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNGNh
YWY1ZmE0NTU2OGJjZmE2Y2YxYjRiZmRjNjRiNDE1NmFjYmY4ZS4uNWUyYzQ3NjRjMjFhNzI1NzIx
NzQzYzc1ZDY5NDIzNTNhMGI3MmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTc1LDcgKzE3
NSw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9v
bCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9U
aGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsm
XShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8g
dHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlz
T2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBT
eW1ib2xUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50
eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUu
dHlwZSgpID09IEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVp
dGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCmluZGV4IDM1ZTg0YTVjMTQ1MTdlYmVkOGQ2MTQ4NzFmOWFjN2JlYjAyNGQ2MDAuLmRj
Mjk0ZjEwZTNlZjU0MGNkNDZhZWM3MGQ0MGIwM2IwYzRlZGYxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjAyLDYgKzIw
Miw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6CisgICAgY2FzZSBCaWdJbnRUeXBlOgog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVu
Y3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgIGFyZ3VtZW50cykpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGI5Zjc4MzA4MTc0
ODE4YWViNTMwMDBhNDY4ODgyNDJkM2JlNzExNDQuLjhmMTdhZTNlNmQ1OGI4ZTBjZTNiNzljMzRm
NjVhM2UxMjNiMGM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXIuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxM2U2
ZTU1MjgwYmNkYjA0OGYyMjUyYjEyNWMzMWRmM2RhZS4uNzFlMTEyMDNkNGFhYThhZTFjZmZmNzIz
YzVhMTY3OTU4NWE3NzVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTIzMiw2ICsyMzIsMTIgQEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMo
KTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRp
b24sIGQpOwogICAgIH0KKyAgICAKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCkK
KyAgICB7CisgICAgICAgIGluY0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBCaWdJbnROb2RlKGxvY2F0aW9uLCAqYmlnSW50KTsKKyAgICB9CiAKICAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZlZTZjNWRiZDU5YWRlMzdmMmQxYjIyZDI5MTY0OGFkMjk2
ZjU0MWQuLjYzMzcxOTlhNzliNzgyOGViZmJiYWI1OTIwMDM3OWJiMmQxYTY5YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB0eXBl
bmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVM
aXRlcmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19J
TkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKIHsK
ICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2ltYWwgdmFsdWVzIGZpdCBpbnRvIDQg
Ynl0ZXMuCiAgICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpAQCAtMTUxMiw5ICsxNTEyLDkgQEAg
QUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICAtLW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0
KG1fY3VycmVudCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlmIChtYXhpbXVtRGln
aXRzID49IDApIHsKKyAgICBpZiAobWF4aW11bURpZ2l0cyA+PSAwICYmIFVOTElLRUxZKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnbicpKSB7CiAgICAgICAg
IHJldHVyblZhbHVlID0gaGV4VmFsdWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBpbiB0aGUgaGV4VmFsdWUgYnVm
ZmVyLgpAQCAtMTUzMyw3ICsxNTMzLDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6
cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAK
KyAgICBpZiAoVU5MSUtFTFkoKG1fY3VycmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTE1NTQsNyArMTU1OCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAg
ICAgICAgLS1kaWdpdDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJyZW50
KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYg
ZGlnaXQgPj0gMCkgeworICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQg
Pj0gMCAmJiBVTkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSkgewogICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xNTcyLDYgKzE1NzYsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmlu
YXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBpZiAoVU5MSUtFTFkoKG1fY3VycmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZl
cjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1OTQsNyArMTYwMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3Rh
bChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlz
QVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlz
QVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKKyAgICBpZiAoIWlzQVNDSUlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmln
SW50KCkgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICduJykpIHsKICAgICAgICAgcmV0dXJuVmFs
dWUgPSBvY3RhbFZhbHVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjEyLDYg
KzE2MTksOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChV
TkxJS0VMWSgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCksIDgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTYzOCw3ICsx
NjQ4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlz
QVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdp
dCA+PSAwICYmIG1fY3VycmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykg
eworICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmIChtX2N1cnJl
bnQgfCAweDIwKSAhPSAnZScgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1f
Y3VycmVudCB8IDB4MjApICE9ICduJykpIHsKICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZGVj
aW1hbFZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIxMTMs
MTMgKzIxMjMsMjMgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBw
cmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VIZXgodG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSkgJiYgVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3Vy
cmVudCB8IDB4MjApID09ICduJykpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsK
KyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIFZlY3RvcjxMQ2hhcj4g
Y29tcGxldGVJZGVudDsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlkZW50LmFwcGVuZCgnMCcp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCd4Jyk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVy
KGNvbXBsZXRlSWRlbnQuZGF0YSgpLCBjb21wbGV0ZUlkZW50LnNpemUoKSk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAg
dG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMTMzLDEzICsyMTUzLDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAg
Ly8gU2hpZnQgb3V0IHRoZSAnYicgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAg
ICAgICAgICAgcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAg
ICBpZiAoIXBhcnNlQmluYXJ5KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpICYmIFVOTElLRUxZKE9w
dGlvbnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7CisgICAg
ICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8TENoYXI+IGNvbXBsZXRlSWRlbnQ7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVJZGVudC5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZUlk
ZW50LmFwcGVuZCgnYicpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKG1f
YnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSBtYWtlSWRlbnRpZmllcihjb21wbGV0ZUlkZW50LmRhdGEoKSwgY29tcGxl
dGVJZGVudC5zaXplKCkpOworICAgICAgICAgICAgfTsKKwogICAgICAgICAgICAgaWYgKGlzSWRl
bnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50
aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVN
QkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNo
cmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTU0LDEzICsyMTg0
LDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnbycgcHJlZml4Lgog
ICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEt
PmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlKSAmJiBVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiAobV9jdXJyZW50
IHwgMHgyMCkgPT0gJ24nKSkgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgVmVjdG9yPExDaGFyPiBjb21w
bGV0ZUlkZW50OworICAgICAgICAgICAgICAgIGNvbXBsZXRlSWRlbnQuYXBwZW5kKCcwJyk7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGVJZGVudC5hcHBlbmQoJ28nKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZUlkZW50LmFwcGVuZChtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoY29t
cGxldGVJZGVudC5kYXRhKCksIGNvbXBsZXRlSWRlbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4g
b2N0YWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0g
VU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0g
dG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAg
ICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMjE4MCwyNCArMjIyMCwzMCBAQCBzdGFydDoKICAgICBjYXNlIENoYXJhY3Rlck51
bWJlcjoKICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBJTlRFR0VSICYmIHRva2VuICE9IERP
VUJMRSkpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VEZWNpbWFsKHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOwotICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbicpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBz
aGlmdCgpOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50
aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBET1VCTEU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElO
VkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwotICAgICAgICAgICAgICAgICAgICAgICAg
Z290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxF
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgobV9jdXJy
ZW50IHwgMHgyMCkgPT0gJ2UnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNl
TnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQg
YWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6
IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0
aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91
YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3Qg
cGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBw
YXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5n
dGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAgICAgICAg
ICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBkODQ1ZTJlMTRm
NTY5YTRkMzhlMmMzZDk5ZWY2YzQ2NzIzMjQzMjIwLi5hZDkwNzY0OGMwMGUxNmRjNDViNmVlOWNj
ZjBhNDQ5NTM2OWE5Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0x
NzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxk
U3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJzZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5M
SU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUs
IFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VS
ZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRN
b2RlKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1
ZSk7CisgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUp
OwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVl
KTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAppbmRleCBhY2RhYzZjYTExNjdkNWRmNGJmNDZhZGRkNzM5YmVjZWM4YmQxOWJmLi41OTk1Njg0
YzU1OTQ0MjRlMmU2YzNkYTE0OTkzMDRhMjdmNjNkNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtOTIsNiArOTIsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBCaWdJbnROb2RlOjpCaWdJ
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IHZhbHVlKQorICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3Ry
aW5nVHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKwogICAg
IGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQogICAgICAgICA6IENvbnN0YW50Tm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMmE2ZGRkMjJjZDhkMTdj
ZWYyYjNkYmY3MTY4YjMyYTk5MmFhY2RjYy4uNTQ5OWY4NmQzYWVkYTZjNzFiNTg2MDQ0ZWU1NmE0
NDdmMTk4OTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTYyLDYg
KzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JpZ0lu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVj
dExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNBcnJheUxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMyOCw2ICszMjksMTgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CiAg
ICAgfTsKIAorICAgIGNsYXNzIEJpZ0ludE5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIEpTVmFsdWUganNWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fdmFsdWU7CisgICAgfTsKKwogICAgIGNsYXNzIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0OTA4OTg1OTkzYWMxYmQ1
NDI2YzRhMTFmMDJkYWE4ZTk4ZDUzMTUwLi5lZWMwNmUzZTFkNWU3OTkxZDAzN2U2ZGZhZDMxYTk0
MmY2NjA3OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00
NDkyLDYgKzQ0OTIsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKIAogICAgICAgICByZXR1
cm4gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKGNvbnRleHQsIGlkZW50LCAqaWRlbnQgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCwgc3RhcnQsIGxvY2F0aW9uKTsKICAgICB9CisgICAg
Y2FzZSBCSUdJTlQ6IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CisgICAgICAgIG5leHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QmlnSW50KGxvY2F0aW9uLCBpZGVudCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5Yzhl
MzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZjNS4uNzc5YTA1YmJmOGJmNGQwMjhkNTcwMmQ3ZTQzNmJk
NjU3YzRkNmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RF
LAogICAgIElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAg
ICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCmluZGV4IDhkYjM1Yzc3OTZmNGQzNmZhNTQ1MjU5MTYwZGM1ODllYjg0
OWQ5NTYuLjE1MzYyN2MwMzg3ZmZkMzY0YjdiNzEzYzlmY2QyOGExMDk3ZGZiNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0
eUJpdCA9IDB4ODAwMDAwMDA7CiAgICAgZW51bSA6IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAg
ICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIs
IFN0cmluZ0V4cHIsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVn
ZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlz
RXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwK
ICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwg
QnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHBy
LCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1
YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdWJsZUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7
IHJldHVybiBEb3VibGVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUx
YmRlNTVmOThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFy
cmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3Jv
KEJpZ0ludCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAog
ICAgIG1hY3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDAwNzk2ZDM4MmY5OWJmZWNkY2MzMjBlZjBiYTcyMTg0
OGRiMjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC0wLDAgKzEsNTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6Cisg
KgorICogQ29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMu
ICBQbGVhc2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQor
ICogQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBbMl0uCisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2Iv
bWFzdGVyL0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9i
bG9iL21hc3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisKKyNkZWZpbmUg
U1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVz
ICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6
OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OworCit2b2lkIEpTQmlnSW50Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNCaWdJ
bnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5tX2RhdGEp
CisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2JqZWN0LT5tX2RhdGEuZ2V0KCkp
OworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50IGxlbmd0aCkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKK3sgfQorCit2b2lkIEpTQmlnSW50Ojppbml0aWFsaXplKGJvb2wgemVyb0luaXRpYWxp
emUpCit7CisgICAgQVNTRVJUKG1fZGF0YSk7CisKKyAgICBzZXRTaWduKGZhbHNlKTsKKyAgICBp
ZiAoemVyb0luaXRpYWxpemUpIHsKKyAgICAgICAgdm9pZCogZGF0YSA9IG1fZGF0YS5nZXQoKTsK
KyAgICAgICAgbWVtc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGRhdGEpLCAwLCBsZW5ndGgo
KSAqIERpZ2l0U2l6ZSk7CisgICAgfQorfQorCisvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMu
CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT0RJR0lUX1QgMQordHlw
ZWRlZiB1aW50NjRfdCBUd29EaWdpdDsKKyNlbGlmIEhBVkUoSU5UMTI4X1QpCisjZGVmaW5lIEhB
VkVfVFdPRElHSVRfVCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2VuZGlmCisK
Ky8vIHtjYXJyeX0gbXVzdCBwb2ludCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBl
aXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgoraW5saW5lIEpT
QmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQq
IGNhcnJ5KQoreworI2lmIEhBVkVfVFdPRElHSVRfVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0
YXRpY19jYXN0PFR3b0RpZ2l0PihhKSArIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICAq
Y2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
aWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGlnaXQgcmVzdWx0ID0gYSArIGI7CisKKyAgICBp
ZiAocmVzdWx0IDwgYSkKKyAgICAgICAgKmNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxp
emVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxl
ZnQgYWxvbmUuCitpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFN1YihEaWdp
dCBhLCBEaWdpdCBiLCBEaWdpdCogYm9ycm93KQoreworI2lmIEhBVkVfVFdPRElHSVRfVAorICAg
IFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSAtIHN0YXRpY19jYXN0
PFR3b0RpZ2l0PihiKTsKKyAgICAqYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRzKSAmIDE7
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAg
ICBEaWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgKmJv
cnJvdyArPSAxOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsK
KyNlbmRpZgorfQorCisvLyBSZXR1cm5zIHRoZSBsb3cgaGFsZiBvZiB0aGUgcmVzdWx0LiBIaWdo
IGhhbGYgaXMgaW4ge2hpZ2h9LgoraW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGln
aXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGhpZ2gpCit7CisjaWYgSEFWRV9UV09ESUdJ
VF9UCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3Rh
dGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgICpoaWdoID0gcmVzdWx0ID4+IERpZ2l0Qml0czsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgLy8g
TXVsdGlwbHkgaW4gaGFsZi1wb2ludGVyLXNpemVkIGNodW5rcy4KKyAgICAvLyBGb3IgaW5wdXRz
IFtBSCBBTF0qW0JIIEJMXSwgdGhlIHJlc3VsdCBpczoKKyAgICAvLworICAgIC8vICAgICAgICAg
ICAgW0FMKkJMXSAgLy8gckxvdworICAgIC8vICAgICsgICAgW0FMKkJIXSAgICAgLy8gck1pZDEK
KyAgICAvLyAgICArICAgIFtBSCpCTF0gICAgIC8vIHJNaWQyCisgICAgLy8gICAgKyBbQUgqQkhd
ICAgICAgICAvLyBySGlnaAorICAgIC8vICAgID0gW1I0IFIzIFIyIFIxXSAgLy8gaGlnaCA9IFtS
NCBSM10sIGxvdyA9IFtSMiBSMV0KKyAgICAvLworICAgIC8vIFdoZXJlIG9mIGNvdXJzZSB3ZSBt
dXN0IGJlIGNhcmVmdWwgd2l0aCBjYXJyaWVzIGJldHdlZW4gdGhlIGNvbHVtbnMuCisgICAgRGln
aXQgYUxvdyAgPSBhICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEgPj4gSGFs
ZkRpZ2l0Qml0czsKKyAgICBEaWdpdCBiTG93ICA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERp
Z2l0IGJIaWdoID0gYiA+PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgID0g
YUxvdyAqIGJMb3c7CisgICAgRGlnaXQgck1pZDEgPSBhTG93ICogYkhpZ2g7CisgICAgRGlnaXQg
ck1pZDIgPSBhSGlnaCAqIGJMb3c7CisgICAgRGlnaXQgckhpZ2ggPSBhSGlnaCAqIGJIaWdoOwor
ICAgIAorICAgIERpZ2l0IGNhcnJ5ID0gMDsKKyAgICBEaWdpdCBsb3cgPSBkaWdpdEFkZChyTG93
LCByTWlkMSA8PCBIYWxmRGlnaXRCaXRzLCAmY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRkKGxv
dywgck1pZDIgPDwgSGFsZkRpZ2l0Qml0cywgJmNhcnJ5KTsKKworICAgICpoaWdoID0gKHJNaWQx
ID4+IEhhbGZEaWdpdEJpdHMpICsgKHJNaWQyID4+IEhhbGZEaWdpdEJpdHMpICsgckhpZ2ggKyBj
YXJyeTsKKworICAgIHJldHVybiBsb3c7CisjZW5kaWYKK30KKworLy8gUmFpc2VzIHtiYXNlfSB0
byB0aGUgcG93ZXIgb2Yge2V4cG9uZW50fS4gRG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93Lgor
SlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBv
bmVudCkKK3sKKyAgICBEaWdpdCByZXN1bHQgPSAxdWxsOworICAgIHdoaWxlIChleHBvbmVudCA+
IDApIHsKKyAgICAgICAgaWYgKGV4cG9uZW50ICYgMSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSBi
YXNlOworCisgICAgICAgIGV4cG9uZW50ID4+PSAxOworICAgICAgICBiYXNlICo9IGJhc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB0aGUgcXVvdGllbnQu
CisvLyBxdW90aWVudCA9IChoaWdoIDw8IERpZ2l0Qml0cyArIGxvdyAtIHJlbWFpbmRlcikgLyBk
aXZpc29yCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERp
Z2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQqIHJlbWFpbmRlcikKK3sKKyAgICBBU1NFUlQo
aGlnaCA8IGRpdmlzb3IpOworI2lmIENQVShYODZfNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2
cSAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGlu
IHJheCwge3JlbX0gaW4gcmR4LgorICAgICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkK
KyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8gcmR4LCB7bG93fSBpbnRvIHJheCwg
YW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90
LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3Ip
KTsKKyAgICAqcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQ
VShYODYpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAg
ICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8g
T3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAg
ICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hp
Z2h9IGludG8gZWR4LCB7bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAg
IC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEi
KGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICAqcmVtYWluZGVyID0gcmVtOwor
ICAgIHJldHVybiBxdW90aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxm
RGlnaXRCYXNlID0gMXVsbCA8PCBIYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBX
YXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGludCBzID0gY2x6NjQoZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNv
cik7CisjZW5kaWYKKyAgICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRp
dmlzb3IgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRp
Z2l0TWFzazsKKworICAgIC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93
IiBvbiB4ODYsIHNvIHdlICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBp
cyAwIGlmIHMgPT0gMCBhbmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VS
VChzaXplb2YoaW50cHRyX3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFz
ayA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdp
dEJpdHMgLSAxKSk7CisgICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERp
Z2l0Qml0cyAtIHMpKSAmIHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOwor
ICAgIERpZ2l0IHVuMSA9IHVuMTAgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1
bjEwICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGln
aXQgcmhhdCA9IHVuMzIgLSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0
QmFzZSB8fCBxMSAqIHZuMCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAg
ICBxMS0tOworICAgICAgICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZE
aWdpdEJhc2UpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0g
dW4zMiAqIGtIYWxmRGlnaXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEw
ID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUg
KHEwID49IGtIYWxmRGlnaXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNl
ICsgdW4wKSB7CisgICAgICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBp
ZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgICpyZW1haW5kZXIgPSAodW4yMSAqIGtIYWxmRGlnaXRCYXNlICsgdW4wIC0gcTAgKiBkaXZp
c29yKSA+PiBzOworICAgIHJldHVybiBxMSAqIGtIYWxmRGlnaXRCYXNlICsgcTA7CisjZW5kaWYK
K30KKworLy8gTXVsdGlwbGllcyB7c291cmNlfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1t
YW5kfSB0byB0aGUgcmVzdWx0LgorLy8ge3Jlc3VsdH0gYW5kIHtzb3VyY2V9IG1heSBiZSB0aGUg
c2FtZSBCaWdJbnQgZm9yIGlucGxhY2UgbW9kaWZpY2F0aW9uLgordm9pZCBKU0JpZ0ludDo6aW50
ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1
bW1hbmQsIGludCBuLCBKU0JpZ0ludCogcmVzdWx0KQoreworICAgIEFTU0VSVChzb3VyY2UtPmxl
bmd0aCgpID49IG4pOworICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID49IG4pOworCisgICAg
RGlnaXQgY2FycnkgPSBzdW1tYW5kOworICAgIERpZ2l0IGhpZ2ggPSAwOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIERpZ2l0IGN1cnJlbnQgPSBzb3VyY2UtPmRp
Z2l0KGkpOworICAgICAgICBEaWdpdCBuZXdDYXJyeSA9IDA7CisKKyAgICAgICAgLy8gQ29tcHV0
ZSB0aGlzIHJvdW5kJ3MgbXVsdGlwbGljYXRpb24uCisgICAgICAgIERpZ2l0IG5ld0hpZ2ggPSAw
OworICAgICAgICBjdXJyZW50ID0gZGlnaXRNdWwoY3VycmVudCwgZmFjdG9yLCAmbmV3SGlnaCk7
CisKKyAgICAgICAgLy8gQWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJy
ZW50ID0gZGlnaXRBZGQoY3VycmVudCwgaGlnaCwgJm5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVu
dCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNhcnJ5LCAmbmV3Q2FycnkpOworCisgICAgICAgIC8vIFN0
b3JlIHJlc3VsdCBhbmQgcHJlcGFyZSBmb3IgbmV4dCByb3VuZC4KKyAgICAgICAgcmVzdWx0LT5z
ZXREaWdpdChpLCBjdXJyZW50KTsKKyAgICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAg
aGlnaCA9IG5ld0hpZ2g7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPiBuKSB7
CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQobisrLCBjYXJyeSArIGhpZ2gpOworCisgICAgICAg
IC8vIEN1cnJlbnQgY2FsbGVycyBkb24ndCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVzdWx0cywgYnV0
IGxldCdzIGJlIHJvYnVzdC4KKyAgICAgICAgd2hpbGUgKG4gPCByZXN1bHQtPmxlbmd0aCgpKQor
ICAgICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyssIDApOworICAgIH0gZWxzZQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghKGNhcnJ5ICsgaGlnaCkpOworfQorCisvLyBNdWx0aXBsaWVzIHt0
aGlzfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9p
ZCBKU0JpZ0ludDo6aW5wbGFjZU11bHRpcGx5QWRkKHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJf
dCBzdW1tYW5kKQoreworICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9m
KERpZ2l0KSk7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERp
Z2l0KSk7CisKKyAgICBpbnRlcm5hbE11bHRpcGx5QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwg
bGVuZ3RoKCksIHRoaXMpOworfQorCitib29sIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKK3sKKyAgICBpZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgt
Pmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCisvLyBEaXZpZGVzIHt4fSBieSB7ZGl2aXNvcn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGlu
IHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9LgorLy8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250
cmFjdCBpczoKKy8vIHF1b3RpZW50ID0gKHggLSByZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAw
IDw9IHJlbWFpbmRlciA8IGRpdmlzb3IuCisvLyBJZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhh
bmRsZSwgYW4gYXBwcm9wcmlhdGVseSBzaXplZCBCaWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVk
IGZvciBpdDsgb3RoZXJ3aXNlIHRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcg
ZW5vdWdoLgorLy8ge3F1b3RpZW50fSBjYW4gYmUgdGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1w
bGFjZSBkaXZpc2lvbi4ge3F1b3RpZW50fSBjYW4KKy8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUg
Y2FsbGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0lu
dDo6YWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBk
aXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCogcmVtYWluZGVyKQoreworICAgIEFT
U0VSVChkaXZpc29yKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4
LT5pc1plcm8oKSk7CisgICAgKnJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRpdmlzb3IgPT0gMSkg
eworICAgICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICpxdW90aWVu
dCA9IHg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVu
Z3RoKCk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKCpxdW90
aWVudCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4
ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBp
ID49IDA7IGktLSkgeworICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KCpyZW1haW5kZXIs
IHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVu
dCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYo
KnJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQor
CisvLyBMb29rdXAgdGFibGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVk
IHBlciBjaGFyYWN0ZXIgb2YgYQorLy8gYmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh
IG51bWJlci4gVG8gaW5jcmVhc2UgYWNjdXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhl
IGFjdHVhbCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgor
Ly8gZm9yICh2YXIgaSA9IDA7IGkgPD0gMzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5s
b2cyKGkpICogMzIpICsgIiwiKTsgfQorY29uc3RleHByIHVpbnQ4X3QgTWF4Qml0c1BlckNoYXJb
XSA9IHsKKyAgICAwLCAgIDAsICAgMzIsICA1MSwgIDY0LCAgNzUsICA4MywgIDkwLCAgOTYsICAv
LyAwLi44CisgICAgMTAyLCAxMDcsIDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAg
Ly8gOS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAg
ICAvLyAxNy4uMjQKKyAgICAxNDksIDE1MSwgMTUzLCAxNTQsIDE1NiwgMTU4LCAxNTksIDE2MCwg
ICAgICAvLyAyNS4uMzIKKyAgICAxNjIsIDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJs
ZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxp
ZXIgPSAxdSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJj
b3VudCkKK3sKKyAgICBBU1NFUlQoMiA8PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNT
RVJUKGNoYXJjb3VudCA+PSAwKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHNpemVfdCBiaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4
XTsKKyAgICBzaXplX3QgY2hhcnMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7Cisg
ICAgY29uc3QgaW50IHJvdW5kdXAgPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7Cisg
ICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91
bmR1cCkgLyBiaXRzUGVyQ2hhcikgeworICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJD
aGFyICogY2hhcnM7CisKKyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3Vu
ZGluZyB1cC4KKyAgICAgICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1Bl
ckNoYXJUYWJsZVNoaWZ0OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1heEludCkpIHsKKyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91
bmRpbmcgdXAuCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0
c01pbikgKyBEaWdpdEJpdHMgLSAxKSAvIERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5n
dGggPD0gSlNCaWdJbnQ6Ok1heExlbmd0aCkgeworICAgICAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZXhlYykKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgQ29udmVyc2lvbkNoYXJz
W10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKworU3RyaW5nIEpT
QmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgp
Cit7CisgICAgaWYgKHgtPmlzWmVybygpKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
QnVpbGRlcjsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdEJ1aWxkZXIudG9TdHJpbmcoKS5pbXBsKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHRvU3RyaW5nR2VuZXJpYyhleGVjLCB4LCByYWRpeCk7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIGludCByYWRpeCkK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdEJ1aWxkZXI7CisKKyAgICBBU1NFUlQocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBj
b25zdCBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgY29uc3QgYm9vbCBzaWduID0geC0+
c2lnbigpOworCisgICAgLy8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBs
ZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisgICAgLy8gRGl2aWRlIGJpdCBsZW5ndGgg
b2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NCh4LT5kaWdpdChsZW5n
dGggLSAxKSk7CisjZWxzZQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHozMih4LT5kaWdpdChs
ZW5ndGggLSAxKSk7CisjZW5kaWYKKyAgICBjb25zdCBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3Ro
ICogRGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Yg
Yml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMK
KyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgY29u
c3QgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAg
IC8vIEZvciBlc3RpbWF0aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0
aWMgYW5kIHdvcmsgd2l0aAorICAgIC8vIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBj
aGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4KKyAgICBjb25zdCB1aW50OF90IG1pbkJpdHNQZXJDaGFy
ID0gbWF4Qml0c1BlckNoYXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNv
bXB1dGF0aW9uIHdpdGggdWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90
IGNoYXJzUmVxdWlyZWQgPSBiaXRMZW5ndGg7CisgICAgY2hhcnNSZXF1aXJlZCAqPSBCaXRzUGVy
Q2hhclRhYmxlTXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAgIGNoYXJzUmVxdWly
ZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIGNoYXJzUmVxdWlyZWQgLz0gbWluQml0c1Bl
ckNoYXI7CisgICAgY2hhcnNSZXF1aXJlZCArPSBzaWduOworCisgICAgaWYgKGNoYXJzUmVxdWly
ZWQgPiBKU1N0cmluZzo6TWF4TGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmlt
cGwoKTsKKyAgICB9CisKKyAgICBpbnQgcG9zID0gMDsKKworICAgIC8vIFdlIGFyZSBvayB0byBj
YXN0LCBiZWNhdXNlIGhlcmUgY2hhcnNSZXF1aXJlZCA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoCisg
ICAgcmVzdWx0QnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihjaGFy
c1JlcXVpcmVkKSk7CisKKyAgICBEaWdpdCBsYXN0RGlnaXQ7CisgICAgaWYgKGxlbmd0aCA9PSAx
KQorICAgICAgICBsYXN0RGlnaXQgPSB4LT5kaWdpdCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
aW50IGNodW5rQ2hhcnMgPSBEaWdpdEJpdHMgKiBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAv
IG1heEJpdHNQZXJDaGFyOworICAgICAgICBEaWdpdCBjaHVua0Rpdmlzb3IgPSBkaWdpdFBvdyhy
YWRpeCwgY2h1bmtDaGFycyk7CisKKyAgICAgICAgLy8gQnkgY29uc3RydWN0aW9uIG9mIGNodW5r
Q2hhcnMsIHRoZXJlIGNhbid0IGhhdmUgYmVlbiBvdmVyZmxvdy4KKyAgICAgICAgQVNTRVJUKGNo
dW5rRGl2aXNvcik7CisgICAgICAgIGludCBub25aZXJvRGlnaXQgPSBsZW5ndGggLSAxOworICAg
ICAgICBBU1NFUlQoeC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisKKyAgICAgICAgLy8ge3Jlc3R9
IGhvbGRzIHRoZSBwYXJ0IG9mIHRoZSBCaWdJbnQgdGhhdCB3ZSBoYXZlbid0IGxvb2tlZCBhdCB5
ZXQuCisgICAgICAgIC8vIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoICJyZW1haW5kZXIiIQorICAg
ICAgICBKU0JpZ0ludCogcmVzdCA9IG51bGxwdHI7CisKKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0
IHJvdW5kLCBkaXZpZGUgdGhlIGlucHV0LCBhbGxvY2F0aW5nIGEgbmV3IEJpZ0ludCBmb3IKKyAg
ICAgICAgLy8gdGhlIHJlc3VsdCA9PSByZXN0OyBmcm9tIHRoZW4gb24gZGl2aWRlIHRoZSByZXN0
IGluLXBsYWNlLgorICAgICAgICBKU0JpZ0ludCoqIGRpdmlkZW5kID0gJng7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIERpZ2l0IGNodW5rOworICAgICAgICAgICAgYWJzb2x1dGVEaXZTbWFs
bChleGVjLCAqZGl2aWRlbmQsIGNodW5rRGl2aXNvciwgJnJlc3QsICZjaHVuayk7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgeworICAgICAgICAg
ICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKENvbnZlcnNpb25DaGFyc1tjaHVuayAlIHJhZGl4
XSk7CisgICAgICAgICAgICAgICAgY2h1bmsgLz0gcmFkaXg7CisgICAgICAgICAgICAgICAgcG9z
Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAg
ICAgICAgaWYgKCFyZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5v
blplcm9EaWdpdC0tOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0
aGFuIG9uZSBkaWdpdCBwZXIgaXRlcmF0aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVu
a0Rpdmlzb3IgaXMgc21hbGxlciB0aGFuIG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFT
U0VSVChyZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVy
b0RpZ2l0ID4gMCk7CisKKyAgICAgICAgbGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAg
fQorCisgICAgZG8geworICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZChDb252ZXJzaW9uQ2hh
cnNbbGFzdERpZ2l0ICUgcmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAg
ICAgICBwb3MrKzsKKyAgICB9IHdoaWxlIChsYXN0RGlnaXQgPiAwKTsKKyAgICBBU1NFUlQocG9z
KTsKKyAgICBBU1NFUlQocG9zIDw9IHN0YXRpY19jYXN0PGludD4oY2hhcnNSZXF1aXJlZCkpOwor
CisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgorICAgIHdoaWxlIChwb3MgPiAxICYmIHJl
c3VsdEJ1aWxkZXJbcG9zIC0gMV0gPT0gJzAnKQorICAgICAgICBwb3MtLTsKKworICAgIGlmIChz
aWduKSB7CisgICAgICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgIHBvcysr
OworICAgIH0KKworICAgIC8vIFJldmVyc2UgdGhlIHN0cmluZy4KKyAgICBTdHJpbmdCdWlsZGVy
IHJldmVyc2VCdWlsZGVyOworICAgIHJldmVyc2VCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0
aWNfY2FzdDxzaXplX3Q+KGNoYXJzUmVxdWlyZWQpKTsKKyAgICBmb3IgKGludCBpID0gcG9zIC0g
MTsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJldmVyc2VCdWlsZGVyLmFwcGVuZChyZXN1bHRCdWls
ZGVyW2ldKTsKKworICAgIHJldHVybiByZXZlcnNlQnVpbGRlci50b1N0cmluZygpLmltcGwoKTsK
K30KKworc2l6ZV90IEpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNp
emVfdCBidWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNp
emU7CisgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0
ZWRTaXplOworfQorCit2b2lkIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlm
ICh0aGlzLT5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRl
eCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIXRoaXMt
PmRpZ2l0KG5vblplcm9JbmRleCkpCisgICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYg
KG5vblplcm9JbmRleCA9PSBtX2xlbmd0aCAtIDEpCisgICAgICAgIHJldHVybjsKKworICAgIGlu
dCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9
IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVG
b3IobmV3TGVuZ3RoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFja2luZ1N0b3JlKTsKKyAgICBE
aWdpdCogZGF0YSA9IHN0YXRpY19jYXN0PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gdGhpcy0+
ZGlnaXQoaSk7CisKKyAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICBtX2xlbmd0
aCA9IG5ld0xlbmd0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTU3YmQ5N2M1ZTc4OTIwYmIyZDFi
MzgyMjgxZWJjZDkxZjYzYTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBh
cnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
QmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworcHVibGljOgorCisgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3Ro
KTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIHplcm9Jbml0aWFsaXplKTsKKworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKworICAgIGlubGluZSBzdGF0aWMg
aW50IHNpemVGb3IoaW50IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBsZW5ndGggKiBE
aWdpdFNpemU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtKQorICAgIHsKKyAgICAgICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVh
dGUoZXhlYywgdm0sIDApOworICAgICAgICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIHplcm9CaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBsZW5ndGgpCisgICAgeworICAgICAg
ICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+
KHZtLmhlYXApKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgp
OworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb21JbnQo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisg
ICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Jp
Z0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEp
OworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBp
ZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19j
YXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0
aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0K
KworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbVVpbnQoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBKU0JpZ0ludCog
YmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBK
U0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCAxKTsKKyAgICAgICAgYmlnSW50
LT5maW5pc2hDcmVhdGlvbihleGVjLCB2bSk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwg
c3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUFueUludChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisgICAgICAgIAorI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRT
dHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IHZtKTsKKworICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNl
dERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBi
aWdJbnQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50
LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKyNlbHNlCisgICAgICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4o
dm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDIpOworICAg
ICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBib29sIHNp
Z24gPSBmYWxzZTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUg
Kj0gLTE7CisgICAgICAgICAgICBzaWduID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIERp
Z2l0IGxvd0JpdHMgID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlICYgMHhmZmZmZmZmZik7Cisg
ICAgICAgIERpZ2l0IGhpZ2hCaXRzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KCh2YWx1ZSA+PiAzMikg
JiAweGZmZmZmZmZmKTsKKworICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGxvd0JpdHMpOwor
ICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGhpZ2hCaXRzKTsKKyAgICAgICAgYmlnSW50LT5z
ZXRTaWduKHNpZ24pOworI2VuZGlmCisgICAgICAgIAorICAgICAgICByZXR1cm4gYmlnSW50Owor
ICAgIH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUJvb2xlYW4oRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmln
SW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVh
cCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBi
aWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdp
dCgwLCAxKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgICAg
ICBpZiAobV9sZW5ndGgpIHsKKyAgICAgICAgICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobV9s
ZW5ndGgpKTsKKyAgICAgICAgICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihi
YWNraW5nU3RvcmUpOworICAgICAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRh
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRTaWduKGJv
b2wgc2lnbikgeyBtX3NpZ24gPSBzaWduOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduOyB9CisKKyAgICB2b2lkIHNldExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3Ro
ID0gbGVuZ3RoOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50
IHJhZGl4KTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcykKKyAgICB7CisgICAgICAgIGlmIChzLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLCBzLmNoYXJhY3RlcnM4KCkp
OworICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMsIHMuY2hhcmFjdGVyczE2KCkp
OworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJ
bnQoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqLCBKU0JpZ0ludCosIGludCByYWRpeCk7CisK
KyAgICBib29sIGlzWmVybygpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNp
Z24oKSk7CisgICAgICAgIHJldHVybiBsZW5ndGgoKSA9PSAwOworICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIENoYXJUeXBlKiAgZGF0YSkKKyAg
ICB7CisgICAgICAgIGludCBsZW5ndGggPSBzLmxlbmd0aCgpOworCisgICAgICAgIGludCBwID0g
MDsKKyAgICAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0p
KQorICAgICAgICAgICAgKytwOworCisgICAgICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3Qg
Y2hhcmFjdGVycworICAgICAgICBpZiAocCArIDEgPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIGlm
IChkYXRhW3BdID09ICcwJyAmJiAoZGF0YVtwICsgMV0gPT0gJ2InIHx8IGRhdGFbcCArIDFdID09
ICdCJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBs
ZW5ndGgsIHAgKyAyLCAyLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID09ICcw
JyAmJiAoZGF0YVtwICsgMV0gPT0gJ3gnIHx8IGRhdGFbcCArIDFdID09ICdYJykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAx
NiwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAoZGF0YVtwXSA9PSAnMCcgJiYgKGRhdGFbcCAr
IDFdID09ICdvJyB8fCBkYXRhW3AgKyAxXSA9PSAnTycpKQorICAgICAgICAgICAgICAgIHJldHVy
biBwYXJzZUludChleGVjLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgOCwgZmFsc2UpOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBzaWduID0gZmFsc2U7CisgICAgICAgIGlmIChwIDwgbGVu
Z3RoKSB7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA9PSAnKycpCisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgICAg
ICAgICBzaWduID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZXhlYywgdm0s
IGRhdGEsIGxlbmd0aCwgcCwgMTApOworCisgICAgICAgIGlmIChyZXN1bHQgJiYgIXJlc3VsdC0+
aXNaZXJvKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbik7CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
Q2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJv
b2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3Ro
ID49IDApOworICAgICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgaWYgKCFhbGxv
d0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcworICAgICAgICB3
aGlsZSAocCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAgICAgICAgICsrcDsKKwor
ICAgICAgICBpbnQgZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAgICAvLyBSZW1vdmluZyB0
cmFpbGluZyBzcGFjZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0
ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5kSW5kZXg7CisKKyAgICAg
ICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBpbnQgbGlt
aXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICAgICAgaW50IGxpbWl0
YSA9ICdhJyArIChyYWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0QSA9ICdBJyArIChyYWRp
eCAtIDEwKTsKKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZXhlYywg
dm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKKyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplKHRydWUp
OworCisgICAgICAgIGZvciAoaW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgeworICAg
ICAgICAgICAgdWludDMyX3QgZGlnaXQ7CisgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcg
JiYgZGF0YVtpXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAn
MCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGlt
aXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOworICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8IGxpbWl0QSkKKyAgICAg
ICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVs
dGlwbHlBZGQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihyYWRpeCksIHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oZGlnaXQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwID09IGxlbmd0aCkgewor
ICAgICAgICAgICAgcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoRXhlY1N0YXRlKiwgVk0mLCBpbnQgcmFkaXgs
IGludCBjaGFyY291bnQpOworCisgICAgdHlwZWRlZiB1aW50cHRyX3QgRGlnaXQ7CisgICAgc3Rh
dGljIGNvbnN0IGludCBCaXRzUGVyQnl0ZSA9IDg7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdp
dFNpemUgPSBzaXplb2YoRGlnaXQpOworICAgIHN0YXRpYyBjb25zdCBpbnQgRGlnaXRCaXRzID0g
RGlnaXRTaXplICogQml0c1BlckJ5dGU7CisgICAgc3RhdGljIGNvbnN0IGludCBIYWxmRGlnaXRC
aXRzID0gRGlnaXRCaXRzIC8gMjsKKyAgICBzdGF0aWMgY29uc3QgRGlnaXQgSGFsZkRpZ2l0TWFz
ayA9ICgxdWxsIDw8IEhhbGZEaWdpdEJpdHMpIC0gMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IE1h
eEludCA9IDB4N0ZGRkZGRkY7CisKK3B1YmxpYzoKKworICAgIC8vIFRoZSBtYXhpbXVtIGxlbmd0
aCB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHdvdWxkIGJlCisgICAg
Ly8gTWF4SW50IC8gRGlnaXRCaXRzLiBIb3dldmVyLCB3ZSB1c2UgYSBsb3dlciBsaW1pdCBmb3Ig
bm93LCBiZWNhdXNlCisgICAgLy8gcmFpc2luZyBpdCBsYXRlciBpcyBlYXNpZXIgdGhhbiBsb3dl
cmluZyBpdC4KKyAgICAvLyBTdXBwb3J0IHVwIHRvIDEgbWlsbGlvbiBiaXRzLgorICAgIHN0YXRp
YyBjb25zdCBpbnQgTWF4TGVuZ3RoID0gMTAyNCAqIDEwMjQgLyAoc2l6ZW9mKHZvaWQqKSAqIEJp
dHNQZXJCeXRlKTsKKworcHJpdmF0ZToKKworICAgIHZvaWQgcmlnaHRUcmltKFZNJik7CisKKyAg
ICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAgc3RhdGljIGlubGluZSBEaWdpdCBk
aWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogY2FycnkpOworICAgIHN0YXRpYyBpbmxp
bmUgRGlnaXQgZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGJvcnJvdyk7CisgICAg
c3RhdGljIGlubGluZSBEaWdpdCBkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCogaGln
aCk7CisgICAgc3RhdGljIGlubGluZSBEaWdpdCBkaWdpdERpdihEaWdpdCBoaWdoLCBEaWdpdCBs
b3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0KiByZW1haW5kZXIpOworICAgIHN0YXRpYyBEaWdpdCBk
aWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCk7CisKKyAgICBzdGF0aWMgdm9pZCBh
YnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBK
U0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCogcmVtYWluZGVyKTsKKworICAgIHZvaWQgaW50ZXJu
YWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1h
bmQsIGludCwgSlNCaWdJbnQqIHJlc3VsdCk7CisgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlBZGQo
RGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7CisKKyAgICBpbmxpbmUgRGlnaXQgZGlnaXQo
aW50IG4pCisgICAgeworICAgICAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5ndGgoKSk7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGEpOworICAgICAgICBEaWdpdCogZGF0YVB0ciA9IG1fZGF0YS5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGFQdHJbbl07CisgICAgfQorCisgICAgaW5saW5lIHZv
aWQgc2V0RGlnaXQoaW50IG4sIERpZ2l0IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4g
Pj0gMCAmJiBuIDwgbGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAg
RGlnaXQqIGRpZ2l0UHRyID0gbV9kYXRhLmdldCgpOworICAgICAgICBkaWdpdFB0cltuXSA9IHZh
bHVlOworICAgIH0KKworICAgIGJvb2wgbV9zaWduOworICAgIGludCBtX2xlbmd0aDsKKyAgICBD
YWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgRGlnaXQ+IG1fZGF0YTsKK307CisK
K2lubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQo
dmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQq
Pih2YWx1ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBkMDMwNDUyMjBkNWU5NTI2
N2VkOWY4ZjdiOWQzMzY1YTgzMTc5ZGQzLi40ZTk2NjAxNGM1ZTE0YTlmYzk3NWQzZGFkMmU5NjVl
MWJkYjQ1NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMzc2LDYgKzM3NywxMiBAQCBKU1N0
cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0
dXJuRW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50KCkpIHsK
KyAgICAgICAgU3RyaW5nIGJpZ0ludFN0cmluZyA9IEpTQmlnSW50Ojp0b1N0cmluZyhleGVjLCBh
c0JpZ0ludChhc0NlbGwoKSksIDEwKTsKKyAgICAgICAgaWYgKGJpZ0ludFN0cmluZy5sZW5ndGgo
KSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoYmlnSW50U3RyaW5nWzBdKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZygmdm0sIGJpZ0ludFN0cmluZyk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0
cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXgg
YzI0ZWE1YmJmMzU0N2I0ZmZkNDVkZWViYTZkZTQxZjI2MTk2ZTM4ZS4uOWYzOWEzYzdkZTA3N2Qy
M2RlMDJkYjE5MmFhNDNkMjBlMjAyN2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjIyLDYgKzIyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
QW55SW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNT
dHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5
bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlz
R2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBhMjdmNmExMTFiYmQ1YmNlZWJhMjNjZmNmMjgz
ZmZkNWZhMTA0Yzc3Li4yNzkwNTdhMzU2MjY0YTBkNTYxY2I5OTBlN2E5MjhkMmM2MDQ2ZDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNTc4LDYgKzU3OSwxMSBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIGlzQ2Vs
bCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0JpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0Jp
Z0ludCgpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgpOwpAQCAtNzE1LDEwICs3
MjEsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0
ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUKIAogQUxXQVlTX0lOTElORSBkb3VibGUg
SlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgaWYgKGlz
RG91YmxlKCkpCiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpOworICAgIGlmIChpc0JpZ0ludCgp
KSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNh
c3QgZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgICAg
IHJldHVybiBQTmFOOworICAgIH0KKwogICAgIHJldHVybiB0b051bWJlclNsb3dDYXNlKGV4ZWMp
OwogfQogCkBAIC0xMDIwLDYgKzEwMzMsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6
c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAg
ICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygp
KQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmluZyh2Mikp
OworICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSksIGFzQmlnSW50
KHYyLmFzQ2VsbCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4YWMwZWU3ZmJjMWJjMzU3OWVl
NjNmNWNiMTZhOTYwODM3Li43OTRiYzc3ZTIwMjFmMDMzNTRhYTY2MTQyMzNjZGQ1OTVkY2EwYjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTE1NSw2ICsx
NTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlw
ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CisgICAg
aWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0lu
dCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJl
ZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE4MSw2ICsxODMsOCBAQCBKU09iamVjdCogSlNDZWxsOjp0
b09iamVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjbwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChl
eGVjLCBnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5ZmMwYzliMDk0MDE2NDBm
YjE1ZDUyNTFhNDE3ZWI4NDg2MGQ2Y2NkLi43MWY5OWQ5N2NmNWNkMjkxY2NlNWMzNTRjYTlhYzYy
Yjk0OTc1YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTEy
LDYgKzExMiw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlw
ZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0
OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7
CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDU3MGYwOTRiYWQ0YjA3YTExYWVlMjA2
MDdkZTBhNzY4MWY3ZmRjM2UuLjk4MzZiMzQ3MDVlMGE3NTYwMDQ3OTYzMTg5ZWJkZmE4Mzc3NzY1
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
QEAgLTIwMSw2ICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0Nl
bGw6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJpZ0ludFR5cGU7
Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVy
biBtX3R5cGUgPT0gU3ltYm9sVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMTgyNWU5ZTYyYmU1MjJkYjFlZWFhNDJhNjZl
YmViODhkYjk5ODhhLi4yOGE5MjgwNDBkNmZjYzIzZTc5MzE4YWE3MzIwZWM1ZTU5NDNmMWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC02MzcsNyArNjM3LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG8KIG1fICMjIGxvd2Vy
TmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwKIAogICAgIEZP
Ul9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ1JFQVRFX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVf
VFlQRSkKLSAgICAKKwogI3VuZGVmIENSRUFURV9DT05TVFJVQ1RPUl9GT1JfU0lNUExFX1RZUEUK
IAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGVycm9yQ29uc3RydWN0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CmluZGV4IGMxYzAzODZkNTY1MGEyMzIxM2I2MDkzZThhMGI2YTQzYTM0ZDllNDQuLjZmYTJmNzJl
YTJlNzI4ZWNiNDgxZWJiYmQ2MjIyZmU0M2Y1MjlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTI2LDEwICsyNiwxMiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNs
dWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODUz
NTZkMzk3N2FlZDVjNzNiODlhZmYwNWM5N2MyNDJmOTViYjRlYS4uNTc3ZDE4ZTAyNWMxMWE5OTJj
ZTE2Yzg1MGNiMjIxOGUyMWM2YzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxs
VHlwZSwKICAgICBTdHJpbmdUeXBlLAogICAgIFN5bWJvbFR5cGUsCisgICAgQmlnSW50VHlwZSwK
IAogICAgIEN1c3RvbUdldHRlclNldHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCBlOGYzMTZj
ZjQyYjhlOTI4OWZjYTA4OWI0ODMxMjE1YjdhMzAyMDMzLi4wZmRjN2MzNTY1Y2U4YWIxZGRlYzUx
ZGVmZDRjZjM4NTJjMzk5ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aENvbW1vbi5oCkBAIC02Niw2ICs2NiwyNSBAQCBpbmxpbmUgaW50IGNsejMyKHVpbnQzMl90IG51
bWJlcikKICNlbmRpZgogfQogCitpbmxpbmUgaW50IGNsejY0KHVpbnQ2NF90IG51bWJlcikKK3sK
KyNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgaW50IHplcm9Db3VudCA9IDY0OworICAg
IGlmIChudW1iZXIpCisgICAgICAgIHplcm9Db3VudCA9IF9fYnVpbHRpbl9jbHpsbChudW1iZXIp
OworICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZWxzZQorICAgIGludCB6ZXJvQ291bnQgPSAwOwor
ICAgIGZvciAoaW50IGkgPSA2MzsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKCEobnVtYmVy
ID4+IGkpKQorICAgICAgICAgICAgemVyb0NvdW50Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gemVyb0NvdW50OworI2VuZGlmCit9CisKIC8v
IFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUg
b2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRl
bnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KIC8vIG9mIHRo
ZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBjYWxs
ZWQgdG8gaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwCmluZGV4IDZkMTA1NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAuLjk3
Y2ZhMDdhOTY5NDAyMjI1NmM5YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpTVmFs
dWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3Ry
aW5nKCk7CiAgICAgaWYgKHYuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5zeW1ib2xTdHJpbmcoKTsKKyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLmJpZ2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkp
IHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAvLyBS
ZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApAQCAt
MTEyLDcgKzExNCw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5
cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUgPT0gU3ltYm9sVHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5
cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVj
dCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKaW5kZXggNzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJhMzI3
ZjBkNWQyZDYwMDYyYWIzNTRkZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9yV2Fz
bUNvbnRleHQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBp
biBmYXN0IFRMUy4gSWYgZmFsc2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAog
ICAgIHYoYm9vbCwgdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdh
c20gdG8gSlMgY2FsbHMuIikgXAogICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwgdHJ1
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFkIGZl
YXR1cmUuIikgXAorICAgIHYoYm9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNlQXJy
YXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVz
ZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFs
bG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilcCiAg
ICAgdihib29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0
ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3Ry
dWN0dXJlLiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3RvdHlwZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5
LmgKaW5kZXggMTJmNDUzZTc2MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAwYzlmMTVkNy4uNGVkMTFm
OGZlZDJjOGM0YmZmMGU0MmM4NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwogY2xhc3MgUHJvdG90eXBl
S2V5IHsKIHB1YmxpYzoKICAgICBQcm90b3R5cGVLZXkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQw
MTBiMDEzYzMxNmY2ZjhkMGYzOC4uODg1MGM0YTlhMzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlm
ZTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgK
QEAgLTQwLDYgKzQwLDcgQEAKICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJp
bmcpIFwKICAgICBtYWNybyhzeW1ib2wpIFwKKyAgICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNy
byh0cnVlKQogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gb2JqZWN0U3RyaW5nKCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlw
ZTo6RnVuY3Rpb246CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAg
ICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgICAgICByZXR1cm4gYmlnaW50U3Ry
aW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCA0MDc1ZmQ3NWIwZWIxOGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2NjdjLi45ZjU3OGU4YWJj
NTQxNjAwMzk0MTg1OGJhYWZiMzFjODhlNzA3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNhY2hlLmgKaW5kZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2NlYWNiYTZkMmI3OWI0ZDlm
ZTU1NS4uMjU3MGI3MmUzYmM0YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4ZGMwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU3RydWN0dXJlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmlu
ZGV4IGFlNTIxMDcwOWE3ZjU0MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFjZTguLjNiZmNmNTcxZjRh
ODdhMzFlYmY5MDVkNjhkNGI1MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJv
dG90eXBlKCk7Ci0KIH0KIAogaW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JM
b29rdXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKaW5kZXggZGIxNjJiN2Y0ZjRjZTIzZmI4
ODA1NmRkZjQxYzQ4ZGUzMGQ1NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVkYWU0YzFhNDgzNjBkNDBl
ZjhiYmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9m
VHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5j
cHAKQEAgLTU0LDYgKzU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFR5cGVvZlR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAg
ICBvdXQucHJpbnQoImZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGVv
ZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4IDMzMmZhODEyMTky
YTVhNjJlYjY2YmM2MWIyODA4YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0MWM2ZGI3NjJjZTgxMDZm
ZjI4NTNhNmM1OTcwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVvZlR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZU
eXBlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgVHlw
ZW9mVHlwZSB7CiAgICAgVW5kZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAogICAg
IE51bWJlciwKICAgICBTdHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggYjIwMDg1NzNmZTAyYTQ1Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5YS4uNTk3ZGM1M2EwNTAw
MTJkYWM3OTEwOTE4ZmM5MDQyMTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5j
bHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhl
ZEFycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgwLDYgKzI4MSw3IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVja2V0
TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtl
eVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNldEl0
ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhp
cywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwor
ICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRoaXMs
IEpTU2V0OjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRpbmVs
TWFwQnVja2V0LnNldCgqdGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0
aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNTU0YjM1MGQ0MTg1MTVl
NDhiNmY4ZmNjMGU4NGVjMDE3MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRmMzQxMmE2OTZiOGRiMzc3
MzJkNDNmZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM4OCw2ICszODgs
NyBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBtYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0
dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5
TmFtZUVudW1lcmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhmODk4
YzlmYzRiMTcyOTZjYzczYmU1NmEzM2Y1NmZkMDZiNzY5Yi4uZWQzYTEzODI1NmVkYzY0YWU1NWU4
YTJiMWVlNTdmYTUzYmVkN2M0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0
aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVu
dCBKU0JpZ0ludCwgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTExLTE2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVcGRhdGUgV2luQ2Fpcm9SZXF1aXJl
bWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDQxMWU5YTc1MzIzODY5Mjg5
MmU5MzYyMDZmY2NlNzQ5YjE3OGVjYmQuLjljMDA2MjYzNTg5MTBkOTY3ZGU0NzhiNzljMmY5MjFj
NTEwMzM0NzIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwx
MCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1
bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlv
bnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZU
TF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVu
RlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0
bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVz
dFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFlZDIyMzdjZGFhNDEzMjQzZWViZTQwZmEyYmFhZmIz
YTU2NmVlMS4uYzJkMzdmNTU4Zjk3ZGVmZWIwZmRlMzc0YzkwYzU1MTRlMmY5ODRlNyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0xMS0xNyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJbnQsIEJpZ0ludENvbnN0
cnVjdG9yIGFuZCBCaWdJbnRQcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmlnSW50VGVzdHMueWFtbDogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAg
ICAgICAgKGFzc2VydFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50
LXR5cGUtb2YuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKwogMjAxNy0xMS0xNiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBtYXJrIHJlZ3Jlc3MtMTc4Mzg1LmpzIGFzIG1lbW9yeSBleGhhdXN0aW5nCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTJiMTc3ZTI2MjZjMjU0ODhjM2EyOGQ5NWQxNmU3NTQ2MjU3MjVmMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApAQCAtMCwwICsxLDMzIEBACisj
IENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQgdG8gc2lt
cGxpZnkgcnVubmluZyBCaWdJbnQgdGVzdHMuIFRvIGJlIHJlbW92ZWQgb25jZSBCaWdJbnQKKyMg
YXJlIG5vIGxvbmdlciBiZWhpbmQgYSBmZWF0dXJlIGZsYWcuCisKKy0tLQorLSBwYXRoOiBzdHJl
c3MvYmlnLWludC1saXRlcmFscy5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRo
OiBzdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYmlnLWludC1saXRlcmFscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmM3OTIwMDEzNDFhMDU4Mzll
YjZiYjY4MTkyZjA5Y2JjYWEwNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1saXRlcmFscy5qcwpAQCAtMCwwICsxLDEwNiBAQAorLy9AIHJ1bkJpZ0ludEVuYWJs
ZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRh
eEVycm9yKGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAg
IGFzc2VydChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIFN5bnRheEVycm9yKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgMCBjb252ZXJzaW9ucwor
bGV0IG4gPSAwbjsKK2Fzc2VydChuID09PSAwbik7CisKK24gPSAwMG47Cithc3NlcnQobiA9PT0g
MG4pOworCisvLyBCaW5hcnkgcmVwcmVzZW50YXRpb24KKworbiA9IDBiMTExMW47Cithc3NlcnQo
biA9PT0gMTVuKTsKKworbiA9IDBiMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworbiA9IDBiMDEw
bjsKK2Fzc2VydChuID09PSAybik7CisKK2xldCBiaW5hcnlTdHJpbmcgPSAiMGIxIjsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsKKworbiA9
IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5MjA5Mzg0
NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworbiA9IDBCMTExMW47Cithc3NlcnQobiA9PT0g
MTVuKTsKKworbiA9IDBCMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworYmluYXJ5U3RyaW5nID0g
IjBCMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyAr
PSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQw
MjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKKy8vIE9jdGFsIHJlcHJl
c2VudGF0aW9uCisKK24gPSAwbzduOworYXNzZXJ0KG4gPT09IDduKTsKKworbiA9IDBvMTBuOwor
YXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBvMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24g
PSAwbzAwMDIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gME83bjsKK2Fzc2VydChuID09
PSA3bik7CisKK24gPSAwTzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwTzIwbjsKK2Fz
c2VydChuID09PSAxNm4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworLy8g
SGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24KKworbiA9IDB4YW47Cithc3NlcnQobiA9PT0gMTBu
KTsKKworbiA9IDB4ZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHgwMDBmZm47Cith
c3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweGZhYmNuOworYXNzZXJ0KG4gPT09IDY0MTg4bik7
CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJy
b3IoIjBiMDJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjFubiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMG84OW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvMDhuIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzdubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMHhnbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHgwZ24iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjB4Zm5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMDBubiIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMWEwbm4iKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvYmlnLWludC10eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9m
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU1M2NkMzAxMjQ2Yjk1OGY0YzZkNGRhMTFhZjdjZDBhNmI0MDkyYWMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKQEAg
LTAsMCArMSwxMCBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OworfQorCithc3NlcnQodHlwZW9mIDBuID09PSAiYmlnaW50Iik7Cithc3NlcnQodHlwZW9mIDFu
ICE9PSAib2JqZWN0Iik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327346</attachid>
            <date>2017-11-19 10:13:16 -0800</date>
            <delta_ts>2017-11-22 21:32:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171119161312.patch</filename>
            <type>text/plain</type>
            <size>93901</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi45ZWMwM2IxMjI4NTk3YTkw
ZTI3ZmY3Nzc0ZGY4NDdmMGQ1NWE1ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTctMTEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IG9uIEpTQmlnSW50OjptX2RhdGEgdG8KKyAg
ICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0
eSBhbmQgYWxsb3dpbmcKKyAgICAgICAgNjQtYml0d2lzZSAob3IgMzItYml0d2lzZSkgYXJpdGht
ZXRpYyBvcGVyYXRpb25zLiBKU0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24KKyAgICAgICAgdG8gc3Rv
cmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRhXV0gYW5kIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJh
Y2sgb2YgQmlnSW50IGxlbmd0aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxv
d2luZyB0aGUgVjggb25lLiBKU0JpZ0ludDo6bV9kYXRhIGFyZSBtYW5pcHVsYXRlZAorICAgICAg
ICBieSBKU0JpZ0ludDo6c2V0RGlnaXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0
KGluZGV4KSBvcGVyYXRpb25zLgorICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25z
IHRvIHN1cHBvcnQgYXJpdGhtZXRpY3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1w
b3J0YW50IHRvIG5vdGljZSB0aGF0IG9uIHRoaXMgcmVwcmVzZW50YXRpb24sIEpTQmlnSW50Ojpt
X2RhdGFbMF0gcmVwcmVzZW50cworICAgICAgICB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQg
YW5kIEpTQmlnSW50OjptX2RhdGFbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0Cisg
ICAgICAgIHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5J
ZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHBh
cnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJpZ0lu
dCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46
OnBhcnNlSGV4KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAg
ICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgICog
cGFyc2VyL0xleGVyLmg6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6QmlnSW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJz
ZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVC
aWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
ZGlnaXRBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXRTdWIpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6ZGlnaXRNdWwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXRQ
b3cpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXREaXYpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpp
bnBsYWNlTXVsdGlwbHlBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxUb0JpZ0lu
dCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmFsbG9jYXRlRm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRv
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnJpZ2h0VHJpbSk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVplcm8pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OmNyZWF0ZUZyb21JbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbVVpbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbUFueUludCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjcmVhdGVGcm9tQm9vbGVhbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1ByaW1pdGl2ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXRTaWduKToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpwYXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojppc1plcm8pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
c2V0RGlnaXQpOgorICAgICAgICAoSlNDOjphc0JpZ0ludCk6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6Y2x6NjQpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OmpzVHlwZVN0cmluZ0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGVP
ck51bGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvdG90eXBlS2V5Lmg6CisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoKKyAgICAg
ICAgKEpTQzo6U21hbGxTdHJpbmdzOjp0eXBlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpwcm90
b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVvZlR5
cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1l
L1R5cGVvZlR5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6
Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTctMTEtMTYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmZWF0dXJlIGRlZmluZSBm
b3IgYWx0ZXJuYXRpdmUgcHJlc2VudGF0aW9uIGJ1dHRvbiBlbGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGE5YzRhOTliYWIwNTA4MDdlNjcyNmUxNmJiMjU5YWQwMmIyNjRk
NzAuLmVmMjUyYzNhZDczNjVmMzY3NmVjNDAzNjhlYmU0ZDc3OWVhYmEzY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTIsNyArNzkyLDcgQEAKIAkJMkFGNzM4MkQxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIy
NjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0
MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07Ci0JCTM3QzczOEQyMUVEQjU2
RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87
IH07CisJCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0Yy
QjBCIC8qIFBhcnNlSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDEyOTUyNzcxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRl
X2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzQxRDJD
RjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxl
bWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxMjk1Mjc5MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFw
cGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMjk1Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTEyOSw2ICsxMTI5LDcgQEAKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1
NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8q
IEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIg
LyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVy
QVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzY0NCw2ICszNjQ1LDggQEAKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5
MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmlnSW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JpZ0ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3VsdFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZBMDU0NDYxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5hc20uYXNtOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5hc207
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZBMDU0NDcxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODUyLDE0ICs1ODU1LDE0IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUzNkIzMTk4MUY3MzVF
NUMwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSAqLywKLQkJCQk1MzZCMzE5NjFGNzM1
RTVCMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTItbW0ubW0gKi8sCi0JCQkJNTMwQTY2QjExRkEz
RTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tICovLAotCQkJCTUzMEE2NkI4MUZB
M0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAqLywKLQkJCQk1MzBBNjZCNTFG
QTNFNzdEMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gKi8sCiAJCQkJNTM2QjMwREEx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCAqLywKKwkJCQk1MzZCMzE5NjFG
NzM1RTVCMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTItbW0ubW0gKi8sCiAJCQkJNTM2QjMwRDIx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLmNwcCAqLywKKwkJCQk1MzBBNjZCMTFG
QTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gKi8sCiAJCQkJNTM2QjMwRDMx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzLmNwcCAqLywKKwkJCQk1MzBBNjZCODFG
QTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0gKi8sCiAJCQkJNTM2QjMwRTEx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCAqLywKKwkJCQk1MzBBNjZCNTFG
QTNFNzdEMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gKi8sCiAJCQkJNTM2QjMwRTIx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1LmNwcCAqLywKIAkJCQk1MzZCMzBFQTFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYuY3BwICovLAogCQkJCTUzNkIzMEU5MUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNy5jcHAgKi8sCkBAIC02NDg3LDYgKzY0OTAs
OCBAQAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAq
LywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uLmggKi8sCisJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmln
SW50LmNwcCAqLywKKwkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAq
LywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAq
LywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKQEAgLTg3
NDUsNiArODc1MCw3IEBACiAJCQkJOEJDMDY0ODkxRTFBQkE2NDAwQjJCOENBIC8qIEpTQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTgwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThBRDRBOTAw
MENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2ODkyMUMyMUY5
QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGQTlFOTIx
NDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODk4LDE0ICs5OTA0LDE0IEBACiAJCQkJMEZGNDI3
NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAq
LywKIAkJCQk1MzZCMzE5QTFGNzM1RTc4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0ubW0g
aW4gU291cmNlcyAqLywKLQkJCQk1MzZCMzE5QjFGNzM1RTc4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTItbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUg
LyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MzBBNjZCQTFGQTNF
NzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0gaW4gU291cmNlcyAqLywKLQkJCQk1
MzBBNjZCQjFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MzZCMzE1RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOUIxRjczNUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNTcxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzMEE2NkI5MUZBM0U3
OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUz
NkIzMTU4MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MzBBNjZCQTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQtbW0ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2NjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1IC8q
IFVuaWZpZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNjcxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIz
MTZGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MzZCMzE2RTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzBlNGEzMjU3MDQyMjU1
NmRhYzczYjcyZjllMjE5YjJlMjcwZTQzNy4uYTU4NzhiNTI3ZGQ5NGQ0Y2I3YTk5ZmI0YzM0YmEz
YjhjMTA1NWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzY0LDYgKzc2NCw3
IEBAIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuY3BwCiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uLmNwcAorcnVudGltZS9KU0JpZ0ludC5jcHAKIHJ1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogcnVudGltZS9KU0NhbGxl
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggMGFmZjRiMGM2ZmQzMGM5M2FiNjBlMmM1Zjg1ODFiODdjMWI5NjY3OC4uNmZjNGY2OGM1YWFm
MTY3Njc1ZjBhNzZiNTYzZWIwM2RmZWMxOGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMu
aCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCA2M2UzOThkNjExYmJhODEyNzQ0Y2ViZmI1Y2JmODk3NjQ5OTBlNTUwLi5jMTdhYjU2
MzAyMjBlOWIwMTczMDhhNjAxNDdjNzRlN2NlMzQxN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAg
LTE3ODMsNiArMTc4NCwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVx
dWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAogICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xUeXBlKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJp
Z0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CisgICAgICAgICAgICAgICAgcmV3aW5kVW5h
cnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfY2VsbF93aXRoX3R5cGUp
OworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwor
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7CisgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJpZ0ludFR5cGUpOworICAgICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0g
Im9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAgICAgICAgICAg
ICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3JfbnVsbCk7CkBAIC0zMTI1LDYgKzMxMzQs
MTYgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50QnVmZmVyKHVuc2ln
bmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZENvbnN0YW50QnVmZmVyKGxl
bmd0aCk7CiB9CiAKK0pTQmlnSW50KiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3Rh
bnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDhfdCByYWRpeCkKK3sKKyAgICBK
U0JpZ0ludComIGJpZ0ludEluTWFwID0gbV9iaWdJbnRNYXAuYWRkKEJpZ0ludE1hcEVudHJ5KGlk
ZW50aWZpZXIuaW1wbCgpLCByYWRpeCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBp
ZiAoIWJpZ0ludEluTWFwKSB7CisgICAgICAgIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNl
SW50KG51bGxwdHIsICp2bSgpLCBTdHJpbmdWaWV3KGlkZW50aWZpZXIuc3RyaW5nKCkpLCByYWRp
eCk7CisgICAgICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworICAgIH0KKyAgICBy
ZXR1cm4gYmlnSW50SW5NYXA7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRk
U3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBKU1N0
cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNiZDQw
NTJhZTVhMmI2YTA5NzVkYTA0MGQ1YWY3Yi4uMTU3YThkZTA5MmU0ZDNjOTNjOTk5YzdjZTEzNTE1
ZmE1ZmZlYTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVs
U2NvcGUuaCIKQEAgLTEwMDAsOCArMTAwMSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBhbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5k
RW1pdFNjb3BlKCk7CiAKKyAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0lt
cGwqLCB1aW50OF90PiBCaWdJbnRNYXBFbnRyeTsKKyAgICAgICAgc3RydWN0IEJpZ0ludEVudHJ5
SGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChCaWdJbnRNYXBFbnRyeSBr
ZXkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5maXJzdC0+ZXhp
c3RpbmdTeW1ib2xBd2FyZUhhc2goKSArIEludEhhc2g8dWludDhfdD46Omhhc2goa2V5LnNlY29u
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJzdCAmJiBhLnNlY29uZCA9
PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAg
ICAgICB9OworCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+IE51bWJl
ck1hcDsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJp
bmcqLCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclN0cmluZ01hcDsKKyAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCosIEJpZ0ludEVudHJ5SGFzaD4g
SWRlbnRpZmllckJpZ0ludE1hcDsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZjxUZW1wbGF0
ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+IFRlbXBsYXRlUmVnaXN0cnlLZXlNYXA7CiAgICAg
ICAgIAogICAgICAgICAvLyBIZWxwZXIgZm9yIGVtaXRDYWxsKCkgYW5kIGVtaXRDb25zdHJ1Y3Qo
KS4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBzZXQgb2YKQEAgLTEwODgsNiArMTEwNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyogYWRkU3RyaW5n
Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU0JpZ0ludCogYWRkQmlnSW50
Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3QgcmFkaXgpOwogICAgICAgICBSZWdp
c3RlcklEKiBhZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3RhbnQoUmVmPFRlbXBsYXRlUmVnaXN0
cnlLZXk+JiYpOwogCiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25z
OyB9CkBAIC0xMTg3LDYgKzEyMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uLCB1bnNpZ25lZCwgRW5j
b2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXBy
ZXNlbnRhdGlvbkhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7CiAgICAgICAgIEpTVmFsdWVNYXAgbV9q
c1ZhbHVlTWFwOwogICAgICAgICBJZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFwOworICAg
ICAgICBJZGVudGlmaWVyQmlnSW50TWFwIG1fYmlnSW50TWFwOwogICAgICAgICBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1hcDsKIAogICAgICAgICBTdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlBbmFseXplciB7ICZtX2luc3RydWN0aW9u
cyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDIzNWFhNmIxYmE0MzM5ZTkzOTU0MGQ3ZWJjYTcwZGY4MDg0N2YzMjAu
LjdmM2RjNTQ3M2Q3NGNlM2IyM2NjZGUyYTdhNmM1MTBhNmQ4YWY2YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEy
Miw2ICsxMjIsMTEgQEAgSlNWYWx1ZSBTdHJpbmdOb2RlOjpqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0dXJuIGdlbmVyYXRvci5hZGRTdHJpbmdDb25z
dGFudChtX3ZhbHVlKTsKIH0KIAorSlNWYWx1ZSBCaWdJbnROb2RlOjpqc1ZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdlbmVyYXRvci5hZGRC
aWdJbnRDb25zdGFudChtX3ZhbHVlLCBtX3JhZGl4KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIE51bWJlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4
IDRjYWFmNWZhNDU1NjhiY2ZhNmNmMWI0YmZkYzY0YjQxNTZhY2JmOGUuLjVlMmM0NzY0YzIxYTcy
NTcyMTc0M2M3NWQ2OTQyMzUzYTBiNzJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE3NSw3
ICsxNzUsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0s
IGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAgICAgICBib29sIG92ZXJyaWRl
c1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFj
aChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJ
bmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlw
ZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkg
PT0gU3ltYm9sVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5
cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKICAgICAgICAgICAgIGlmICghaXNTdHJpY3RNb2Rl
KQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5j
ZSBlaXRoZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCAzNWU4NGE1YzE0NTE3ZWJlZDhkNjE0ODcxZjlhYzdiZWIwMjRkNjAw
Li5kYzI5NGYxMGUzZWY1NDBjZDQ2YWVjNzBkNDBiMDNiMGM0ZWRmMTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTIwMiw2
ICsyMDIsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYQogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgorICAgIGNhc2UgQmlnSW50VHlw
ZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxp
ZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiOWY3ODMw
ODE3NDgxOGFlYjUzMDAwYTQ2ODg4MjQyZDNiZTcxMTQ0Li44ZjE3YWUzZTZkNThiOGUwY2UzYjc5
YzM0ZjY1YTNlMTIzYjBjOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFiOTU2
MTNlNmU1NTI4MGJjZGIwNDhmMjI1MmIxMjVjMzFkZjNkYWUuLjNhZDM4OGM0Yzk5Njk4OWVlYTkz
MzQ0MDBmMDVmM2IzNWM3NzE3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCkBAIC0yMzIsNiArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgaW5jQ29uc3Rh
bnRzKCk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEludGVnZXJOb2RlKGxv
Y2F0aW9uLCBkKTsKICAgICB9CisgICAgCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJpZ0lu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBiaWdJ
bnQsIHVpbnQ4X3QgcmFkaXgpCisgICAgeworICAgICAgICBpbmNDb25zdGFudHMoKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlnSW50Tm9kZShsb2NhdGlvbiwgKmJpZ0lu
dCwgcmFkaXgpOworICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNmVlNmM1ZGJk
NTlhZGUzN2YyZDFiMjJkMjkxNjQ4YWQyOTZmNTQxZC4uMGY3NzNlNzUzYmU2MTJlMDdlNTY3MDJl
NTkwZWZhMTJjZWYxOTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
QEAgLTE1MDAsNyArMTUwMCw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3Vs
dCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChk
b3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6TnVt
YmVyUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiB7
CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IGhleGFkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0
IGJ5dGVzLgogICAgIHVpbnQzMl90IGhleFZhbHVlID0gMDsKQEAgLTE1MTIsOSArMTUxMiw5IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1
ZSkKICAgICAgICAgLS1tYXhpbXVtRGlnaXRzOwogICAgIH0gd2hpbGUgKGlzQVNDSUlIZXhEaWdp
dChtX2N1cnJlbnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7CiAKLSAgICBpZiAobWF4aW11bURp
Z2l0cyA+PSAwKSB7CisgICAgaWYgKG1heGltdW1EaWdpdHMgPj0gMCAmJiBPcHRpb25zOjp1c2VC
aWdJbnQoKSAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSB7CiAgICAgICAgIHJldHVyblZh
bHVlID0gaGV4VmFsdWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIE51bWJlcjsK
ICAgICB9CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGluIHRoZSBoZXhWYWx1ZSBidWZmZXIuCkBA
IC0xNTMzLDExICsxNTMzLDE1IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VI
ZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAKKyAgICBp
ZiAoVU5MSUtFTFkoKG1fY3VycmVudCB8IDB4MjApID09ICduJykpCisgICAgICAgIHJldHVybiBC
aWdJbnQ7CisgICAgCiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVy
OC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2KTsKKyAgICByZXR1cm4gTnVtYmVyOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFy
c2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgdHlwZW5hbWUgTGV4
ZXI8VD46Ok51bWJlclBhcnNlUmVzdWx0IExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJl
dHVyblZhbHVlKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBiaW5hcnkgdmFsdWVzIGZp
dCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgYmluYXJ5VmFsdWUgPSAwOwpAQCAtMTU1NCw5
ICsxNTU4LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3Vi
bGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlC
aW5hcnlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJ
RGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
bV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnbicpIHsK
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBiaW5hcnlWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybiBOdW1iZXI7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IG1heGlt
dW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKQEAgLTE1NjcsMTcgKzE1NzEsMjAgQEAgQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAorICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkg
PT0gJ24nKQorICAgICAgICByZXR1cm4gQmlnSW50OworCiAgICAgaWYgKGlzQVNDSUlEaWdpdCht
X2N1cnJlbnQpKSB7CiAgICAgICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQ6OkZhaWx1cmU7CiAgICAgfQog
CiAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1f
YnVmZmVyOC5zaXplKCksIDIpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBOdW1iZXI7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+
OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHR5cGVuYW1l
IExleGVyPFQ+OjpOdW1iZXJQYXJzZVJlc3VsdCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUm
IHJldHVyblZhbHVlKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBvY3RhbCB2YWx1ZXMg
Zml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBvY3RhbFZhbHVlID0gMDsKQEAgLTE1OTQs
OSArMTYwMSw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3Vi
bGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlP
Y3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKKyAgICBpZiAoIWlzQVNDSUlEaWdpdCht
X2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgKG1fY3Vy
cmVudCB8IDB4MjApICE9ICduJykgewogICAgICAgICByZXR1cm5WYWx1ZSA9IG9jdGFsVmFsdWU7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gTnVtYmVyOwogICAgIH0KIAog
ICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCkBAIC0x
NjA3LDE3ICsxNjE0LDIwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3Rh
bChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAorICAgIGlm
ICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ24nKQorICAgICAgICByZXR1cm4gQmlnSW50OworCiAg
ICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7CiAgICAgICAgIHJldHVyblZhbHVlID0g
MDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmFpbHVyZTsKICAgICB9
CiAKICAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwg
bV9idWZmZXI4LnNpemUoKSwgOCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE51bWJl
cjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8
VD46OnBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSB0eXBl
bmFtZSBMZXhlcjxUPjo6TnVtYmVyUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChk
b3VibGUmIHJldHVyblZhbHVlKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFs
IHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7
CkBAIC0xNjM4LDkgKzE2NDgsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNl
RGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAgICAgLS1kaWdpdDsKICAgICAg
ICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAg
ICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAobV9jdXJyZW50IHwg
MHgyMCkgIT0gJ2UnKSB7CisgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAn
LicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJyAmJiBPcHRpb25zOjp1c2VCaWdJbnQoKSAm
JiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ24nKSB7CiAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IGRlY2ltYWxWYWx1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIE51bWJlcjsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGln
aXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCkBAIC0xNjUxLDggKzE2NjEsMTEgQEAgQUxXQVlTX0lO
TElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAg
ICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwogICAgICAgICBzaGlmdCgpOwogICAgIH0KKyAgICAK
KyAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICduJykKKyAgICAgICAgcmV0dXJuIEJpZ0lu
dDsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gRmFpbHVyZTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0yMTEzLDEzICsyMTI2LDIwIEBAIHN0YXJ0OgogICAgICAgICAg
ICAgLy8gU2hpZnQgb3V0IHRoZSAneCcgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAot
ICAgICAgICAgICAgcGFyc2VIZXgodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAg
ICBpZiAocGFyc2VIZXgodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkgPT0gTnVtYmVyUGFyc2VSZXN1
bHQ6OkJpZ0ludCkgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJ
ZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgICAgICAg
ICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxNjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwg
bGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJN
SU5BVEVEX0hFWF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50
ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlw
ZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAg
ICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTIxMzMsMTMgKzIxNTMsMjAgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhl
ICdiJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUJp
bmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChwYXJzZUJpbmFy
eSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSA9PSBOdW1iZXJQYXJzZVJlc3VsdDo6QmlnSW50KSB7
CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5yYWRpeCA9IDI7CisgICAgICAgICAgICB9OworCiAgICAgICAgICAgICBpZiAoaXNJZGVu
dFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRp
ZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1C
RVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0g
QklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtl
VG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hy
aW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxNTQsMTMgKzIxODEs
MjAgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICdvJyBwcmVmaXguCiAg
ICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZU9jdGFsKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSkgPT0gTnVtYmVyUGFyc2VSZXN1bHQ6OkJpZ0ludCkgeworICAgICAgICAgICAgICAg
IHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1f
YnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSA4Owor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkp
IHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8g
c3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAg
ICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAg
ICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcyLDMyICsyMjA2LDQxIEBAIHN0YXJ0OgogICAgICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSU9j
dGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwodG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChwYXJzZU9jdGFsKHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUpID09IE51bWJlclBhcnNlUmVzdWx0OjpOdW1iZXIpIHsKICAgICAgICAg
ICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJOdW1iZXI6CisgICAgICAgIE51bWJlclBhcnNlUmVzdWx0
IHBhcnNlUmVzdWx0OwogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9r
ZW4gIT0gRE9VQkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgIHBhcnNlUmVz
dWx0ID0gcGFyc2VEZWNpbWFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAg
aWYgKHBhcnNlUmVzdWx0ICE9IE51bWJlclBhcnNlUmVzdWx0OjpOdW1iZXIpIHsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyc2VSZXN1bHQgPT0gTnVtYmVyUGFyc2VSZXN1bHQ6OkJpZ0ludCkgewor
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKICAgICAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVu
dGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAgICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQo
KTsKIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNl
TnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBE
T1VCTEU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50
IHwgMHgyMCkgPT0gJ2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJB
ZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9u
ZW50IGluZGljYXRvciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgp
ID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJ
Q19MSVRFUkFMX0VSUk9SVE9LOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9p
bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkg
PT0gJ2UnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJF
eHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25l
bnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVu
ZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAg
ICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVy
OC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUp
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3Ro
OwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZSht
X2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0b2tl
biA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7
CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZv
ckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCBkODQ1ZTJlMTRmNTY5YTRkMzhlMmMz
ZDk5ZWY2YzQ2NzIzMjQzMjIwLi4wZGFmZmQ1N2FiZmY3OGFjMzQxZWUyOTc5NGIyNDI3MDM0ZGM4
OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0xNzMsMTIgKzE3Mywx
NyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxX
QVlTX0lOTElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSosIGJv
b2wgc3RyaWN0TW9kZSk7CiAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBO
RVZFUl9JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VTdHJpbmdTbG93Q2FzZShKU1Rva2Vu
RGF0YSosIGJvb2wgc3RyaWN0TW9kZSk7CiAKKyAgICBlbnVtIE51bWJlclBhcnNlUmVzdWx0IHsK
KyAgICAgICAgTnVtYmVyLAorICAgICAgICBCaWdJbnQsCisgICAgICAgIEZhaWx1cmUKKyAgICB9
OwogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJz
ZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBh
cnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIp
OwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVy
YWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CisgICAgQUxXQVlTX0lOTElO
RSBOdW1iZXJQYXJzZVJlc3VsdCBwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKTsKKyAgICBB
TFdBWVNfSU5MSU5FIE51bWJlclBhcnNlUmVzdWx0IHBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJu
VmFsdWUpOworICAgIEFMV0FZU19JTkxJTkUgTnVtYmVyUGFyc2VSZXN1bHQgcGFyc2VPY3RhbChk
b3VibGUmIHJldHVyblZhbHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIE51bWJlclBhcnNlUmVzdWx0
IHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKTsKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgcGFyc2VNdWx0aWxpbmVDb21tZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0NmFk
ZGQ3MzliZWNlYzhiZDE5YmYuLmUzOWYzNDc4Nzg3ZjlmMDRlNDBmYTk4MTI2N2RkNzAyNThiMTgx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oCkBAIC05Miw2ICs5MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisg
ICAgaW5saW5lIEJpZ0ludE5vZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUsIHVpbnQ4X3QgcmFkaXgpCisgICAgICAg
IDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQorICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7Cisg
ICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29u
c3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwg
bV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZk
ZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNkYzc0
ZGIzMThlMjNiY2NlMjY3ZDhkMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4
LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25zdGFu
dE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3Qg
dWludDhfdCBtX3JhZGl4OworICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2FjMWJk
NTQyNmM0YTExZjAyZGFhOGU5OGQ1MzE1MC4uMjg1YmFlZmM1MDExZDhiYWJmZTMxM2Q4ZjBhYThl
YjdjOWJhZGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
NDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAg
IGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOworICAgICAgICBuZXh0KCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUJpZ0ludChsb2NhdGlvbiwgaWRlbnQsIG1fdG9rZW4ubV9kYXRhLnJhZGl4KTsKKyAgICB9CiAg
ICAgY2FzZSBTVFJJTkc6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aAppbmRleCA1MWZkNGE3YWYyZTljOGUzNTI3M2NjYzdlNzQ1OWJkNTkwOTYxNmM1Li5iNzU5Yjkz
YWUyMjMxMjg0ZWYwMjVhZTdhYTM3MTFhMDkyOTJkOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBlbnVtIEpTVG9r
ZW5UeXBlIHsKICAgICBCQUNLUVVPVEUsCiAgICAgSU5URUdFUiwKICAgICBET1VCTEUsCisgICAg
QklHSU5ULAogICAgIElERU5ULAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKQEAgLTIxNiw2
ICsyMTcsNyBAQCB1bmlvbiBKU1Rva2VuRGF0YSB7CiAgICAgc3RydWN0IHsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQ7CiAgICAgICAgIGJvb2wgZXNjYXBlZDsKKyAgICAgICAgdWlu
dDhfdCByYWRpeDsKICAgICB9OwogICAgIHN0cnVjdCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIGNvb2tlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKaW5kZXggOGRiMzVjNzc5NmY0ZDM2ZmE1NDUyNTkxNjBkYzU4OWViODQ5ZDk1Ni4uNTM5YzQ3
MzQwZWI2YTY0NWZlN2NhZjQ0MWMzZjAwZGI1YjNjZjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAw
MDAwMDsKICAgICBlbnVtIDogaW50IHsgTm9uZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZh
bEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwK
KyAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJs
ZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhw
ciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5j
dGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwg
RG90RXhwciwgQ2FsbEV4cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBV
bmFyeUV4cHIsIEJpbmFyeUV4cHIsCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG91YmxlRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJs
ZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXIqLCBpbnQpIHsgcmV0dXJuIEJpZ0ludEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciopIHsg
cmV0dXJuIFN0cmluZ0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBO
dWxsRXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTkzYzkxZTA3YjVjYTk4YWQ3YmMzMGY0NTljYzI1MWJkZTU1Zjk4
Zi4uZDY0NzY2YTMwNGY3NTcyZmQzMmNkMDU0ZTExNzIzOTIyMzg3NDEwNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMCw2
ICszMCw3IEBACiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhBcnJheUl0ZXJh
dG9yKSBcCiAgICAgbWFjcm8oQllURVNfUEVSX0VMRU1FTlQpIFwKKyAgICBtYWNybyhCaWdJbnQp
IFwKICAgICBtYWNybyhCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNy
byhDcmVkZW50aWFsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzUyMWFhNGQxZmRjOThiNWU2ZmRjNjVkZWQ0ZDAwZDQxNzA3NGQ0NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcApAQCAtMCwwICsxLDU2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExp
bWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICogUGFydHMgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93OgorICoKKyAqIENv
cHlyaWdodCAyMDE3IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorICoKKyAq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgdGhlIERhcnQgcHJvamVjdCBhdXRob3JzLiAgUGxlYXNl
IHNlZSB0aGUgQVVUSE9SUyBmaWxlIFsxXQorICogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEKKyAqIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzJdLgor
ICoKKyAqIFsxXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9B
VVRIT1JTCisgKiBbMl0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0
ZXIvTElDRU5TRQorICoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBHbyBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUKKyAqIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZSBbM10uCisgKgorICogWzNdIGh0dHBzOi8vZ29sYW5nLm9yZy9MSUNFTlNFCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgorCisjZGVmaW5lIFNUQVRJQ19B
U1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQgYXNzdW1lcyAiICNjb25k
KQorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQmlnSW50OjpzX2luZm8g
PQorICAgIHsgIkpTQmlnSW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0JpZ0ludCkgfTsKKwordm9pZCBKU0JpZ0ludDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQmlnSW50KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisKKyAgICBpZiAodGhpc09iamVjdC0+bV9kYXRhKQorICAgICAg
ICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkodGhpc09iamVjdC0+bV9kYXRhLmdldCgpKTsKK30KKwor
SlNCaWdJbnQ6OkpTQmlnSW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5n
dGgpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCit7
IH0KKwordm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShib29sIHplcm9Jbml0aWFsaXplKQorewor
ICAgIEFTU0VSVChtX2RhdGEpOworCisgICAgc2V0U2lnbihmYWxzZSk7CisgICAgaWYgKHplcm9J
bml0aWFsaXplKSB7CisgICAgICAgIHZvaWQqIGRhdGEgPSBtX2RhdGEuZ2V0KCk7CisgICAgICAg
IG1lbXNldChyZWludGVycHJldF9jYXN0PHZvaWQqPihkYXRhKSwgMCwgbGVuZ3RoKCkgKiBEaWdp
dFNpemUpOworICAgIH0KK30KKworLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgorCisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgSEFWRV9UV09ESUdJVCAxCit0eXBlZGVmIHVpbnQ2
NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09ESUdJ
VCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2VuZGlmCisKKy8vIHtjYXJyeX0g
bXVzdCBwb2ludCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5j
cmVtZW50ZWQKKy8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgoraW5saW5lIEpTQmlnSW50OjpEaWdp
dCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGNhcnJ5KQorewor
I2lmIEhBVkUoVFdPRElHSVQpCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdv
RGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgICpjYXJyeSArPSByZXN1
bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQp
OworI2Vsc2UKKyAgICBEaWdpdCByZXN1bHQgPSBhICsgYjsKKworICAgIGlmIChyZXN1bHQgPCBh
KQorICAgICAgICAqY2FycnkgKz0gMTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlm
Cit9CisKKy8vIHtib3Jyb3d9IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5k
IHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK2lu
bGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIs
IERpZ2l0KiBib3Jyb3cpCit7CisjaWYgSEFWRShUV09ESUdJVCkKKyAgICBUd29EaWdpdCByZXN1
bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYik7
CisgICAgKmJvcnJvdyArPSAocmVzdWx0ID4+IERpZ2l0Qml0cykgJiAxOworICAgIAorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGlnaXQgcmVzdWx0
ID0gYSAtIGI7CisgICAgaWYgKHJlc3VsdCA+IGEpCisgICAgICAgICpib3Jyb3cgKz0gMTsKKyAg
ICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZW5kaWYKK30KKwor
Ly8gUmV0dXJucyB0aGUgbG93IGhhbGYgb2YgdGhlIHJlc3VsdC4gSGlnaCBoYWxmIGlzIGluIHto
aWdofS4KK2lubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0TXVsKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0KiBoaWdoKQoreworI2lmIEhBVkUoVFdPRElHSVQpCisgICAgVHdvRGln
aXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nhc3Q8VHdvRGln
aXQ+KGIpOworICAgICpoaWdoID0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgLy8gTXVsdGlwbHkgaW4gaGFs
Zi1wb2ludGVyLXNpemVkIGNodW5rcy4KKyAgICAvLyBGb3IgaW5wdXRzIFtBSCBBTF0qW0JIIEJM
XSwgdGhlIHJlc3VsdCBpczoKKyAgICAvLworICAgIC8vICAgICAgICAgICAgW0FMKkJMXSAgLy8g
ckxvdworICAgIC8vICAgICsgICAgW0FMKkJIXSAgICAgLy8gck1pZDEKKyAgICAvLyAgICArICAg
IFtBSCpCTF0gICAgIC8vIHJNaWQyCisgICAgLy8gICAgKyBbQUgqQkhdICAgICAgICAvLyBySGln
aAorICAgIC8vICAgID0gW1I0IFIzIFIyIFIxXSAgLy8gaGlnaCA9IFtSNCBSM10sIGxvdyA9IFtS
MiBSMV0KKyAgICAvLworICAgIC8vIFdoZXJlIG9mIGNvdXJzZSB3ZSBtdXN0IGJlIGNhcmVmdWwg
d2l0aCBjYXJyaWVzIGJldHdlZW4gdGhlIGNvbHVtbnMuCisgICAgRGlnaXQgYUxvdyAgPSBhICYg
SGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEgPj4gSGFsZkRpZ2l0Qml0czsKKyAg
ICBEaWdpdCBiTG93ICA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdoID0gYiA+
PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgID0gYUxvdyAqIGJMb3c7Cisg
ICAgRGlnaXQgck1pZDEgPSBhTG93ICogYkhpZ2g7CisgICAgRGlnaXQgck1pZDIgPSBhSGlnaCAq
IGJMb3c7CisgICAgRGlnaXQgckhpZ2ggPSBhSGlnaCAqIGJIaWdoOworICAgIAorICAgIERpZ2l0
IGNhcnJ5ID0gMDsKKyAgICBEaWdpdCBsb3cgPSBkaWdpdEFkZChyTG93LCByTWlkMSA8PCBIYWxm
RGlnaXRCaXRzLCAmY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRkKGxvdywgck1pZDIgPDwgSGFs
ZkRpZ2l0Qml0cywgJmNhcnJ5KTsKKworICAgICpoaWdoID0gKHJNaWQxID4+IEhhbGZEaWdpdEJp
dHMpICsgKHJNaWQyID4+IEhhbGZEaWdpdEJpdHMpICsgckhpZ2ggKyBjYXJyeTsKKworICAgIHJl
dHVybiBsb3c7CisjZW5kaWYKK30KKworLy8gUmFpc2VzIHtiYXNlfSB0byB0aGUgcG93ZXIgb2Yg
e2V4cG9uZW50fS4gRG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93LgorSlNCaWdJbnQ6OkRpZ2l0
IEpTQmlnSW50OjpkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCkKK3sKKyAgICBE
aWdpdCByZXN1bHQgPSAxdWxsOworICAgIHdoaWxlIChleHBvbmVudCA+IDApIHsKKyAgICAgICAg
aWYgKGV4cG9uZW50ICYgMSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSBiYXNlOworCisgICAgICAg
IGV4cG9uZW50ID4+PSAxOworICAgICAgICBiYXNlICo9IGJhc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB0aGUgcXVvdGllbnQuCisvLyBxdW90aWVudCA9
IChoaWdoIDw8IERpZ2l0Qml0cyArIGxvdyAtIHJlbWFpbmRlcikgLyBkaXZpc29yCitKU0JpZ0lu
dDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQg
ZGl2aXNvciwgRGlnaXQqIHJlbWFpbmRlcikKK3sKKyAgICBBU1NFUlQoaGlnaCA8IGRpdmlzb3Ip
OworI2lmIENQVShYODZfNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBx
dW90aWVudDsKKyAgICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2cSAgJVtkaXZpc29yXSIK
KyAgICAgICAgLy8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIHJheCwge3JlbX0gaW4g
cmR4LgorICAgICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5w
dXRzOiBwdXQge2hpZ2h9IGludG8gcmR4LCB7bG93fSBpbnRvIHJheCwgYW5kIHtkaXZpc29yfSBp
bnRvCisgICAgICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJk
IihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICAqcmVtYWlu
ZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQVShYODYpICYmIENPTVBJ
TEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCByZW07Cisg
ICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czoge3F1b3Rp
ZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAgICA6ICI9YSIocXVvdGll
bnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8gZWR4LCB7
bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSByZWdpc3Rl
ciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29y
XSAicm0iKGRpdmlzb3IpKTsKKyAgICAqcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90
aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVs
bCA8PCBIYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidz
IERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQo
ZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAg
ICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFsZkRp
Z2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKworICAg
IC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdl
ICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBh
bmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRy
X3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0
PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7Cisg
ICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMpKSAm
IHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9
IHVuMTAgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRpZ2l0
TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIg
LSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZu
MCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAg
ICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGln
aXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsK
KyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGln
aXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAg
ICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFs
ZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgICpyZW1haW5kZXIg
PSAodW4yMSAqIGtIYWxmRGlnaXRCYXNlICsgdW4wIC0gcTAgKiBkaXZpc29yKSA+PiBzOworICAg
IHJldHVybiBxMSAqIGtIYWxmRGlnaXRCYXNlICsgcTA7CisjZW5kaWYKK30KKworLy8gTXVsdGlw
bGllcyB7c291cmNlfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVz
dWx0LgorLy8ge3Jlc3VsdH0gYW5kIHtzb3VyY2V9IG1heSBiZSB0aGUgc2FtZSBCaWdJbnQgZm9y
IGlucGxhY2UgbW9kaWZpY2F0aW9uLgordm9pZCBKU0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFk
ZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCBuLCBK
U0JpZ0ludCogcmVzdWx0KQoreworICAgIEFTU0VSVChzb3VyY2UtPmxlbmd0aCgpID49IG4pOwor
ICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID49IG4pOworCisgICAgRGlnaXQgY2FycnkgPSBz
dW1tYW5kOworICAgIERpZ2l0IGhpZ2ggPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKSB7CisgICAgICAgIERpZ2l0IGN1cnJlbnQgPSBzb3VyY2UtPmRpZ2l0KGkpOworICAgICAg
ICBEaWdpdCBuZXdDYXJyeSA9IDA7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGlzIHJvdW5kJ3Mg
bXVsdGlwbGljYXRpb24uCisgICAgICAgIERpZ2l0IG5ld0hpZ2ggPSAwOworICAgICAgICBjdXJy
ZW50ID0gZGlnaXRNdWwoY3VycmVudCwgZmFjdG9yLCAmbmV3SGlnaCk7CisKKyAgICAgICAgLy8g
QWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJyZW50ID0gZGlnaXRBZGQo
Y3VycmVudCwgaGlnaCwgJm5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1
cnJlbnQsIGNhcnJ5LCAmbmV3Q2FycnkpOworCisgICAgICAgIC8vIFN0b3JlIHJlc3VsdCBhbmQg
cHJlcGFyZSBmb3IgbmV4dCByb3VuZC4KKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBjdXJy
ZW50KTsKKyAgICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAgaGlnaCA9IG5ld0hpZ2g7
CisgICAgfQorCisgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPiBuKSB7CisgICAgICAgIHJlc3Vs
dC0+c2V0RGlnaXQobisrLCBjYXJyeSArIGhpZ2gpOworCisgICAgICAgIC8vIEN1cnJlbnQgY2Fs
bGVycyBkb24ndCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVzdWx0cywgYnV0IGxldCdzIGJlIHJvYnVz
dC4KKyAgICAgICAgd2hpbGUgKG4gPCByZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVz
dWx0LT5zZXREaWdpdChuKyssIDApOworICAgIH0gZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKGNhcnJ5ICsgaGlnaCkpOworfQorCisvLyBNdWx0aXBsaWVzIHt0aGlzfSB3aXRoIHtmYWN0
b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9pZCBKU0JpZ0ludDo6aW5w
bGFjZU11bHRpcGx5QWRkKHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJfdCBzdW1tYW5kKQorewor
ICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAg
U1RBVElDX0FTU0VSVChzaXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisKKyAgICBp
bnRlcm5hbE11bHRpcGx5QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwgbGVuZ3RoKCksIHRoaXMp
OworfQorCitib29sIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSkKK3sKKyAgICBpZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0aCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgtPmxlbmd0aCgpOyBpKysp
IHsKKyAgICAgICAgaWYgKHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBEaXZpZGVz
IHt4fSBieSB7ZGl2aXNvcn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGluIHtxdW90aWVudH0gYW5k
IHtyZW1haW5kZXJ9LgorLy8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250cmFjdCBpczoKKy8vIHF1
b3RpZW50ID0gKHggLSByZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAwIDw9IHJlbWFpbmRlciA8
IGRpdmlzb3IuCisvLyBJZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhhbmRsZSwgYW4gYXBwcm9w
cmlhdGVseSBzaXplZCBCaWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVkIGZvciBpdDsgb3RoZXJ3
aXNlIHRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcgZW5vdWdoLgorLy8ge3F1
b3RpZW50fSBjYW4gYmUgdGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1wbGFjZSBkaXZpc2lvbi4g
e3F1b3RpZW50fSBjYW4KKy8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUgY2FsbGVyIGlzIG9ubHkg
aW50ZXJlc3RlZCBpbiB0aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZT
bWFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0lu
dCoqIHF1b3RpZW50LCBEaWdpdCogcmVtYWluZGVyKQoreworICAgIEFTU0VSVChkaXZpc29yKTsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7Cisg
ICAgKnJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRpdmlzb3IgPT0gMSkgeworICAgICAgICBpZiAo
cXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICpxdW90aWVudCA9IHg7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgaWYg
KHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRy
KSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlKGV4ZWMsIHZtLCBsZW5ndGgp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgewor
ICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KCpyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBk
aXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0KGks
IHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0
aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYoKnJlbWFpbmRlciwgeC0+
ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQorCisvLyBMb29rdXAgdGFi
bGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVkIHBlciBjaGFyYWN0ZXIg
b2YgYQorLy8gYmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG51bWJlci4gVG8gaW5j
cmVhc2UgYWNjdXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhlIGFjdHVhbCB2YWx1ZSBt
dWx0aXBsaWVkIGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgorLy8gZm9yICh2YXIgaSA9
IDA7IGkgPD0gMzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5sb2cyKGkpICogMzIpICsg
IiwiKTsgfQorY29uc3RleHByIHVpbnQ4X3QgTWF4Qml0c1BlckNoYXJbXSA9IHsKKyAgICAwLCAg
IDAsICAgMzIsICA1MSwgIDY0LCAgNzUsICA4MywgIDkwLCAgOTYsICAvLyAwLi44CisgICAgMTAy
LCAxMDcsIDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAgLy8gOS4uMTYKKyAgICAx
MzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAgICAvLyAxNy4uMjQKKyAg
ICAxNDksIDE1MSwgMTUzLCAxNTQsIDE1NiwgMTU4LCAxNTksIDE2MCwgICAgICAvLyAyNS4uMzIK
KyAgICAxNjIsIDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMy4u
MzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJsZVNoaWZ0ID0gNTsKK3N0
YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgPSAxdSA8PCBCaXRz
UGVyQ2hhclRhYmxlU2hpZnQ7CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJjb3VudCkKK3sKKyAgICBB
U1NFUlQoMiA8PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKGNoYXJjb3VudCA+
PSAwKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IHNpemVfdCBiaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICBzaXplX3Qg
Y2hhcnMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7CisgICAgY29uc3QgaW50IHJv
dW5kdXAgPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7CisgICAgaWYgKGNoYXJzIDw9
IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91bmR1cCkgLyBiaXRzUGVy
Q2hhcikgeworICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJDaGFyICogY2hhcnM7CisK
KyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3VuZGluZyB1cC4KKyAgICAg
ICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1BlckNoYXJUYWJsZVNoaWZ0
OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KE1heEludCkpIHsK
KyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCisgICAg
ICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0c01pbikgKyBEaWdpdEJp
dHMgLSAxKSAvIERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPD0gSlNCaWdJbnQ6
Ok1heExlbmd0aCkgeworICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Y3JlYXRlKGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhlYykKKyAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgQ29udmVyc2lvbkNoYXJzW10gPSAiMDEyMzQ1Njc4
OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgpCit7CisgICAgaWYgKHgt
PmlzWmVybygpKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0QnVpbGRlcjsKKyAgICAg
ICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdEJ1aWxk
ZXIudG9TdHJpbmcoKS5pbXBsKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nR2VuZXJp
YyhleGVjLCB4LCByYWRpeCk7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmlj
KEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIGludCByYWRpeCkKK3sKKyAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdEJ1aWxkZXI7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8
PSAzNik7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBjb25zdCBpbnQgbGVuZ3Ro
ID0geC0+bGVuZ3RoKCk7CisgICAgY29uc3QgYm9vbCBzaWduID0geC0+c2lnbigpOworCisgICAg
Ly8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBsZW5ndGggb2YgdGhlIHJl
c3VsdGluZyBzdHJpbmc6CisgICAgLy8gRGl2aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBi
eSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NCh4LT5kaWdpdChsZW5ndGggLSAxKSk7CisjZWxz
ZQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHozMih4LT5kaWdpdChsZW5ndGggLSAxKSk7Cisj
ZW5kaWYKKyAgICBjb25zdCBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3RoICogRGlnaXRCaXRzIC0g
bGVhZGluZ1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVw
cmVzZW50IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5k
IGFuIGFwcHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgY29uc3QgdWludDhfdCBtYXhC
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZvciBlc3RpbWF0
aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5kIHdvcmsgd2l0
aAorICAgIC8vIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0ZXIgY2FuIHJl
cHJlc2VudC4KKyAgICBjb25zdCB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNo
YXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdpdGgg
dWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IGNoYXJzUmVxdWlyZWQg
PSBiaXRMZW5ndGg7CisgICAgY2hhcnNSZXF1aXJlZCAqPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlw
bGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAgIGNoYXJzUmVxdWlyZWQgKz0gbWluQml0c1Bl
ckNoYXIgLSAxOworICAgIGNoYXJzUmVxdWlyZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgY2hh
cnNSZXF1aXJlZCArPSBzaWduOworCisgICAgaWYgKGNoYXJzUmVxdWlyZWQgPiBKU1N0cmluZzo6
TWF4TGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4
ZWMtPnZtKCkpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKKyAgICB9CisK
KyAgICBpbnQgcG9zID0gMDsKKworICAgIC8vIFdlIGFyZSBvayB0byBjYXN0LCBiZWNhdXNlIGhl
cmUgY2hhcnNSZXF1aXJlZCA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoCisgICAgcmVzdWx0QnVpbGRl
ci5yZXNlcnZlQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihjaGFyc1JlcXVpcmVkKSk7CisK
KyAgICBEaWdpdCBsYXN0RGlnaXQ7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYXN0
RGlnaXQgPSB4LT5kaWdpdCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGNodW5rQ2hhcnMg
PSBEaWdpdEJpdHMgKiBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAvIG1heEJpdHNQZXJDaGFy
OworICAgICAgICBEaWdpdCBjaHVua0Rpdmlzb3IgPSBkaWdpdFBvdyhyYWRpeCwgY2h1bmtDaGFy
cyk7CisKKyAgICAgICAgLy8gQnkgY29uc3RydWN0aW9uIG9mIGNodW5rQ2hhcnMsIHRoZXJlIGNh
bid0IGhhdmUgYmVlbiBvdmVyZmxvdy4KKyAgICAgICAgQVNTRVJUKGNodW5rRGl2aXNvcik7Cisg
ICAgICAgIGludCBub25aZXJvRGlnaXQgPSBsZW5ndGggLSAxOworICAgICAgICBBU1NFUlQoeC0+
ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisKKyAgICAgICAgLy8ge3Jlc3R9IGhvbGRzIHRoZSBwYXJ0
IG9mIHRoZSBCaWdJbnQgdGhhdCB3ZSBoYXZlbid0IGxvb2tlZCBhdCB5ZXQuCisgICAgICAgIC8v
IE5vdCB0byBiZSBjb25mdXNlZCB3aXRoICJyZW1haW5kZXIiIQorICAgICAgICBKU0JpZ0ludCog
cmVzdCA9IG51bGxwdHI7CisKKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0IHJvdW5kLCBkaXZpZGUg
dGhlIGlucHV0LCBhbGxvY2F0aW5nIGEgbmV3IEJpZ0ludCBmb3IKKyAgICAgICAgLy8gdGhlIHJl
c3VsdCA9PSByZXN0OyBmcm9tIHRoZW4gb24gZGl2aWRlIHRoZSByZXN0IGluLXBsYWNlLgorICAg
ICAgICBKU0JpZ0ludCoqIGRpdmlkZW5kID0gJng7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IERpZ2l0IGNodW5rOworICAgICAgICAgICAgYWJzb2x1dGVEaXZTbWFsbChleGVjLCAqZGl2aWRl
bmQsIGNodW5rRGl2aXNvciwgJnJlc3QsICZjaHVuayk7CisgICAgICAgICAgICBBU1NFUlQocmVz
dCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdEJ1
aWxkZXIuYXBwZW5kKENvbnZlcnNpb25DaGFyc1tjaHVuayAlIHJhZGl4XSk7CisgICAgICAgICAg
ICAgICAgY2h1bmsgLz0gcmFkaXg7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAgICAgICAgaWYgKCFyZXN0
LT5kaWdpdChub25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5vblplcm9EaWdpdC0tOwor
CisgICAgICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0aGFuIG9uZSBkaWdpdCBw
ZXIgaXRlcmF0aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVua0Rpdmlzb3IgaXMgc21h
bGxlciB0aGFuIG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFTU0VSVChyZXN0LT5kaWdp
dChub25aZXJvRGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVyb0RpZ2l0ID4gMCk7CisK
KyAgICAgICAgbGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAgfQorCisgICAgZG8gewor
ICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZChDb252ZXJzaW9uQ2hhcnNbbGFzdERpZ2l0ICUg
cmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgICAgICBwb3MrKzsKKyAg
ICB9IHdoaWxlIChsYXN0RGlnaXQgPiAwKTsKKyAgICBBU1NFUlQocG9zKTsKKyAgICBBU1NFUlQo
cG9zIDw9IHN0YXRpY19jYXN0PGludD4oY2hhcnNSZXF1aXJlZCkpOworCisgICAgLy8gUmVtb3Zl
IGxlYWRpbmcgemVyb2VzLgorICAgIHdoaWxlIChwb3MgPiAxICYmIHJlc3VsdEJ1aWxkZXJbcG9z
IC0gMV0gPT0gJzAnKQorICAgICAgICBwb3MtLTsKKworICAgIGlmIChzaWduKSB7CisgICAgICAg
IHJlc3VsdEJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgIHBvcysrOworICAgIH0KKworICAg
IC8vIFJldmVyc2UgdGhlIHN0cmluZy4KKyAgICBTdHJpbmdCdWlsZGVyIHJldmVyc2VCdWlsZGVy
OworICAgIHJldmVyc2VCdWlsZGVyLnJlc2VydmVDYXBhY2l0eShzdGF0aWNfY2FzdDxzaXplX3Q+
KGNoYXJzUmVxdWlyZWQpKTsKKyAgICBmb3IgKGludCBpID0gcG9zIC0gMTsgaSA+PSAwOyBpLS0p
CisgICAgICAgIHJldmVyc2VCdWlsZGVyLmFwcGVuZChyZXN1bHRCdWlsZGVyW2ldKTsKKworICAg
IHJldHVybiByZXZlcnNlQnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKK30KKworc2l6ZV90IEpT
QmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU0JpZ0ludCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNpemVfdCBidWZmZXJFc3Rp
bWF0ZWRTaXplID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNpemU7CisgICAgcmV0dXJu
IEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0ZWRTaXplOworfQorCit2
b2lkIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlmICh0aGlzLT5pc1plcm8o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRleCA9IG1fbGVuZ3RoIC0g
MTsKKyAgICB3aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIXRoaXMtPmRpZ2l0KG5vblplcm9J
bmRleCkpCisgICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYgKG5vblplcm9JbmRleCA9
PSBtX2xlbmd0aCAtIDEpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBuZXdMZW5ndGggPSBu
b25aZXJvSW5kZXggKyAxOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobmV3TGVuZ3RoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYmFja2luZ1N0b3JlKTsKKyAgICBEaWdpdCogZGF0YSA9IHN0
YXRpY19jYXN0PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG5ld0xlbmd0aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gdGhpcy0+ZGlnaXQoaSk7CisKKyAg
ICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMWNhYjdjMGI2NjcyNGY1MjA5NTdlNGQ5YjAyYWIxZTJiNWM4
ZWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApAQCAtMCwwICsxLDM1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlv
IExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5j
bHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQmlnSW50IDogcHVibGlj
IEpTQ2VsbCB7CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHVibGljOgor
CisgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoKTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZShib29sIHplcm9Jbml0aWFsaXplKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqKTsKKworICAgIGlubGluZSBzdGF0aWMgaW50IHNpemVGb3IoaW50
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBsZW5ndGggKiBEaWdpdFNpemU7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGUoZXhlYywgdm0sIDAp
OworICAgICAgICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHpl
cm9CaWdJbnQ7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIGludCBsZW5ndGgpCisgICAgeworICAgICAgICBKU0JpZ0ludCogYmln
SW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBKU0Jp
Z0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOworICAgICAgICBiaWdJ
bnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb21JbnQoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIGludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkp
IEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJ
bnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBpZiAodmFsdWUgPCAwKSB7
CisgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0PigtMSAq
IHZhbHVlKSk7CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4o
dmFsdWUpKTsKKworICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0YXRpYyBK
U0JpZ0ludCogY3JlYXRlRnJvbVVpbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVpbnQzMl90
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBj
cmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXApKSBKU0JpZ0ludCh2bSwgdm0u
YmlnSW50U3RydWN0dXJlLmdldCgpLCAxKTsKKyAgICAgICAgYmlnSW50LT5maW5pc2hDcmVhdGlv
bihleGVjLCB2bSk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGln
aXQ+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUFueUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
aW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCks
IDEpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAg
ICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRp
Y19jYXN0PERpZ2l0PigtMSAqIHZhbHVlKSk7CisgICAgICAgICAgICBiaWdJbnQtPnNldFNpZ24o
dHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBz
dGF0aWNfY2FzdDxEaWdpdD4odmFsdWUpKTsKKyNlbHNlCisgICAgICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmln
SW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDIpOworICAgICAgICBiaWdJbnQtPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKworICAgICAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAg
ICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAg
ICAgICBzaWduID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIERpZ2l0IGxvd0JpdHMgID0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHZhbHVlICYgMHhmZmZmZmZmZik7CisgICAgICAgIERpZ2l0IGhp
Z2hCaXRzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KCh2YWx1ZSA+PiAzMikgJiAweGZmZmZmZmZmKTsK
KworICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGxvd0JpdHMpOworICAgICAgICBiaWdJbnQt
PnNldERpZ2l0KDEsIGhpZ2hCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOwor
I2VuZGlmCisgICAgICAgIAorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUJvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZt
LCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIDEpOworICAgICAgICBiaWdJbnQtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCAxKTsKKyAgICAg
ICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgICAgICBpZiAobV9sZW5ndGgp
IHsKKyAgICAgICAgICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobV9sZW5ndGgpKTsKKyAgICAg
ICAgICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nhc3Q8RGlnaXQqPihiYWNraW5nU3RvcmUpOwor
ICAgICAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmln
SW50Kj4odGhpcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRTaWduKGJvb2wgc2lnbikgeyBtX3Np
Z24gPSBzaWduOyB9CisgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CisK
KyAgICB2b2lkIHNldExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3RoID0gbGVuZ3RoOyB9Cisg
ICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAg
IHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cmlu
Z1ZpZXcgcykKKyAgICB7CisgICAgICAgIGlmIChzLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLCBzLmNoYXJhY3RlcnM4KCkpOworICAgICAgICByZXR1
cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMsIHMuY2hhcmFjdGVyczE2KCkpOworICAgIH0KKworICAg
IHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cmlu
Z1ZpZXcgcywgdWludDhfdCByYWRpeCkKKyAgICB7CisgICAgICAgIGlmIChzLmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLmNoYXJhY3RlcnM4KCksIHMu
bGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBwYXJzZUludChleGVj
LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbFRvQmlnSW50KEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiwgSlNCaWdJbnQqLCBpbnQgcmFkaXgpOworCisgICAg
Ym9vbCBpc1plcm8oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCgpIHx8ICFzaWduKCkp
OworICAgICAgICByZXR1cm4gbGVuZ3RoKCkgPT0gMDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3Rh
dGUqIGV4ZWMsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCBDaGFyVHlwZSogIGRhdGEpCisgICAgewor
ICAgICAgICBpbnQgbGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgICAgICBpbnQgcCA9IDA7Cisg
ICAgICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW3BdKSkKKyAg
ICAgICAgICAgICsrcDsKKworICAgICAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJh
Y3RlcnMKKyAgICAgICAgaWYgKHAgKyAxIDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZGF0
YVtwXSA9PSAnMCcgJiYgKGRhdGFbcCArIDFdID09ICdiJyB8fCBkYXRhW3AgKyAxXSA9PSAnQicp
KQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgZGF0YSwgbGVuZ3Ro
LCBwICsgMiwgMiwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAoZGF0YVtwXSA9PSAnMCcgJiYg
KGRhdGFbcCArIDFdID09ICd4JyB8fCBkYXRhW3AgKyAxXSA9PSAnWCcpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMTYsIGZh
bHNlKTsKKworICAgICAgICAgICAgaWYgKGRhdGFbcF0gPT0gJzAnICYmIChkYXRhW3AgKyAxXSA9
PSAnbycgfHwgZGF0YVtwICsgMV0gPT0gJ08nKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFy
c2VJbnQoZXhlYywgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDgsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgc2lnbiA9IGZhbHNlOworICAgICAgICBpZiAocCA8IGxlbmd0aCkg
eworICAgICAgICAgICAgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgICAgICsrcDsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CisgICAgICAgICAgICAgICAg
c2lnbiA9IHRydWU7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNlSW50KGV4ZWMsIHZtLCBkYXRh
LCBsZW5ndGgsIHAsIDEwKTsKKworICAgICAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVy
bygpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24pOworCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICAg
IHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENoYXJU
eXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJhZGl4LCBib29sIGFs
bG93RW1wdHlTdHJpbmcgPSB0cnVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAw
KTsKKyAgICAgICAgaW50IHAgPSBzdGFydEluZGV4OworCisgICAgICAgIGlmICghYWxsb3dFbXB0
eVN0cmluZyAmJiBzdGFydEluZGV4ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKKyAgICAgICAgd2hpbGUg
KHAgPCBsZW5ndGggJiYgZGF0YVtwXSA9PSAnMCcpCisgICAgICAgICAgICArK3A7CisKKyAgICAg
ICAgaW50IGVuZEluZGV4ID0gbGVuZ3RoIC0gMTsKKyAgICAgICAgLy8gUmVtb3ZpbmcgdHJhaWxp
bmcgc3BhY2VzCisgICAgICAgIHdoaWxlIChlbmRJbmRleCA+PSBwICYmIGlzU3RyV2hpdGVTcGFj
ZShkYXRhW2VuZEluZGV4XSkpCisgICAgICAgICAgICAtLWVuZEluZGV4OworCisgICAgICAgIGxl
bmd0aCA9IGVuZEluZGV4ICsgMTsKKworICAgICAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisKKyAgICAgICAgaW50IGxpbWl0MCA9
ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7CisgICAgICAgIGludCBsaW1pdGEgPSAn
YScgKyAocmFkaXggLSAxMCk7CisgICAgICAgIGludCBsaW1pdEEgPSAnQScgKyAocmFkaXggLSAx
MCk7CisKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGV4ZWMsIHZtLCBy
YWRpeCwgbGVuZ3RoIC0gcCk7CisgICAgICAgIHJlc3VsdC0+aW5pdGlhbGl6ZSh0cnVlKTsKKwor
ICAgICAgICBmb3IgKGludCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKKyAgICAgICAg
ICAgIHVpbnQzMl90IGRpZ2l0OworICAgICAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRh
dGFbaV0gPCBsaW1pdDApCisgICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAnOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkK
KyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnYScgKyAxMDsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCisgICAgICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5
QWRkKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocmFkaXgpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KGRpZ2l0KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAg
ICAgICAgIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZNJiwgaW50IHJhZGl4LCBpbnQg
Y2hhcmNvdW50KTsKKworICAgIHR5cGVkZWYgdWludHB0cl90IERpZ2l0OworICAgIHN0YXRpYyBj
b25zdCBpbnQgQml0c1BlckJ5dGUgPSA4OworICAgIHN0YXRpYyBjb25zdCBpbnQgRGlnaXRTaXpl
ID0gc2l6ZW9mKERpZ2l0KTsKKyAgICBzdGF0aWMgY29uc3QgaW50IERpZ2l0Qml0cyA9IERpZ2l0
U2l6ZSAqIEJpdHNQZXJCeXRlOworICAgIHN0YXRpYyBjb25zdCBpbnQgSGFsZkRpZ2l0Qml0cyA9
IERpZ2l0Qml0cyAvIDI7CisgICAgc3RhdGljIGNvbnN0IERpZ2l0IEhhbGZEaWdpdE1hc2sgPSAo
MXVsbCA8PCBIYWxmRGlnaXRCaXRzKSAtIDE7CisgICAgc3RhdGljIGNvbnN0IGludCBNYXhJbnQg
PSAweDdGRkZGRkZGOworCitwdWJsaWM6CisKKyAgICAvLyBUaGUgbWF4aW11bSBsZW5ndGggdGhh
dCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB3b3VsZCBiZQorICAgIC8vIE1h
eEludCAvIERpZ2l0Qml0cy4gSG93ZXZlciwgd2UgdXNlIGEgbG93ZXIgbGltaXQgZm9yIG5vdywg
YmVjYXVzZQorICAgIC8vIHJhaXNpbmcgaXQgbGF0ZXIgaXMgZWFzaWVyIHRoYW4gbG93ZXJpbmcg
aXQuCisgICAgLy8gU3VwcG9ydCB1cCB0byAxIG1pbGxpb24gYml0cy4KKyAgICBzdGF0aWMgY29u
c3QgaW50IE1heExlbmd0aCA9IDEwMjQgKiAxMDI0IC8gKHNpemVvZih2b2lkKikgKiBCaXRzUGVy
Qnl0ZSk7CisKK3ByaXZhdGU6CisKKyAgICB2b2lkIHJpZ2h0VHJpbShWTSYpOworCisgICAgLy8g
RGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJzLgorICAgIHN0YXRpYyBpbmxpbmUgRGlnaXQgZGlnaXRB
ZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGNhcnJ5KTsKKyAgICBzdGF0aWMgaW5saW5lIERp
Z2l0IGRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0KiBib3Jyb3cpOworICAgIHN0YXRp
YyBpbmxpbmUgRGlnaXQgZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQqIGhpZ2gpOwor
ICAgIHN0YXRpYyBpbmxpbmUgRGlnaXQgZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBE
aWdpdCBkaXZpc29yLCBEaWdpdCogcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRQ
b3coRGlnaXQgYmFzZSwgRGlnaXQgZXhwb25lbnQpOworCisgICAgc3RhdGljIHZvaWQgYWJzb2x1
dGVEaXZTbWFsbChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJ
bnQqKiBxdW90aWVudCwgRGlnaXQqIHJlbWFpbmRlcik7CisKKyAgICB2b2lkIGludGVybmFsTXVs
dGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCBp
bnQsIEpTQmlnSW50KiByZXN1bHQpOworICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0
IG11bHRpcGxpZXIsIERpZ2l0IHBhcnQpOworCisgICAgaW5saW5lIERpZ2l0IGRpZ2l0KGludCBu
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVuZ3RoKCkpOworICAgICAg
ICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgRGlnaXQqIGRhdGFQdHIgPSBtX2RhdGEuZ2V0KCk7
CisgICAgICAgIHJldHVybiBkYXRhUHRyW25dOworICAgIH0KKworICAgIGlubGluZSB2b2lkIHNl
dERpZ2l0KGludCBuLCBEaWdpdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAg
JiYgbiA8IGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0
KiBkaWdpdFB0ciA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgZGlnaXRQdHJbbl0gPSB2YWx1ZTsK
KyAgICB9CisKKyAgICBib29sIG1fc2lnbjsKKyAgICBpbnQgbV9sZW5ndGg7CisgICAgQ2FnZWRC
YXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7Cit9OworCitpbmxp
bmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKHZhbHVl
LmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAgICByZXR1cm4ganNDYXN0PEpTQmlnSW50Kj4odmFs
dWUuYXNDZWxsKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggZDAzMDQ1MjIwZDVlOTUyNjdlZDlm
OGY3YjlkMzM2NWE4MzE3OWRkMy4uNGU5NjYwMTRjNWUxNGE5ZmM5NzVkM2RhZDJlOTY1ZTFiZGI0
NTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0JpZ0lu
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTM3Niw2ICszNzcsMTIgQEAgSlNTdHJpbmcq
IEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJldHVybkVt
cHR5U3RyaW5nT25FcnIKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAg
IHJldHVybiBlcnJvclZhbHVlKCk7CiAgICAgfQorICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAg
ICAgIFN0cmluZyBiaWdJbnRTdHJpbmcgPSBKU0JpZ0ludDo6dG9TdHJpbmcoZXhlYywgYXNCaWdJ
bnQoYXNDZWxsKCkpLCAxMCk7CisgICAgICAgIGlmIChiaWdJbnRTdHJpbmcubGVuZ3RoKCkgPT0g
MSkKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGJpZ0ludFN0cmluZ1swXSk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBiaWdJbnRTdHJpbmcpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGMyNGVh
NWJiZjM1NDdiNGZmZDQ1ZGVlYmE2ZGU0MWYyNjE5NmUzOGUuLjlmMzlhM2M3ZGUwNzdkMjNkZTAy
ZGIxOTJhYTQzZDIwZTIwMjdkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FueUlu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5n
KCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2wo
KSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRl
clNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggYTI3ZjZhMTExYmJkNWJjZWViYTIzY2ZjZjI4M2ZmZDVm
YTEwNGM3Ny4uMjc5MDU3YTM1NjI2NGEwZDU2MWNiOTkwZTdhOTI4ZDJjNjA0NmQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTU3OCw2ICs1NzksMTEgQEAgaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSAm
JiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJ
bnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQo
KTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJl
dHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTcxNSwxMCArNzIxLDE3
IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4
ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlCiAKIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgIGlmIChpc0RvdWJs
ZSgpKQogICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKKyAgICBpZiAoaXNCaWdJbnQoKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYXN0IGZy
b20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIikpOworICAgICAgICByZXR1
cm4gUE5hTjsKKyAgICB9CisKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShleGVjKTsKIH0K
IApAQCAtMTAyMCw2ICsxMDMzLDggQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmlj
dEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYKIAogICAgIGlm
ICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZXhlYywgYXNTdHJpbmcodjIpKTsKKyAg
ICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmVxdWFsVG9CaWdJbnQoYXNCaWdJbnQodjEuYXNDZWxsKCkpLCBhc0JpZ0ludCh2Mi5h
c0NlbGwoKSkpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMTQzNDZlOGFjMGVlN2ZiYzFiYzM1NzllZTYzZjVj
YjE2YTk2MDgzNy4uNzk0YmM3N2UyMDIxZjAzMzU0YWE2NjE0MjMzY2RkNTk1ZGNhMGI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xNTUsNiArMTU1LDgg
QEAgSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwog
ICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3lt
Ym9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOworICAgIGlmIChp
c0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0
aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJl
ZFR5cGUpOwogfQogCkBAIC0xODEsNiArMTgzLDggQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmpl
Y3RTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY28K
ICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZXhlYywg
Z2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggOWZjMGM5YjA5NDAxNjQwZmIxNWQ1
MjUxYTQxN2ViODQ4NjBkNmNjZC4uNzFmOTlkOTdjZjVjZDI5MWNjZTVjMzU0Y2E5YWM2MmI5NDk3
NWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTExMiw2ICsx
MTIsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAg
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAg
ICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAg
IGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCA1NzBmMDk0YmFkNGIwN2ExMWFlZTIwNjA3ZGUw
YTc2ODFmN2ZkYzNlLi45ODM2YjM0NzA1ZTBhNzU2MDA0Nzk2MzE4OWViZGZhODM3Nzc2NTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0y
MDEsNiArMjAxLDExIEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlNDZWxsOjpp
c0JpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworfQor
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
eXBlID09IFN5bWJvbFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjE4MjVlOWU2MmJlNTIyZGIxZWVhYTQyYTY2ZWJlYjg4
ZGI5OTg4YS4uMjhhOTI4MDQwZDZmY2MyM2U3OTMxOGFhNzMyMGVjNWU1OTQzZjFmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NjM3LDcgKzYzNyw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvCiBtXyAjIyBsb3dlck5hbWUg
IyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOyBcCiAKICAgICBGT1JfRUFD
SF9TSU1QTEVfQlVJTFRJTl9UWVBFKENSRUFURV9DT05TVFJVQ1RPUl9GT1JfU0lNUExFX1RZUEUp
Ci0gICAgCisKICN1bmRlZiBDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFCiAKICAg
ICBtX2Vycm9yQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBlcnJvckNvbnN0cnVjdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODUzNTZkMzk3N2FlZDVjNzNi
ODlhZmYwNWM5N2MyNDJmOTViYjRlYS4uNTc3ZDE4ZTAyNWMxMWE5OTJjZTE2Yzg1MGNiMjIxOGUy
MWM2YzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTMzLDYg
KzMzLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxsVHlwZSwKICAgICBTdHJp
bmdUeXBlLAogICAgIFN5bWJvbFR5cGUsCisgICAgQmlnSW50VHlwZSwKIAogICAgIEN1c3RvbUdl
dHRlclNldHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCBlOGYzMTZjZjQyYjhlOTI4OWZjYTA4
OWI0ODMxMjE1YjdhMzAyMDMzLi4wZmRjN2MzNTY1Y2U4YWIxZGRlYzUxZGVmZDRjZjM4NTJjMzk5
ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC02
Niw2ICs2NiwyNSBAQCBpbmxpbmUgaW50IGNsejMyKHVpbnQzMl90IG51bWJlcikKICNlbmRpZgog
fQogCitpbmxpbmUgaW50IGNsejY0KHVpbnQ2NF90IG51bWJlcikKK3sKKyNpZiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisgICAgaW50IHplcm9Db3VudCA9IDY0OworICAgIGlmIChudW1iZXIpCisg
ICAgICAgIHplcm9Db3VudCA9IF9fYnVpbHRpbl9jbHpsbChudW1iZXIpOworICAgIHJldHVybiB6
ZXJvQ291bnQ7CisjZWxzZQorICAgIGludCB6ZXJvQ291bnQgPSAwOworICAgIGZvciAoaW50IGkg
PSA2MzsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKCEobnVtYmVyID4+IGkpKQorICAgICAg
ICAgICAgemVyb0NvdW50Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gemVyb0NvdW50OworI2VuZGlmCit9CisKIC8vIFRoaXMgaW4gdGhlIFRv
SW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYy
IHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUlu
dDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KIC8vIG9mIHRoZSByZXN1bHRpbmcgYml0
LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1wbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDZk
MTA1NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAuLjk3Y2ZhMDdhOTY5NDAyMjI1
NmM5YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpTVmFsdWUganNUeXBlU3RyaW5n
Rm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYp
CiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgaWYg
KHYuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zeW1ib2xTdHJp
bmcoKTsKKyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJp
bmdzLmJpZ2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5l
ZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApAQCAtMTEyLDcgKzExNCw3IEBA
IGJvb2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
dikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXND
ZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3lt
Ym9sVHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlw
ZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
dHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJl
KHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNzhlNzdh
ZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJhMzI3ZjBkNWQyZDYwMDYyYWIz
NTRkZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0
aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQsIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBpbiBmYXN0IFRMUy4gSWYg
ZmFsc2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAogICAgIHYoYm9vbCwgdXNl
Q2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3
ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdhc20gdG8gSlMgY2FsbHMu
IikgXAogICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFkIGZlYXR1cmUuIikgXAorICAg
IHYoYm9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFi
bGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFy
cmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmls
ZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilcCiAgICAgdihib29sLCBmb3Jj
ZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3
YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKaW5kZXggMTJmNDUz
ZTc2MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAwYzlmMTVkNy4uNGVkMTFmOGZlZDJjOGM0YmZmMGU0
MmM4NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvdG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwogY2xhc3MgUHJvdG90eXBlS2V5IHsKIHB1YmxpYzoK
ICAgICBQcm90b3R5cGVLZXkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmgKaW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2Zjhk
MGYzOC4uODg1MGM0YTlhMzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcg
QEAKICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNy
byhzeW1ib2wpIFwKKyAgICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gb2JqZWN0U3RyaW5nKCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZU
eXBlOjpCaWdJbnQ6CisgICAgICAgICAgICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDc1ZmQ3NWIw
ZWIxOGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2NjdjLi45ZjU3OGU4YWJjNTQxNjAwMzk0MTg1OGJh
YWZiMzFjODhlNzA3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgK
aW5kZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2NlYWNiYTZkMmI3OWI0ZDlmZTU1NS4uMjU3MGI3MmUz
YmM0YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4ZGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcwOWE3
ZjU0MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFjZTguLjNiZmNmNTcxZjRhODdhMzFlYmY5MDVkNjhk
NGI1MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZQogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9s
VHlwZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0K
IAogaW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZW9mVHlwZS5jcHAKaW5kZXggZGIxNjJiN2Y0ZjRjZTIzZmI4ODA1NmRkZjQxYzQ4ZGUz
MGQ1NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVkYWU0YzFhNDgzNjBkNDBlZjhiYmM0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlw
ZSkKICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1
bmN0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoK
KyAgICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4IDMzMmZhODEyMTkyYTVhNjJlYjY2YmM2MWIy
ODA4YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0MWM2ZGI3NjJjZTgxMDZmZjI4NTNhNmM1OTcwYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKQEAgLTMxLDYg
KzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgVHlwZW9mVHlwZSB7CiAgICAg
VW5kZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAogICAgIE51bWJlciwKICAgICBT
dHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjIwMDg1NzNmZTAy
YTQ1Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5YS4uNTk3ZGM1M2EwNTAwMTJkYWM3OTEwOTE4ZmM5
MDQyMTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjMs
NiArNjMsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1
ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgwLDYgKzI4MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNl
dCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNldEl0ZXJhdG9yU3RydWN0dXJl
LnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRv
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGJpZ0ludFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRU
eXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgq
dGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNTU0YjM1MGQ0MTg1MTVlNDhiNmY4ZmNjMGU4NGVj
MDE3MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRmMzQxMmE2OTZiOGRiMzc3MzJkNDNmZTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM4OCw2ICszODgsNyBAQCBwdWJsaWM6CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBtYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1
Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7
CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhmODk4YzlmYzRiMTcyOTZjYzcz
YmU1NmEzM2Y1NmZkMDZiNzY5Yi4uMGNmNjlkMTk3NDk4MTQxOTVjNTY5NjcwNjk0MjJiNDIwNDc5
YzM2NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWls
LmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQgbGl0ZXJh
bHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMTYgIERv
biBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
IFVwZGF0ZSBXaW5DYWlyb1JlcXVpcmVtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
aW5kZXggNDExZTlhNzUzMjM4NjkyODkyZTkzNjIwNmZjY2U3NDliMTc4ZWNiZC4uOWMwMDYyNjM1
ODkxMGQ5NjdkZTQ3OGI3OWMyZjkyMWM1MTAzMzQ3MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCkBAIC02MTYsNiArNjE2LDEwIEBAIGRlZiBydW5EZWZhdWx0KCpvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJkZWZhdWx0IiwgKihGVExfT1BUSU9OUyArIG9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICIt
LXVzZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09w
dGlvbnMpKQorZW5kCisKIGRlZiBydW5GVExOb0NKSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0
aW9ucykKICAgICBydW4oIm1pc2MtZnRsLW5vLWNqaXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJ
VF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMWVkMjIzN2Nk
YWE0MTMyNDNlZWJlNDBmYTJiYWFmYjNhNTY2ZWUxLi4wYzYzYjUyZWFkNTE2NDZkNTc4MjA0MDc0
NjdjNDg1ZjJiMTU5ZmQwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTE3ICBDYWlvIExpbWEgIDx0
aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVu
dCBCaWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpZ0ludFRlc3RzLnlhbWw6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChhc3NlcnRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKiBzdHJlc3MvYmln
LWludC10eXBlLW9mLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisKIDIwMTctMTEtMTYg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgbWFyayByZWdyZXNzLTE3ODM4NS5qcyBhcyBtZW1vcnkgZXhoYXVzdGluZwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUyYjE3N2UyNjI2YzI1NDg4YzNhMjhkOTVkMTZlNzU0NjI1NzI1ZjMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKQEAgLTAsMCArMSwzMyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4u
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFByb3ZpZGVkIHRv
IHNpbXBsaWZ5IHJ1bm5pbmcgQmlnSW50IHRlc3RzLiBUbyBiZSByZW1vdmVkIG9uY2UgQmlnSW50
CisjIGFyZSBubyBsb25nZXIgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLgorCistLS0KKy0gcGF0aDog
c3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0g
cGF0aDogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZjNzkyMDAxMzQxYTA1
ODM5ZWI2YmI2ODE5MmYwOWNiY2FhMDVmNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKQEAgLTAsMCArMSwxMDYgQEAKKy8vQCBydW5CaWdJbnRF
bmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAg
ICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUg
aW5zdGFuY2VvZiBTeW50YXhFcnJvcik7CisgICAgfQorfQorCisvLyBUZXN0IDAgY29udmVyc2lv
bnMKK2xldCBuID0gMG47Cithc3NlcnQobiA9PT0gMG4pOworCituID0gMDBuOworYXNzZXJ0KG4g
PT09IDBuKTsKKworLy8gQmluYXJ5IHJlcHJlc2VudGF0aW9uCisKK24gPSAwYjExMTFuOworYXNz
ZXJ0KG4gPT09IDE1bik7CisKK24gPSAwYjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK24gPSAw
YjAxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitsZXQgYmluYXJ5U3RyaW5nID0gIjBiMSI7Citm
b3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisK
K24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIw
OTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKK24gPSAwQjExMTFuOworYXNzZXJ0KG4g
PT09IDE1bik7CisKK24gPSAwQjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK2JpbmFyeVN0cmlu
ZyA9ICIwQjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJp
bmcgKz0gIjAiOworCituID0gZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09
IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCisvLyBPY3RhbCBy
ZXByZXNlbnRhdGlvbgorCituID0gMG83bjsKK2Fzc2VydChuID09PSA3bik7CisKK24gPSAwbzEw
bjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwbzIwbjsKK2Fzc2VydChuID09PSAxNm4pOwor
CituID0gMG8wMDAyMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPN247Cithc3NlcnQo
biA9PT0gN24pOworCituID0gME8xMG47Cithc3NlcnQobiA9PT0gOG4pOworCituID0gME8yMG47
Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisK
Ky8vIEhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAweGFuOworYXNzZXJ0KG4gPT09
IDEwbik7CisKK24gPSAweGZmbjsKK2Fzc2VydChuID09PSAyNTVuKTsKKworbiA9IDB4MDAwZmZu
OworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHhmYWJjbjsKK2Fzc2VydChuID09PSA2NDE4
OG4pOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjJuIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIwYjAybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIxbm4iKTsKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjBvODluIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzA4
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG83bm4iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjB4Z24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4MGduIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIweGZubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTAwbm4i
KTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjFhMG5uIik7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjZDMwMTI0NmI5NThmNGM2ZDRkYTExYWY3Y2QwYTZiNDA5
MmFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpz
CkBAIC0wLDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2Vy
dChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRp
b24iKTsKK30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0gImJpZ2ludCIpOworYXNzZXJ0KHR5cGVv
ZiAxbiAhPT0gIm9iamVjdCIpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327481</attachid>
            <date>2017-11-22 21:32:18 -0800</date>
            <delta_ts>2017-11-23 07:41:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171123033215.patch</filename>
            <type>text/plain</type>
            <size>100051</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi40NThkMWVjM2QyYjcxYzll
Nzk2YmVhNDMwNmEwM2RlZDk5NTU2ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IG9uIEpTQmlnSW50OjptX2RhdGEgdG8KKyAg
ICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0
eSBhbmQgYWxsb3dpbmcKKyAgICAgICAgNjQtYml0d2lzZSAob3IgMzItYml0d2lzZSkgYXJpdGht
ZXRpYyBvcGVyYXRpb25zLiBKU0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24KKyAgICAgICAgdG8gc3Rv
cmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRhXV0gYW5kIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJh
Y2sgb2YgQmlnSW50IGxlbmd0aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxv
d2luZyB0aGUgVjggb25lLiBKU0JpZ0ludDo6bV9kYXRhIGFyZSBtYW5pcHVsYXRlZAorICAgICAg
ICBieSBKU0JpZ0ludDo6c2V0RGlnaXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0
KGluZGV4KSBvcGVyYXRpb25zLgorICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25z
IHRvIHN1cHBvcnQgYXJpdGhtZXRpY3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1w
b3J0YW50IHRvIG5vdGljZSB0aGF0IG9uIHRoaXMgcmVwcmVzZW50YXRpb24sIEpTQmlnSW50Ojpt
X2RhdGFbMF0gcmVwcmVzZW50cworICAgICAgICB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQg
YW5kIEpTQmlnSW50OjptX2RhdGFbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0Cisg
ICAgICAgIHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6Qmln
SW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJl
c3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZh
bHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpiaWdJ
bnRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yQWRkKToKKyAgICAgICAgKEpT
Qzo6UmVzdWx0VHlwZTo6Zm9yTG9naWNhbE9wKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCaWdJbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVplcm8pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRl
cm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldERpZ2l0KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAoSlNDOjphc0JpZ0ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9O
dW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xv
d0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9N
YXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUtleS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE3LTExLTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgZmVhdHVyZSBkZWZpbmUgZm9yIGFsdGVybmF0aXZlIHByZXNlbnRhdGlvbiBidXR0
b24gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWM0YTk5YmFiMDUw
ODA3ZTY3MjZlMTZiYjI1OWFkMDJiMjY0ZDcwLi5lZjI1MmMzYWQ3MzY1ZjM2NzZlYzQwMzY4ZWJl
NGQ3NzllYWJhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzkyLDcgKzc5
Miw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAv
KiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwotCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzczOEQxMUVEQjU2NzIw
MDNGMkIwQiAvKiBQYXJzZUludC5oICovOyB9OworCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIg
LyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3MzFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVy
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
Mjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMjk1Mjc0MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0
ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjksNiArMTEyOSw3IEBACiAJCTg2NzA0
Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAv
KiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1i
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBACiAJCTg2ODgwRjFC
MTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBK
U0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JpZ0ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYgLyog
SlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCaWdJ
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRBMDA4
NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0
NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBsaW5lRW5k
aW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0u
bW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1t
Lm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1t
bS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQt
bW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
LW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
Mi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
My5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0
LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcu
Y3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENB
IC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0
MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMz
MUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAv
KiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJCThCQzA2NDg5MUUx
QUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFBMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTg5OCwx
NCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjczNUU3ODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM2QjMxOUIxRjcz
NUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTlCMUY3
MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNjYxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
MEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3MGU0MzcuLmE1ODc4
YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9KU0FzeW5jRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1bnRpbWUv
SlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgx
Yjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNkZmVjMThiNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgxMjc0NGNlYmZi
NWNiZjg5NzY0OTkwZTU1MC4uN2Y1ZWZmMmQwMjQ2MGViOGEzOWQ2ZmQzODg5ZjQxZmI4N2M0ZTBh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC05NSw2ICs5Niw3IEBAIHZvaWQgVmFyaWFibGU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAogUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKIHsKKyAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgbV9jb2RlQmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdp
c3Rlci52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAKICAgICBlbWl0TG9nU2hhZG93Q2hpY2tlblByb2xv
Z3VlSWZOZWNlc3NhcnkoKTsKQEAgLTIxMiw2ICsyMTQsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7
CiAKKyAgICBpZiAobV9lcnJvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX2Vycm9yOwor
CiAgICAgaWYgKG1fZXhwcmVzc2lvblRvb0RlZXApCiAgICAgICAgIHJldHVybiBQYXJzZXJFcnJv
cihQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJz
ZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTE3ODMsNiArMTc4OCwxNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xU
eXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7Cisg
ICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfaXNfY2VsbF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJp
Z0ludFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdp
bmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3Jf
bnVsbCk7CkBAIC0zMTI1LDYgKzMxMzgsMjAgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxv
Y2stPmFkZENvbnN0YW50QnVmZmVyKGxlbmd0aCk7CiB9CiAKK0pTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4X3QgcmFkaXgpCit7CisgICAgSlNCaWdJbnQqJiBiaWdJbnRJbk1hcCA9IG1fYmlnSW50TWFw
LmFkZChCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgpLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFiaWdJbnRJbk1hcCkgeworICAgICAgICBiaWdJbnRJ
bk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCAqdm0oKSwgU3RyaW5nVmlldyhpZGVu
dGlmaWVyLnN0cmluZygpKSwgcmFkaXgpOworICAgICAgICBpZiAoIWJpZ0ludEluTWFwKSB7Cisg
ICAgICAgICAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5
KTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAg
IGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworICAgIH0KKyAgICByZXR1cm4gYmlnSW50
SW5NYXA7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3Rh
bnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBKU1N0cmluZyomIHN0cmlu
Z0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNiZDQwNTJhZTVhMmI2YTA5
NzVkYTA0MGQ1YWY3Yi4uZDUzZmI0OTUyMjMzZDIzMDg3YWNlZjQwMzQzZWQzODQ3YzZiMWFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAg
LTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMTAwMCwxMCArMTAwMiwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhbGxv
Y2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3Bl
KCk7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVyTWFw
OwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyos
IElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOwotICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxhdGVS
ZWdpc3RyeUtleU1hcDsKLSAgICAgICAgCisgICAgICAgIHVzaW5nIEJpZ0ludE1hcEVudHJ5ID0g
c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdD47CisgICAgICAgIHN0cnVjdCBC
aWdJbnRFbnRyeUhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goQmlnSW50
TWFwRW50cnkga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXku
Zmlyc3QtPmV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgKyBXVEY6OmludEhhc2goa2V5LnNlY29u
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJzdCAmJiBhLnNlY29uZCA9
PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAg
ICAgICB9OworCisgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBKU1Zh
bHVlPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVl
ZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPjsKKyAgICAgICAgdXNp
bmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTQmlnSW50
KiwgQmlnSW50RW50cnlIYXNoPjsKKyAgICAgICAgdXNpbmcgVGVtcGxhdGVSZWdpc3RyeUtleU1h
cCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj47CisKICAg
ICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRoaXMg
d29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVjdGVkIGZ1bmN0aW9ucyBo
YXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBjb25zdHJ1Y3QKICAgICAg
ICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5ldyBPYmplY3QoKSIpLgpA
QCAtMTA4OCw2ICsxMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAg
ICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3Qg
cmFkaXgpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3Rh
bnQoUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYpOwogCiAgICAgICAgIFZlY3RvcjxVbmxpbmtl
ZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC0xMTg3LDYgKzEyMDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2Vu
dGF0aW9uLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoLCBF
bmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7CiAg
ICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJZGVudGlmaWVyU3RyaW5n
TWFwIG1fc3RyaW5nTWFwOworICAgICAgICBJZGVudGlmaWVyQmlnSW50TWFwIG1fYmlnSW50TWFw
OwogICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1h
cDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplciB7ICZtX2luc3RydWN0aW9ucyB9OwpAQCAtMTIwOCw2ICsxMjI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdXNpbmcgQ2F0Y2hFbnRyeSA9IHN0ZDo6dHVwbGU8VHJ5RGF0YSos
IGludCwgaW50PjsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1fY2F0Y2hlc1RvRW1pdDsK
KyAgICAgICAgUGFyc2VyRXJyb3IgbV9lcnJvcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBkN2ViY2E3MGRmODA4NDdmMzIwLi43
ZjNkYzU0NzNkNzRjZTNiMjNjY2RlMmE3YTZjNTEwYTZkOGFmNmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjIs
NiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5nQ29uc3Rh
bnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmF0b3IuYWRkQmln
SW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0
Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41ZTJjNDc2NGMyMWE3MjU3
MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNzUsNyAr
MTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBi
b29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2go
WyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5m
byB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUu
aXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09
IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBl
LnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlw
ZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkK
ICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2Ug
ZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5YWM3YmViMDI0ZDYwMC4u
ZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDIsNiAr
MjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBjYXNlIEJpZ0ludFR5cGU6
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUludmFsaWRG
dW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJndW1lbnRzKSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYjlmNzgzMDgx
NzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2ZDU4YjhlMGNlM2I3OWMz
NGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhYjk1NjEz
ZTZlNTUyODBiY2RiMDQ4ZjIyNTJiMTI1YzMxZGYzZGFlLi4zYWQzODhjNGM5OTY5ODllZWE5MzM0
NDAwZjA1ZjNiMzVjNzcxNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaApAQCAtMjMyLDYgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluY0NvbnN0YW50
cygpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9kZShsb2Nh
dGlvbiwgZCk7CiAgICAgfQorICAgIAorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCaWdJbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogYmlnSW50
LCB1aW50OF90IHJhZGl4KQorICAgIHsKKyAgICAgICAgaW5jQ29uc3RhbnRzKCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpZ0ludE5vZGUobG9jYXRpb24sICpiaWdJbnQs
IHJhZGl4KTsKKyAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZlZTZjNWRiZDU5
YWRlMzdmMmQxYjIyZDI5MTY0OGFkMjk2ZjU0MWQuLjVmYWQyYzBhMWYzMzk2M2RjZjA3Yzk1Nzcx
YjJhZWMxOGM0NmM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTUwMCw3ICsxNTAx
LDcgQEAgdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+OjpwYXJz
ZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSoKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFs
dWUpCitBTFdBWVNfSU5MSU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4gTGV4
ZXI8VD46OnBhcnNlSGV4KCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2lt
YWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpA
QCAtMTUxMiwxMCArMTUxMyw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VI
ZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1tYXhpbXVtRGlnaXRzOwogICAgIH0g
d2hpbGUgKGlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7
CiAKLSAgICBpZiAobWF4aW11bURpZ2l0cyA+PSAwKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
aGV4VmFsdWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShtYXhpbXVt
RGlnaXRzID49IDAgJiYgbV9jdXJyZW50ICE9ICduJykpCisgICAgICAgIHJldHVybiBoZXhWYWx1
ZTsKIAogICAgIC8vIE5vIG1vcmUgcGxhY2UgaW4gdGhlIGhleFZhbHVlIGJ1ZmZlci4KICAgICAv
LyBUaGUgdmFsdWVzIGFyZSBzaGlmdGVkIG91dCBhbmQgcGxhY2VkIGludG8gdGhlIG1fYnVmZmVy
OCB2ZWN0b3IuCkBAIC0xNTMzLDExICsxNTMyLDE0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhl
cjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAg
ICB9CiAKLSAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VC
aWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIG1ha2VJZGVudGlm
aWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgIAorICAgIHJldHVy
biBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8
VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6
b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gTGV4ZXI8VD46OnBh
cnNlQmluYXJ5KCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgYmluYXJ5IHZhbHVlcyBm
aXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IGJpbmFyeVZhbHVlID0gMDsKQEAgLTE1NTQs
MTAgKzE1NTYsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRv
dWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJ
SUJpbmFyeURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVND
SUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUg
PSBiaW5hcnlWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGlmIChMSUtF
TFkoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9
ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25z
dCBJZGVudGlmaWVyKj4+KGJpbmFyeVZhbHVlKTsKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVt
RGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsK
QEAgLTE1NjcsMTcgKzE1NjcsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJz
ZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9
IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRp
ZmllcihtX2J1ZmZlcjguYmVnaW4oKSwgbV9idWZmZXI4LnNpemUoKSkpOwogCi0gICAgcmV0dXJu
VmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXpl
KCksIDIpOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KHBhcnNlSW50T3ZlcmZsb3co
bV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMikpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3Vi
bGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91
YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZU9jdGFsKCkKIHsKICAgICAv
LyBPcHRpbWl6YXRpb246IG1vc3Qgb2N0YWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAg
dWludDMyX3Qgb2N0YWxWYWx1ZSA9IDA7CkBAIC0xNTk0LDkgKzE1OTQsOCBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAg
ICAgLS1kaWdpdDsKICAgICB9IHdoaWxlIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpICYm
IGRpZ2l0ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdp
dCA+PSAwKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gb2N0YWxWYWx1ZTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGln
aXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkgeworICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihvY3RhbFZhbHVlKTsKICAg
ICB9CiAKICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1p
KQpAQCAtMTYwNywxNyArMTYwNiwxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBh
cnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAK
LSAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgcmV0dXJuVmFsdWUg
PSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4obWFrZUlkZW50
aWZpZXIobV9idWZmZXI4LmJlZ2luKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVy
blZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6
ZSgpLCA4KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVu
dCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihwYXJzZUludE92ZXJmbG93
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChk
b3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8
ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKQogewog
ICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVz
LgogICAgIHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7CkBAIC0xNjM4LDEwICsxNjM3LDggQEAg
QUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5W
YWx1ZSkKICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlzQVNDSUlEaWdp
dChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdpdCA+PSAwICYm
IG1fY3VycmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykgewotICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4n
ICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScgJiYgbV9jdXJyZW50ICE9ICduJykKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlm
aWVyKj4+KGRlY2ltYWxWYWx1ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdp
dHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsK
QEAgLTE2NTEsOCArMTY0OCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNl
RGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICByZWNvcmQ4KG1fY3VycmVudCk7
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQorICAgIAorICAgIGlmIChVTkxJS0VMWShPcHRpb25z
Ojp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4obWFrZUlkZW50aWZp
ZXIobV9idWZmZXI4LmJlZ2luKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KQEAgLTIxMDAsNyArMjEwMCwyNyBAQCBzdGFydDoKICAgICAgICAgICAgIHRva2VuID0gRE9U
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZ290byBpbk51bWJlckFm
dGVyRGVjaW1hbFBvaW50OworICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7
CisgICAgICAgIHRva2VuID0gRE9VQkxFOworICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjAp
ID09ICdlJykgeworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRp
Y2F0b3IoKSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAg
ICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBw
YXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5n
dGgpOworICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgIHRva2VuID0g
dG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKwor
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxs
b3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsKKyAgICAgICAgICAgIHRva2Vu
ID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZB
TElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJy
b3I7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgogICAgICAgICBzaGlmdCgpOwogICAgICAgICBp
ZiAoKG1fY3VycmVudCB8IDB4MjApID09ICd4JykgewpAQCAtMjExMywxMyArMjEzMywyMiBAQCBz
dGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAg
ICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOworICAgICAgICAgICAgVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiBwYXJz
ZU51bWJlclJlc3VsdCA9IHBhcnNlSGV4KCk7CisgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJS
ZXN1bHQuaW5kZXgoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7Cisg
ICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0lu
dFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPihwYXJzZU51bWJlclJlc3VsdCk7
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDE2OworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRv
dWJsZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0
KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVjaW1hbCBsaXRlcmFsIGFuZCBpZGVudGlm
aWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfSEVYX05VTUJFUl9F
UlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2Vu
RGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJ
TlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tl
bih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmso
MCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjEzMywxMyArMjE2MiwyMiBA
QCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ2InIHByZWZpeC4KICAgICAg
ICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlQmluYXJ5KHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29u
c3QgSWRlbnRpZmllcio+PiBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlQmluYXJ5KCk7CisgICAg
ICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQgJiYgcGFyc2VOdW1iZXJSZXN1bHQtPmluZGV4
KCkgPT0gMSkgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBX
VEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZU51bWJlclJlc3VsdCA/IFdU
Rjo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSA6IDA7CisKICAgICAgICAgICAgIGlm
IChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3ZWVuIGJpbmFyeSBsaXRlcmFsIGFu
ZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfQklO
QVJZX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0
b2tlbiAhPSBCSUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50
ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVm
ZmVyOC5zaHJpbmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjE1NCwx
MyArMjE5MiwyMiBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHBy
ZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIG51bWJlclBhcnNlUmVzdWx0
ID0gcGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKG51bWJlclBhcnNlUmVzdWx0ICYmIG51
bWJlclBhcnNlUmVzdWx0LT5pbmRleCgpID09IDEpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9
IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpudW1iZXJQ
YXJzZVJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDg7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0g
bnVtYmVyUGFyc2VSZXN1bHQgPyBXVEY6OmdldDxkb3VibGU+KCpudW1iZXJQYXJzZVJlc3VsdCkg
OiAwOworCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0
d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRv
a2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAg
ICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9r
ZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUp
OwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0yMTcyLDM0ICsyMjE5LDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290
byByZXR1cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQo
bV9jdXJyZW50KSkgewotICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGF1dG8gbnVtYmVyUGFyc2VSZXN1bHQgPSBwYXJzZU9j
dGFsKCk7CisgICAgICAgICAgICBpZiAobnVtYmVyUGFyc2VSZXN1bHQgJiYgbnVtYmVyUGFyc2VS
ZXN1bHQtPmluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpudW1iZXJQYXJzZVJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2hhcmFjdGVyTnVtYmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9VQkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURl
Y2ltYWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9
IElOVEVHRVI7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4g
cGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAgICAgICAgIGlmICghcGFy
c2VOdW1iZXJSZXN1bHQgfHwgcGFyc2VOdW1iZXJSZXN1bHQtPmluZGV4KCkgPT0gMSkgeworICAg
ICAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCkgeworICAgICAgICAgICAgICAgICAg
ICB0b2tlbiA9IEJJR0lOVDsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLWluTnVtYmVy
QWZ0ZXJEZWNpbWFsUG9pbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VCTEU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0g
J2UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50
SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRv
ciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5B
VEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VS
Uk9SVE9LOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgdG9r
ZW5EYXRhLT5yYWRpeCA9IDEwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gSU5URUdFUjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdlJykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0
b3IoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
QVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlO
QVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9F
UlJPUlRPSzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1
ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBpZiAodG9r
ZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBl
Rm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICAgICAgICAg
ICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAo
dG9rZW4gPT0gSU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwotICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9
IFdURjo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKICAgICAgICAgICAgICAgICB0
b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
aW5kZXggZDg0NWUyZTE0ZjU2OWE0ZDM4ZTJjM2Q5OWVmNmM0NjcyMzI0MzIyMC4uMTk3N2RiMTY0
OTg4NTVhMTk3MmM4NjdhNDE5ODNlZDY3NDhiYjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaApAQCAtMTczLDEyICsxNzMsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQg
cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqLCBib29sIHN0cmljdE1vZGUpOwogICAgIHRlbXBsYXRl
IDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gTkVWRVJfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0
IHBhcnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdGEqLCBib29sIHN0cmljdE1vZGUpOwogCisg
ICAgZW51bSBjbGFzcyBOdW1iZXJQYXJzZVJlc3VsdCB7IE51bWJlciwgQmlnSW50LCBGYWlsdXJl
IH07CiAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzLCBMZXhlckVzY2FwZVBh
cnNlTW9kZSBlc2NhcGVQYXJzZU1vZGU+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQg
cGFyc2VDb21wbGV4RXNjYXBlKGJvb2wgc3RyaWN0TW9kZSwgVCBzdHJpbmdRdW90ZUNoYXJhY3Rl
cik7CiAgICAgQUxXQVlTX0lOTElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVRlbXBsYXRlTGl0
ZXJhbChKU1Rva2VuRGF0YSosIFJhd1N0cmluZ3NCdWlsZE1vZGUpOwotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgcGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKTsKKyAgICBBTFdBWVNfSU5M
SU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4gcGFyc2VIZXgoKTsKKyAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZp
ZXIqPj4gcGFyc2VCaW5hcnkoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VPY3RhbCgpOworICAgIEFMV0FZ
U19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
PiBwYXJzZURlY2ltYWwoKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VOdW1iZXJBZnRl
ckRlY2ltYWxQb2ludCgpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU51bWJlckFmdGVy
RXhwb25lbnRJbmRpY2F0b3IoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VNdWx0aWxp
bmVDb21tZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0NmFkZGQ3MzliZWNlYzhiZDE5YmYu
LmUzOWYzNDc4Nzg3ZjlmMDRlNDBmYTk4MTI2N2RkNzAyNThiMTgxYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC05Miw2ICs5Miwx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5lIEJpZ0ludE5v
ZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgdmFsdWUsIHVpbnQ4X3QgcmFkaXgpCisgICAgICAgIDogQ29uc3RhbnROb2RlKGxv
Y2F0aW9uLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5l
IFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyMmNkOGQxN2NlZjJiM2Ri
ZjcxNjhiMzJhOTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNkYzc0ZGIzMThlMjNiY2NlMjY3ZDhk
MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0ZXJh
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9Owog
CisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0Jp
Z0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNWYWx1ZSBq
c1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3JhZGl4Owor
ICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2FjMWJkNTQyNmM0YTExZjAyZGFhOGU5
OGQ1MzE1MC4uODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNmNTMxZWZmNjczMThkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVB
bmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3Ry
aW5nOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
KyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9j
YXRpb24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RS
SU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFm
ZDRhN2FmMmU5YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZjNS4uYzIwNThhZWViMGQzODhkODEx
OTMyY2ZjN2NhNTExNDA5NDMwODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAg
ICAgQkFDS1FVT1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAg
ICBJREVOVCwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCkBAIC0yMTgsNiArMjE5LDEwIEBA
IHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICAgICAgYm9vbCBlc2NhcGVkOwogICAgIH07CiAgICAg
c3RydWN0IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogYmlnSW50U3RyaW5nOworICAgICAg
ICB1aW50OF90IHJhZGl4OworICAgIH07CisgICAgc3RydWN0IHsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogY29va2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiByYXc7CiAgICAgICAg
IGJvb2wgaXNUYWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9S
ZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApp
bmRleCA0ZjY0NzFiNTRmZDVlODgxZGNkYzMyYmNmY2FmNDQ1ZmE1MmEyODQyLi5jNTI4YmIzYjI3
Y2YzNWI2MWY0ZDFmODgyZmE1MWU4MjI1OGExYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtMzEsMTUgKzMxLDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogCi0gICAg
ICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOworICAgICAgICB1c2luZyBUeXBlID0gdWludDhfdDsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZUludDMyID0gMTsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFR5cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwMjsKICAgICAgICAgc3RhdGljIGNvbnN0
IFR5cGUgVHlwZU1heWJlU3RyaW5nID0gMHgwNDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUg
VHlwZU1heWJlTnVsbCAgID0gMHgwODsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1h
eWJlQm9vbCAgID0gMHgxMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQmln
SW50ID0gMHgxNjsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0g
MHgyMDsKIAotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51
bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwg
VHlwZU1heWJlT3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVCaXRzID0gVHlw
ZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJlTnVsbCB8IFR5cGVNYXli
ZUJvb2wgfCBUeXBlTWF5YmVCaWdJbnQgfCBUeXBlTWF5YmVPdGhlcjsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0gNjsKQEAgLTcwLDYgKzcx
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBl
Qml0cykgPT0gVHlwZU1heWJlQm9vbDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgZGVmaW5p
dGVseUlzQmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2Jp
dHMgJiBUeXBlQml0cykgPT0gVHlwZU1heWJlQmlnSW50OworICAgICAgICB9CisKICAgICAgICAg
Ym9vbCBtaWdodEJlTnVtYmVyKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIFR5cGVNYXliZU51bWJlcjsKQEAgLTgwLDYgKzg2LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuICFtaWdodEJlTnVtYmVyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCisgICAgICAgIGJvb2wgbWlnaHRCZUJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKwor
ICAgICAgICBib29sIGlzTm90QmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuICFtaWdodEJlQmlnSW50KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBSZXN1bHRUeXBlIG51bGxUeXBlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IFJlc3VsdFR5cGUoVHlwZU1heWJlTnVsbCk7CkBAIC0xMTAsNiArMTI2LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlU3RyaW5nKTsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgYmlnSW50VHlw
ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZUJp
Z0ludCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIHVu
a25vd25UeXBlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlw
ZUJpdHMpOwpAQCAtMTIxLDYgKzE0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJ
c1N0cmluZygpIHx8IG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJ
bnQoKSB8fCBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG9wMS5kZWZpbml0ZWx5SXNCaWdJbnQoKSAmJiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkgPyBi
aWdJbnRUeXBlKCkgOiB1bmtub3duVHlwZSgpOwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ09y
TnVtYmVyVHlwZSgpOwogICAgICAgICB9CiAKQEAgLTEzNCw2ICsxNTcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyVHlwZSgpOwogICAgICAgICAgICAg
aWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSAmJiBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGUoKTsKKyAgICAgICAgICAgIGlmIChv
cDEuZGVmaW5pdGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBiaWdJbnRUeXBlKCk7CiAgICAgICAgICAgICByZXR1cm4gdW5r
bm93blR5cGUoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCmluZGV4IDhkYjM1Yzc3OTZmNGQzNmZhNTQ1MjU5MTYwZGM1ODllYjg0
OWQ5NTYuLjUzOWM0NzM0MGViNmE2NDVmZTdjYWY0NDFjM2YwMGRiNWIzY2Y2MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0
eUJpdCA9IDB4ODAwMDAwMDA7CiAgICAgZW51bSA6IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAg
ICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIs
IFN0cmluZ0V4cHIsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVn
ZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlz
RXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwK
ICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwg
QnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHBy
LCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1
YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdWJsZUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7
IHJldHVybiBEb3VibGVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBCaWdJbnRFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JikgeyByZXR1cm4gTnVsbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE5M2M5MWUwN2I1Y2E5OGFkN2JjMzBmNDU5
Y2MyNTFiZGU1NWY5OGYuLmQ2NDc2NmEzMDRmNzU3MmZkMzJjZDA1NGUxMTcyMzkyMjM4NzQxMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtMzAsNiArMzAsNyBAQAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBcCiAgICAgbWFj
cm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVNRU5UKSBcCisgICAg
bWFjcm8oQmlnSW50KSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAogICAgIG1hY3JvKENvbGxhdG9y
KSBcCiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMDZmMjQxZmUzODk1NTk0NzQ1ZjJhMWVjN2Rm
ZDAwYTg0ZWE2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKQEAgLTAsMCArMSw2MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFBhcnRzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxv
dzoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNyB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE0IHRoZSBEYXJ0IHByb2plY3QgYXV0
aG9ycy4gIFBsZWFzZSBzZWUgdGhlIEFVVEhPUlMgZmlsZSBbMV0KKyAqIGZvciBkZXRhaWxzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhCisgKiBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIFsyXS4KKyAqCisgKiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsv
YmxvYi9tYXN0ZXIvQVVUSE9SUworICogWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcv
c2RrL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgR28gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCisgKiBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgWzNdLgorICoKKyAqIFszXSBodHRwczovL2dvbGFuZy5vcmcvTElD
RU5TRQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgor
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmVjdG9yLmg+CisKKyNk
ZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBh
c3N1bWVzICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNC
aWdJbnQ6OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OworCit2b2lkIEpTQmlnSW50Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5t
X2RhdGEpCisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2JqZWN0LT5tX2RhdGEu
Z2V0KCkpOworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX2xlbmd0aChjcmVhdGVXaXRoTGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6Omlu
aXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBBU1NFUlQobV9kYXRhKTsKKwor
ICAgIHNldFNpZ24oZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlhbGl6ZSkgeworICAgICAgICB2
b2lkKiBkYXRhID0gbV9kYXRhLmdldCgpOworICAgICAgICBtZW1zZXQocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZGF0YSksIDAsIGxlbmd0aCgpICogRGlnaXRTaXplKTsKKyAgICB9Cit9CisKK1N0
cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEpTQmlnSW50KiB6ZXJv
QmlnSW50ID0gY3JlYXRlKGV4ZWMsIHZtLCAwKTsKKyAgICB6ZXJvQmlnSW50LT5zZXRTaWduKGZh
bHNlKTsKKyAgICByZXR1cm4gemVyb0JpZ0ludDsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50Ojpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBjcmVhdGVXaXRoTGVuZ3RoKQorewor
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JpZ0lu
dD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGNyZWF0
ZVdpdGhMZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOworICAg
IHJldHVybiBiaWdJbnQ7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAKKyAgICBpZiAobV9sZW5ndGgpIHsKKyAgICAgICAgdm9pZCogYmFja2luZ1N0b3JlID0gdm0u
Z2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5QWxsb2NhdGUoc2l6ZUZvciht
X2xlbmd0aCkpOworICAgICAgICBEaWdpdCogZGF0YSA9IHN0YXRpY19jYXN0PERpZ2l0Kj4oYmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICB9Cit9CisKK0pT
VmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsK
K30KKworc3RkOjpvcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6dG9TdHJpbmdPbmVEaWdpdCgp
Cit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAo
bGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7CisgICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0
KDApOworICAgICAgICBpZiAockRpZ2l0IDw9IDkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKworSlNC
aWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RyaW5n
VmlldyBzLCB1aW50OF90IHJhZGl4KQoreworICAgIGlmIChzLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgMCwg
cmFkaXgsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFjdGVy
czE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7Cit9CisKK1N0cmluZyBKU0JpZ0lu
dDo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQgcmFkaXgpCit7CisgICAgaWYgKHRoaXMt
PmlzWmVybygpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3Muc2luZ2xl
Q2hhcmFjdGVyU3RyaW5nUmVwKCcwJyk7CisKKyAgICByZXR1cm4gdG9TdHJpbmdHZW5lcmljKGV4
ZWMsIHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJvKCkKK3sKKyAgICBB
U1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7Cit9
CisKKy8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9
IHRvIHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQodWludHB0
cl90IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FTU0VSVChzaXpl
b2YoZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihz
dW1tYW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlwbHlBZGQodGhp
cywgZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNpZiBVU0UoSlNWQUxV
RTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVpbnQ2NF90IFR3b0Rp
Z2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMQordHlw
ZWRlZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lU
IDAKKyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGln
aXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBhbG9u
ZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwg
RGlnaXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGlnaXQgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOwor
ICAgIGNhcnJ5ICs9IHJlc3VsdCA+PiBEaWdpdEJpdHM7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgKyBiOworCisg
ICAgaWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGluaXRp
YWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9y
IGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0U3ViKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElHSVQKKyAgICBUd29E
aWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0aWNfY2FzdDxUd29E
aWdpdD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRzKSAmIDE7CisgICAg
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdp
dCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgYm9ycm93ICs9
IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2VuZGlm
Cit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQuIEhpZ2ggaGFsZiBp
cyBpbiB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0TXVsKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGln
aXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nhc3Q8VHdvRGln
aXQ+KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0aXBseSBpbiBoYWxm
LXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FIIEFMXSpbQkggQkxd
LCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBbQUwqQkxdICAvLyBy
TG93CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAgIC8vICAgICsgICAg
W0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAgICAgIC8vIHJIaWdo
CisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIzXSwgbG93ID0gW1Iy
IFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3QgYmUgY2FyZWZ1bCB3
aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBhTG93ID0gYSAmIEhh
bGZEaWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IEhhbGZEaWdpdEJpdHM7CisgICAg
RGlnaXQgYkxvdyA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdoID0gYiA+PiBI
YWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICogYkxvdzsKKyAgICBE
aWdpdCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9IGFIaWdoICogYkxv
dzsKKyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisgICAgRGlnaXQgY2Fy
cnkgPSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8IEhhbGZEaWdp
dEJpdHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQyIDw8IEhhbGZEaWdp
dEJpdHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gSGFsZkRpZ2l0Qml0cykgKyAo
ck1pZDIgPj4gSGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisgICAgcmV0dXJuIGxv
dzsKKyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBvZiB7ZXhwb25l
bnR9LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJ
bnQ6OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQoreworICAgIERpZ2l0IHJl
c3VsdCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAgICAgICBpZiAoZXhw
b25lbnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAgICAgZXhwb25l
bnQgPj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50ID0gKGhpZ2gg
PDwgRGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmlnSW50OjpEaWdp
dCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29y
LCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNvcik7CisjaWYg
Q1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3RpZW50
OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3JdIgorICAgICAg
ICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBpbiByZHguCisg
ICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6IHB1
dCB7aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9IGludG8KKyAg
ICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhpZ2gp
LCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJlbWFpbmRlciA9IHJl
bTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBDT01QSUxFUihHQ0Nf
T1JfQ0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9fYXNt
X18oImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0gd2ls
bCBiZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwgIj1k
IihyZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVkeCwge2xvd30gaW50
byBlYXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Igc3Rh
Y2sgc2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJtIihk
aXZpc29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNl
bHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVsbCA8PCBIYWxm
RGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQs
IHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQoZGl2aXNvcik7
CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAgICBkaXZpc29y
IDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFsZkRpZ2l0Qml0czsK
KyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKworICAgIC8vIHtzfSBj
YW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdlICImIiBpdCB3
aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBhbmQgYWxsIDEt
Yml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRyX3QpID09IHNp
emVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7CisgICAgRGlnaXQg
dW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMpKSAmIHNaZXJvTWFz
ayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9IHVuMTAgPj4g
SGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRpZ2l0TWFzazsKKyAg
ICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIgLSBxMSAqIHZu
MTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZuMCA+IHJoYXQg
KiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAgICByaGF0ICs9
IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGlnaXRCYXNlICsg
dW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0
ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGlnaXRCYXNlIHx8
IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAgICAgIHEwLS07
CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFz
ZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRlciA9ICh1bjIxICog
a0hhbGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAgcmV0dXJuIHEx
ICoga0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBsaWVzIHtzb3Vy
Y2V9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCisvLyB7
cmVzdWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3IgaW5wbGFjZSBt
b2RpZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50
KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpTQmlnSW50KiBy
ZXN1bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7CisgICAgQVNTRVJU
KHJlc3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1bW1hbmQ7Cisg
ICAgRGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAg
ICAgICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAgIERpZ2l0IG5l
d0NhcnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBtdWx0aXBsaWNh
dGlvbi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJlbnQgPSBkaWdp
dE11bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8vIEFkZCBsYXN0IHJv
dW5kJ3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGhp
Z2gsIG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNhcnJ5
LCBuZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVwYXJlIGZvciBu
ZXh0IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQpOworICAgICAg
ICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAgICB9CisKKyAg
ICBpZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChu
KyssIGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJzIGRvbid0IHBh
c3MgaW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0LgorICAgICAgICB3
aGlsZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERpZ2l0
KG4rKywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoY2FycnkgKyBo
aWdoKSk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVuZ3RoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7
IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQoaSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERp
dmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQgaW4ge3F1b3RpZW50
fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNvbnRyYWN0IGlzOgor
Ly8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRoIDAgPD0gcmVtYWlu
ZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkgaGFuZGxlLCBhbiBh
cHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0ZWQgZm9yIGl0OyBv
dGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2guCisv
LyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlz
aW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRoZSBjYWxsZXIgaXMg
b25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmlnSW50OjphYnNvbHV0
ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpT
QmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAgQVNTRVJUKGRpdmlz
b3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQoIXgtPmlzWmVybygp
KTsKKyAgICByZW1haW5kZXIgPSAwOworICAgIGlmIChkaXZpc29yID09IDEpIHsKKyAgICAgICAg
aWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCisgICAgICAgICAgICAqcXVvdGllbnQgPSB4OworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGxlbmd0aCA9IHgtPmxlbmd0aCgpOworICAg
IGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CisgICAgICAgIGlmICgqcXVvdGllbnQgPT0gbnVs
bHB0cikgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZShleGVjLCB2bSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0p
IHsKKyAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkp
LCBkaXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0
KGksIHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxl
bmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYocmVtYWluZGVyLCB4
LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0
YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3Rl
ciBvZiBhCisvLyBiYXNlLU4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBp
bmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFycmF5CisvLyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVl
IG11bHRpcGxpZWQgYnkgMzIuIFRvIGdlbmVyYXRlIHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBp
ID0gMDsgaSA8PSAzNjsgaSsrKSB7IHByaW50KE1hdGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikg
KyAiLCIpOyB9Citjb25zdGV4cHIgdWludDhfdCBNYXhCaXRzUGVyQ2hhcltdID0geworICAgIDAs
ICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwgIDgzLCAgOTAsICA5NiwgLy8gMC4uOAorICAgIDEw
MiwgMTA3LCAxMTEsIDExNSwgMTE5LCAxMjIsIDEyNiwgMTI4LCAgICAgLy8gOS4uMTYKKyAgICAx
MzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAgIC8vIDE3Li4yNAorICAg
IDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2LCAxNTgsIDE1OSwgMTYwLCAgICAgLy8gMjUuLjMyCisg
ICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMy4uMzYK
K307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJsZVNoaWZ0ID0gNTsKK3N0YXRp
YyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgPSAxdSA8PCBCaXRzUGVy
Q2hhclRhYmxlU2hpZnQ7CisKKy8vIENvbXB1dGUgKGFuIG92ZXJhcHByb3hpbWF0aW9uIG9mKSB0
aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nOgorLy8gRGl2aWRlIGJpdCBsZW5ndGgg
b2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KK3VpbnQ2
NF90IEpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5n
dGgsIGludCByYWRpeCwgRGlnaXQgbGFzdERpZ2l0LCBib29sIHNpZ24pCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpbnQgbGVhZGluZ1plcm9zID0gY2x6NjQobGFzdERpZ2l0KTsKKyNlbHNl
CisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNsejMyKGxhc3REaWdpdCk7CisjZW5kaWYKKyAgICBz
aXplX3QgYml0TGVuZ3RoID0gbGVuZ3RoICogRGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisg
ICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNo
YXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNo
dW5rIHNpemUgYmVsb3cuCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJD
aGFyW3JhZGl4XTsKKworICAgIC8vIEZvciBlc3RpbWF0aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhh
dmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5kIHdvcmsgd2l0aAorICAgIC8vIHRoZSBtaW5pbXVtIG51
bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4KKyAgICB1aW50OF90IG1p
bkJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUg
Zm9sbG93aW5nIGNvbXB1dGF0aW9uIHdpdGggdWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgor
ICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgPSBiaXRMZW5ndGg7CisgICAg
bWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCAqPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllcjsK
KworICAgIC8vIFJvdW5kIHVwLgorICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgKz0gbWlu
Qml0c1BlckNoYXIgLSAxOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgLz0gbWluQml0
c1BlckNoYXI7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCArPSBzaWduOworICAgIAor
ICAgIHJldHVybiBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkOworfQorCitzdGF0aWMgY29uc3Qg
Y2hhciBDb252ZXJzaW9uQ2hhcnNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXoiOworCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4
ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgpCit7CisgICAgU3RyaW5nVmVjdG9yPExDaGFyPiBy
ZXN1bHRTdHJpbmc7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7Cisg
ICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7
CisgICAgYm9vbCBzaWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hh
ciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICB1aW50NjRfdCBtYXhpbXVtQ2hhcmFjdGVy
c1JlcXVpcmVkID0gY2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChsZW5ndGgsIHJh
ZGl4LCB4LT5kaWdpdChsZW5ndGggLSAxKSwgc2lnbik7CisKKyAgICBpZiAobWF4aW11bUNoYXJh
Y3RlcnNSZXF1aXJlZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9w
dChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworICAgIH0KKworICAgIERpZ2l0IGxhc3REaWdpdDsK
KyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRpZ2l0KDApOwor
ICAgIGVsc2UgeworICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAqIEJpdHNQZXJD
aGFyVGFibGVNdWx0aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERpZ2l0IGNodW5r
RGl2aXNvciA9IGRpZ2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAgICAvLyBCeSBj
b25zdHJ1Y3Rpb24gb2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVuIG92ZXJmbG93
LgorICAgICAgICBBU1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5vblplcm9EaWdp
dCA9IGxlbmd0aCAtIDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJvRGlnaXQpKTsK
KworICAgICAgICAvLyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0ludCB0aGF0IHdl
IGhhdmVuJ3QgbG9va2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNvbmZ1c2VkIHdp
dGggInJlbWFpbmRlciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0cjsKKworICAg
ICAgICAvLyBJbiB0aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFsbG9jYXRpbmcg
YSBuZXcgQmlnSW50IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7IGZyb20gdGhl
biBvbiBkaXZpZGUgdGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50KiogZGl2aWRl
bmQgPSAmeDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7CisgICAgICAg
ICAgICBhYnNvbHV0ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVz
dCwgY2h1bmspOworICAgICAgICAgICAgQVNTRVJUKHJlc3QpOworCisgICAgICAgICAgICBkaXZp
ZGVuZCA9ICZyZXN0OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaHVua0NoYXJz
OyBpKyspIHsKKyAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKENvbnZlcnNpb25D
aGFyc1tjaHVuayAlIHJhZGl4XSk7CisgICAgICAgICAgICAgICAgY2h1bmsgLz0gcmFkaXg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAgICAgICAg
aWYgKCFyZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5vblplcm9E
aWdpdC0tOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0aGFuIG9u
ZSBkaWdpdCBwZXIgaXRlcmF0aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVua0Rpdmlz
b3IgaXMgc21hbGxlciB0aGFuIG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFTU0VSVChy
ZXN0LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVyb0RpZ2l0
ID4gMCk7CisKKyAgICAgICAgbGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAgfQorCisg
ICAgZG8geworICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKENvbnZlcnNpb25DaGFyc1tsYXN0
RGlnaXQgJSByYWRpeF0pOworICAgICAgICBsYXN0RGlnaXQgLz0gcmFkaXg7CisgICAgfSB3aGls
ZSAobGFzdERpZ2l0ID4gMCk7CisgICAgQVNTRVJUKHJlc3VsdFN0cmluZy5zaXplKCkpOworICAg
IEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11
bUNoYXJhY3RlcnNSZXF1aXJlZCkpOworCisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgor
ICAgIGludCBuZXdTaXplTm9MZWFkaW5nWmVyb2VzID0gcmVzdWx0U3RyaW5nLnNpemUoKTsKKyAg
ICB3aGlsZSAobmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAgPiAxICYmIHJlc3VsdFN0cmluZ1tuZXdT
aXplTm9MZWFkaW5nWmVyb2VzIC0gMV0gPT0gJzAnKQorICAgICAgICBuZXdTaXplTm9MZWFkaW5n
WmVyb2VzLS07CisKKyAgICByZXN1bHRTdHJpbmcuc2hyaW5rKG5ld1NpemVOb0xlYWRpbmdaZXJv
ZXMpOworCisgICAgaWYgKHNpZ24pCisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoJy0nKTsK
KworICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRTdHJpbmcuYmVnaW4oKSwgcmVzdWx0U3RyaW5nLmVu
ZCgpKTsKKworICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmlu
ZykpOworfQorCit2b2lkIEpTQmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlmIChp
c1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRleCA9IG1fbGVu
Z3RoIC0gMTsKKyAgICB3aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIWRpZ2l0KG5vblplcm9J
bmRleCkpCisgICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYgKG5vblplcm9JbmRleCA9
PSBtX2xlbmd0aCAtIDEpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBuZXdMZW5ndGggPSBu
b25aZXJvSW5kZXggKyAxOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UobV9kYXRhLmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobmV3TGVuZ3RoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYmFja2luZ1N0b3JlKTsKKyAgICBEaWdpdCogZGF0YSA9IHN0
YXRpY19jYXN0PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG5ld0xlbmd0aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gZGlnaXQoaSk7CisKKyAgICBtX2Rh
dGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsKK30KKwor
SlNCaWdJbnQqIEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
aW50IHJhZGl4LCBpbnQgY2hhcmNvdW50KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJh
ZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoY2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0g
TWF4Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHNpemVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNp
emVfdD4oY2hhcmNvdW50KTsKKyAgICBjb25zdCBpbnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFi
bGVNdWx0aXBsaWVyIC0gMTsKKyAgICBpZiAoY2hhcnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkgLSByb3VuZHVwKSAvIGJpdHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVf
dCBiaXRzTWluID0gYml0c1BlckNoYXIgKiBjaGFyczsKKworICAgICAgICAvLyBEaXZpZGUgYnkg
MzIgKHNlZSB0YWJsZSksIHJvdW5kaW5nIHVwLgorICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4g
KyByb3VuZHVwKSA+PiBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWlu
IDw9IHN0YXRpY19jYXN0PHNpemVfdD4oTWF4SW50KSkgeworICAgICAgICAgICAgLy8gRGl2aWRl
IGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAo
c3RhdGljX2Nhc3Q8aW50PihiaXRzTWluKSArIERpZ2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOwor
ICAgICAgICAgICAgaWYgKGxlbmd0aCA8PSBNYXhMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZShleGVjLCB2bSwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGV4ZWMpCisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6ZXN0aW1h
dGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBzaXplX3QgYnVmZmVyRXN0aW1hdGVkU2l6ZSA9IHRo
aXNPYmplY3QtPm1fbGVuZ3RoICogRGlnaXRTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0
ZWRTaXplKGNlbGwpICsgYnVmZmVyRXN0aW1hdGVkU2l6ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YjcwY2MxZjVmODY3YWQwMDViZmI5ZmE0MTlkYmM1MDc0Y2M5OTQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDIw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEpTQmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdXNpbmcg
QmFzZSA9IEpTQ2VsbDsKKworICAgIGZyaWVuZCBjbGFzcyBCaWdJbnRJbXBsOworCitwdWJsaWM6
CisgICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgY3JlYXRlV2l0aExlbmd0aCk7CisK
KyAgICB2b2lkIGluaXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSk7CisKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMg
c2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsK
KworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhFeGVjU3RhdGUqLCBWTSYpOworCisg
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBpbnQgY3JlYXRlV2l0
aExlbmd0aCk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBWTSYpOworCisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVj
U3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2ln
bihib29sIHNpZ24pIHsgbV9zaWduID0gc2lnbjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2lnbjsgfQorCisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xl
bmd0aCA9IGxlbmd0aDsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQorCisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiB0b1N0cmluZ09uZURpZ2l0KCk7CisK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmll
dywgdWludDhfdCByYWRpeCk7CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSos
IGludCByYWRpeCk7CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1
YWxUb0JpZ0ludChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworCitwcml2YXRlOgorICAgIHVz
aW5nIERpZ2l0ID0gdWludHB0cl90OworICAgIHN0YXRpYyBjb25zdCBpbnQgQml0c1BlckJ5dGUg
PSA4OworICAgIHN0YXRpYyBjb25zdCBpbnQgRGlnaXRTaXplID0gc2l6ZW9mKERpZ2l0KTsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IERpZ2l0Qml0cyA9IERpZ2l0U2l6ZSAqIEJpdHNQZXJCeXRlOwor
ICAgIHN0YXRpYyBjb25zdCBpbnQgSGFsZkRpZ2l0Qml0cyA9IERpZ2l0Qml0cyAvIDI7CisgICAg
c3RhdGljIGNvbnN0IERpZ2l0IEhhbGZEaWdpdE1hc2sgPSAoMXVsbCA8PCBIYWxmRGlnaXRCaXRz
KSAtIDE7CisgICAgc3RhdGljIGNvbnN0IGludCBNYXhJbnQgPSAweDdGRkZGRkZGOworICAgIAor
ICAgIC8vIFRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IHN1cHBvcnRzIHdvdWxkIGJlCisgICAgLy8gTWF4SW50IC8gRGlnaXRCaXRzLiBIb3dldmVyLCB3
ZSB1c2UgYSBsb3dlciBsaW1pdCBmb3Igbm93LCBiZWNhdXNlCisgICAgLy8gcmFpc2luZyBpdCBs
YXRlciBpcyBlYXNpZXIgdGhhbiBsb3dlcmluZyBpdC4KKyAgICAvLyBTdXBwb3J0IHVwIHRvIDEg
bWlsbGlvbiBiaXRzLgorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TGVuZ3RoID0gMTAyNCAqIDEw
MjQgLyAoc2l6ZW9mKHZvaWQqKSAqIEJpdHNQZXJCeXRlKTsKKyAgICAKKyAgICBzdGF0aWMgdWlu
dDY0X3QgY2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChpbnQgbGVuZ3RoLCBpbnQg
cmFkaXgsIERpZ2l0IGxhc3REaWdpdCwgYm9vbCBzaWduKTsKKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCBhYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29y
LCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9p
ZCBpbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGln
aXQgc3VtbWFuZCwgaW50LCBKU0JpZ0ludCogcmVzdWx0KTsKKworICAgIC8vIERpZ2l0IGFyaXRo
bWV0aWMgaGVscGVycy4KKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQg
YiwgRGlnaXQmIGNhcnJ5KTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRTdWIoRGlnaXQgYSwgRGln
aXQgYiwgRGlnaXQmIGJvcnJvdyk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0TXVsKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0JiBoaWdoKTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXREaXYoRGlnaXQg
aGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLCBEaWdpdCYgcmVtYWluZGVyKTsKKyAgICBz
dGF0aWMgRGlnaXQgZGlnaXRQb3coRGlnaXQgYmFzZSwgRGlnaXQgZXhwb25lbnQpOworCisgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiwgSlNCaWdJbnQqLCBpbnQg
cmFkaXgpOworCisgICAgYm9vbCBpc1plcm8oKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCBy
YWRpeCwgYm9vbCBhbGxvd0VtcHR5U3RyaW5nID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChsZW5ndGggPj0gMCk7CisgICAgICAgIGludCBwID0gc3RhcnRJbmRleDsKKworICAgICAgICBp
ZiAoIWFsbG93RW1wdHlTdHJpbmcgJiYgc3RhcnRJbmRleCA9PSBsZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCisg
ICAgICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGRhdGFbcF0gPT0gJzAnKQorICAgICAgICAgICAg
KytwOworCisgICAgICAgIGludCBlbmRJbmRleCA9IGxlbmd0aCAtIDE7CisgICAgICAgIC8vIFJl
bW92aW5nIHRyYWlsaW5nIHNwYWNlcworICAgICAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBp
c1N0cldoaXRlU3BhY2UoZGF0YVtlbmRJbmRleF0pKQorICAgICAgICAgICAgLS1lbmRJbmRleDsK
KworICAgICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CisKKyAgICAgICAgaWYgKHAgPT0gbGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAg
IGludCBsaW1pdDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgICAgICBp
bnQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOworICAgICAgICBpbnQgbGltaXRBID0gJ0En
ICsgKHJhZGl4IC0gMTApOworCisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZv
cihleGVjLCB2bSwgcmFkaXgsIGxlbmd0aCAtIHApOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJlc3VsdC0+aW5pdGlhbGl6ZSh0
cnVlKTsKKworICAgICAgICBmb3IgKGludCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsK
KyAgICAgICAgICAgIHVpbnQzMl90IGRpZ2l0OworICAgICAgICAgICAgaWYgKGRhdGFbaV0gPj0g
JzAnICYmIGRhdGFbaV0gPCBsaW1pdDApCisgICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ld
IC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8
IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnYScgKyAxMDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCisg
ICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHJlc3VsdC0+aW5wbGFj
ZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocmFkaXgpLCBzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KGRpZ2l0KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocCA9PSBsZW5ndGgp
IHsKKyAgICAgICAgICAgIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZNJiwgaW50IHJh
ZGl4LCBpbnQgY2hhcmNvdW50KTsKKworICAgIHZvaWQgcmlnaHRUcmltKFZNJik7CisKKyAgICB2
b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKwor
ICAgIERpZ2l0IGRpZ2l0KGludCBuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPj0gMCAmJiBu
IDwgbGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgRGlnaXQqIGRh
dGFQdHIgPSBtX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiBkYXRhUHRyW25dOworICAgIH0K
KworICAgIHZvaWQgc2V0RGlnaXQoaW50IG4sIERpZ2l0IHZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhKTsK
KyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0gbV9kYXRhLmdldCgpOworICAgICAgICBkaWdpdFB0
cltuXSA9IHZhbHVlOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNpemVGb3IoaW50IGxl
bmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBsZW5ndGggKiBEaWdpdFNpemU7CisgICAgfQor
CisgICAgYm9vbCBtX3NpZ247CisgICAgaW50IG1fbGVuZ3RoOworICAgIENhZ2VkQmFycmllclB0
cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOworfTsKKworaW5saW5lIEpTQmln
SW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwo
KS0+aXNCaWdJbnQoKSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2Vs
bCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGQwMzA0NTIyMGQ1ZTk1MjY3ZWQ5ZjhmN2I5ZDMz
NjVhODMxNzlkZDMuLjc2NDE1ZjM0NDAzNzY5ZGFmYjljNjM0YTc0MTc3MmViYmNlY2QwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCkBAIC02OCwxMSArNjksMTcgQEAgZG91YmxlIEpTVmFsdWU6OnRv
TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVy
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VS
VCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAg
IHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGlzVHJ1ZSgpKQogICAg
ICAgICByZXR1cm4gMS4wOworICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnZlcnRpb24gZnJvbSAnQmlnSW50
JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgICAgIHJldHVybiBQTmFOOwor
ICAgIH0KICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBm
YWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0KIApAQCAtMzc2LDYgKzM4MywxMyBAQCBKU1N0cmlu
ZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJu
RW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAg
ICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50KCkpIHsKKyAg
ICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50OF90PiBkaWdpdCA9IGJpZ0ludC0+dG9TdHJpbmdPbmVEaWdpdCgpOworICAg
ICAgICBpZiAoZGlnaXQpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmds
ZUNoYXJhY3RlclN0cmluZygqZGlnaXQgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKCZ2bSwgYmlnSW50LT50b1N0cmluZyhleGVjLCAxMCkpOworICAgIH0KIAogICAg
IEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1p
dGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCmluZGV4IGMyNGVhNWJiZjM1NDdiNGZmZDQ1ZGVlYmE2ZGU0MWYyNjE5NmUz
OGUuLjlmMzlhM2M3ZGUwNzdkMjNkZTAyZGIxOTJhYTQzZDIwZTIwMjdkNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FueUludCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1iZXIoKSBj
b25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNv
bnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggYTI3ZjZhMTEx
YmJkNWJjZWViYTIzY2ZjZjI4M2ZmZDVmYTEwNGM3Ny4uMDFlYTJkYjgxYzlkZmRmY2VjZTQxNTUx
ZWMwZmUzOWU1ZGVhYTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
QEAgLTU3OCw2ICs1NzksMTEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25z
dAogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKIH0KIAoraW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwo
KSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNT
eW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1i
b2woKTsKQEAgLTcxOSw2ICs3MjUsNyBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0
b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7
CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpOworCiAgICAg
cmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZXhlYyk7CiB9CiAKQEAgLTEwMjAsNiArMTAyNyw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5n
KCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2
MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYg
djIuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KGFz
QmlnSW50KHYxLmFzQ2VsbCgpKSwgYXNCaWdJbnQodjIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4g
djEgPT0gdjI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmlu
ZGV4IDE0MzQ2ZThhYzBlZTdmYmMxYmMzNTc5ZWU2M2Y1Y2IxNmE5NjA4MzcuLjc5NGJjNzdlMjAy
MWYwMzM1NGFhNjYxNDIzM2NkZDU5NWRjYTBiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcApAQCAtMTU1LDYgKzE1NSw4IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1By
aW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVk
VHlwCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50
b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2
ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKKyAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMs
IHByZWZlcnJlZFR5cGUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+
KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKIH0KIApAQCAtMTgxLDYg
KzE4Myw4IEBAIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0U2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvCiAgICAgQVNTRVJUKCFpc09iamVjdCgp
KTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgaWYg
KGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+
KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJv
bCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCmluZGV4IDlmYzBjOWIwOTQwMTY0MGZiMTVkNTI1MWE0MTdlYjg0ODYwZDZjY2QuLjcx
Zjk5ZDk3Y2Y1Y2QyOTFjY2U1YzM1NGNhOWFjNjJiOTQ5NzViMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHJvdGVjdGVkOgogcHVi
bGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25z
dDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0
OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
aW5kZXggNTcwZjA5NGJhZDRiMDdhMTFhZWUyMDYwN2RlMGE3NjgxZjdmZGMzZS4uOTgzNmIzNDcw
NWUwYTc1NjAwNDc5NjMxODllYmRmYTgzNzc3NjU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjAxLDYgKzIwMSwxMSBAQCBpbmxpbmUg
Ym9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmlu
Z1R5cGU7CiB9CiAKK2lubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKK30KKwogaW5saW5lIGJvb2wgSlNDZWxsOjpp
c1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTeW1ib2xUeXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGYxODI1ZTllNjJiZTUyMmRiMWVlYWE0MmE2NmViZWI4OGRiOTk4OGEuLjI4YTkyODA0MGQ2ZmNj
MjNlNzkzMThhYTczMjBlYzVlNTk0M2YxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCBjYXBpdGFs
TmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0bwogbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsgXAogCiAgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShD
UkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKQotICAgIAorCiAjdW5kZWYgQ1JFQVRF
X0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRQogCiAgICAgbV9lcnJvckNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgZXJyb3JDb25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCmluZGV4IDg1MzU2ZDM5NzdhZWQ1YzczYjg5YWZmMDVjOTdjMjQyZjk1YmI0ZWEu
LjU3N2QxOGUwMjVjMTFhOTkyY2UxNmM4NTBjYjIyMThlMjFjNmMwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0zMyw2ICszMyw3IEBAIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAgICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKICAgICBTeW1ib2xUeXBl
LAorICAgIEJpZ0ludFR5cGUsCiAKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlLAogICAgIEFQ
SVZhbHVlV3JhcHBlclR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmgKaW5kZXggZThmMzE2Y2Y0MmI4ZTkyODlmY2EwODliNDgzMTIxNWI3YTMwMjAzMy4uMGZk
YzdjMzU2NWNlOGFiMWRkZWM1MWRlZmQ0Y2YzODUyYzM5OTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtNjYsNiArNjYsMjUgQEAgaW5saW5lIGlu
dCBjbHozMih1aW50MzJfdCBudW1iZXIpCiAjZW5kaWYKIH0KIAoraW5saW5lIGludCBjbHo2NCh1
aW50NjRfdCBudW1iZXIpCit7CisjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIGludCB6
ZXJvQ291bnQgPSA2NDsKKyAgICBpZiAobnVtYmVyKQorICAgICAgICB6ZXJvQ291bnQgPSBfX2J1
aWx0aW5fY2x6bGwobnVtYmVyKTsKKyAgICByZXR1cm4gemVyb0NvdW50OworI2Vsc2UKKyAgICBp
bnQgemVyb0NvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gNjM7IGkgPj0gMDsgaS0tKSB7Cisg
ICAgICAgIGlmICghKG51bWJlciA+PiBpKSkKKyAgICAgICAgICAgIHplcm9Db3VudCsrOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHplcm9Db3Vu
dDsKKyNlbmRpZgorfQorCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZp
bmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRo
aXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVy
cHJldGF0aW9uCiAvLyBvZiB0aGUgcmVzdWx0aW5nIGJpdC1wYXR0ZXJuIChhcyBzdWNoIHRoaXMg
bWV0aG9kIGlzIGFsc28gY2FsbGVkIHRvIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA2ZDEwNTU4MjcwOGEyNGEzYWQ0YTRhNTAw
ZDM5NDEzZDliOThkYzIwLi45N2NmYTA3YTk2OTQwMjIyNTZjOWMzOGE2NmM3NjQzMzUxN2NkNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAt
ODIsNiArODIsOCBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLnN0cmluZ1N0cmluZygpOwogICAgIGlmICh2LmlzU3ltYm9sKCkpCiAgICAgICAg
IHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3ltYm9sU3RyaW5nKCk7CisgICAgaWYgKHYuaXNCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5iaWdpbnRTdHJpbmcoKTsKICAg
ICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dCh2KTsKICAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hv
dWxkIGJlIHRyZWF0ZWQKQEAgLTExMiw3ICsxMTQsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JO
dWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2Lmlz
TnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYg
KHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUpCisgICAgaWYgKHR5cGUg
PT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewog
ICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDc4ZTc3YWQxODY0YzhmYTAwNzM4N2MzZjUwYzkz
OTIxMjVmNzE0OTMuLmZiYTMyN2YwZDVkMmQ2MDA2MmFiMzU0ZGZmOWU5ZGRlMWM0YjgxNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTQ3OCw2ICs0NzgsNyBA
QCBjb25zdGV4cHIgYm9vbCBlbmFibGVBc3luY0l0ZXJhdGlvbiA9IGZhbHNlOwogICAgIHYoYm9v
bCwgdXNlRmFzdFRMU0Zvcldhc21Db250ZXh0LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3
aWxsIHN0b3JlIGNvbnRleHQgaW4gZmFzdCBUTFMuIElmIGZhbHNlLCB3ZSB3aWxsIHBpbiBpdCB0
byBhIHJlZ2lzdGVyLiIpIFwKICAgICB2KGJvb2wsIHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRv
SlNDYWxscywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZv
IHRvIGlubGluZSBjYWNoZSBXYXNtIHRvIEpTIGNhbGxzLiIpIFwKICAgICB2KGJvb2wsIHVzZU9i
amVjdFJlc3RTcHJlYWQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIE9i
amVjdCBSZXN0L1NwcmVhZCBmZWF0dXJlLiIpIFwKKyAgICB2KGJvb2wsIHVzZUJpZ0ludCwgZmFs
c2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwK
ICAgICB2KGJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGlu
Zy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8g
YmUgdW5kZWNpZGVkLiIpXAogICAgIHYoYm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3Jt
YWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdp
dGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3RvdHlwZUtleS5oCmluZGV4IDEyZjQ1M2U3NjAxYjJmYWE2N2I5ZWZiZWE0MDAx
ZGYwMGM5ZjE1ZDcuLjRlZDExZjhmZWQyYzhjNGJmZjBlNDJjODU2MjBiYWMwMTdkOGQ1OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oCkBAIC0yOSw2
ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CisKIGNsYXNzIFByb3RvdHlwZUtleSB7CiBwdWJsaWM6CiAgICAgUHJvdG90eXBlS2V5KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IDg1
ZDRjYjE1NTg1ODNlODAxYjlkMDEwYjAxM2MzMTZmNmY4ZDBmMzguLjg4NTBjNGE5YTM0Mzk0ZjE4
Zjc1YTM1ZDY3YmEzYTQ1YTE5ZmU0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC00MCw2ICs0MCw3IEBACiAgICAgbWFjcm8odW5kZWZpbmVk
KSBcCiAgICAgbWFjcm8oc3RyaW5nKSBcCiAgICAgbWFjcm8oc3ltYm9sKSBcCisgICAgbWFjcm8o
YmlnaW50KSBcCiAgICAgbWFjcm8odHJ1ZSkKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDMsNiAr
MTA0LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdFN0cmluZygpOwogICAg
ICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uU3RyaW5nKCk7CisgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50OgorICAgICAgICAg
ICAgcmV0dXJuIGJpZ2ludFN0cmluZygpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNDA3NWZkNzViMGViMThmY2U4YTYzMmJhMjdjYjczMTYy
N2RhNjY3Yy4uOWY1NzhlOGFiYzU0MTYwMDM5NDE4NThiYWFmYjMxYzg4ZTcwNzc4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKKyNpbmNs
dWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
dW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCmluZGV4IDUzOTdlODE3ZjEyN2YzNWFk
NjdjZWFjYmE2ZDJiNzliNGQ5ZmU1NTUuLjI1NzBiNzJlM2JjNGEwYzdmYjJkZjM3OWJlOWFkMDBj
MmJkOGRjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2FjaGUuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsK
IGNsYXNzIFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAppbmRleCBhZTUyMTA3MDlhN2Y1NDE2YTk4MmE3Yzc1YzBjMzM2MWMy
ZDAxY2U4Li4zYmZjZjU3MWY0YTg3YTMxZWJmOTA1ZDY4ZDRiNTJkNmQ4YTU1YmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0y
MDMsNyArMjAzLDYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFBy
aW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwotCiB9CiAKIGlubGluZSBKU1ZhbHVlIFN0cnVj
dHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCmluZGV4
IGRiMTYyYjdmNGY0Y2UyM2ZiODgwNTZkZGY0MWM0OGRlMzBkNTY0Y2QuLmFhM2ZmYTdjMzgyZTEw
NWQ1ZGFlNGMxYTQ4MzYwZDQwZWY4YmJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVvZlR5cGUuY3BwCkBAIC01NCw2ICs1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBUeXBlb2ZUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlb2ZUeXBl
OjpGdW5jdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgIG91dC5wcmludCgiYmln
aW50Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVvZlR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUu
aAppbmRleCAzMzJmYTgxMjE5MmE1YTYyZWI2NmJjNjFiMjgwOGI2ZjUzNWE0ZWQ4Li45NjQ4NWQw
MmQyNDFjNmRiNzYyY2U4MTA2ZmYyODUzYTZjNTk3MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBlbnVtIGNsYXNzIFR5cGVvZlR5cGUgewogICAgIFVuZGVmaW5lZCwKKyAgICBCaWdJbnQs
CiAgICAgQm9vbGVhbiwKICAgICBOdW1iZXIsCiAgICAgU3RyaW5nLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IGIyMDA4NTczZmUwMmE0NWNmZWQwZWE3NTFiZTJkNWRlOTdl
ODQ1OWEuLjU5N2RjNTNhMDUwMDEyZGFjNzkxMDkxOGZjOTA0MjE5MjM4ZWRkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJK
SVRXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAg
LTI4MCw2ICsyODEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8
SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBzZXRJdGVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2V0SXRlcmF0
b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBtYXBJdGVyYXRv
clN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKKyAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0JpZ0lu
dDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogCiAgICAgc2VudGluZWxT
ZXRCdWNrZXQuc2V0KCp0aGlzLCBKU1NldDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRo
aXMpKTsKICAgICBzZW50aW5lbE1hcEJ1Y2tldC5zZXQoKnRoaXMsIEpTTWFwOjpCdWNrZXRUeXBl
OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggYjU1NGIzNTBkNDE4NTE1ZTQ4YjZmOGZjYzBlODRlYzAxNzI0ZjYxYS4uY2M1NDBjMzlmYWNh
YjlkZjM0MTJhNjk2YjhkYjM3NzMyZDQzZmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0zODgsNiArMzg4LDcgQEAgcHVibGljOgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGhh
c2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc2V0SXRlcmF0
b3JTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7
CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmlnSW50U3RydWN0dXJlOwogCiAgICAgU3Ryb25nPEpT
Q2VsbD4gZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogICAgIFN0cm9uZzxKU0NlbGw+IHNl
bnRpbmVsU2V0QnVja2V0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGM4Zjg5OGM5ZmM0YjE3Mjk2Y2M3M2JlNTZhMzNmNTZmZDA2Yjc2OWIuLmE2
ZWFiNGEzZmMzYTMzMjFlMDY0MDJlZWNiNmRjZmEyNGFiNjg5MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0x
MS0yMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4
dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTExLTE2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVcGRhdGUgV2luQ2Fpcm9SZXF1aXJl
bWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDQxMWU5YTc1MzIzODY5Mjg5
MmU5MzYyMDZmY2NlNzQ5YjE3OGVjYmQuLjljMDA2MjYzNTg5MTBkOTY3ZGU0NzhiNzljMmY5MjFj
NTEwMzM0NzIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwx
MCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1
bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlv
bnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZU
TF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVu
RlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0
bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVz
dFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFlZDIyMzdjZGFhNDEzMjQzZWViZTQwZmEyYmFhZmIz
YTU2NmVlMS4uODkyN2Q4NmMzMGFjMWZjODdlYzVhYmZkZTU0NGM1NTEzYTNhOGQ1OSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNy0xMS0yMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBK
U0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sYXJn
ZS1udW1iZXItb29tLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChjYXRj
aCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanM6IEFkZGVkLgorICAgICAg
ICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKwogMjAxNy0xMS0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYXJrIHJlZ3Jlc3MtMTc4Mzg1Lmpz
IGFzIG1lbW9yeSBleGhhdXN0aW5nCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlh
bWwgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiMTc3ZTI2MjZjMjU0
ODhjM2EyOGQ5NWQxNmU3NTQ2MjU3MjVmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYmln
SW50VGVzdHMueWFtbApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBDYWlv
IExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJbnQgdGVz
dHMuIFRvIGJlIHJlbW92ZWQgb25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhpbmQgYSBm
ZWF0dXJlIGZsYWcuCisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFscy5qcwor
ICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10eXBlLW9m
LmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LWxhcmdlLW51bWJlci1vb20uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxh
cmdlLW51bWJlci1vb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmZjA5MGNiYmMzNzUzNmNlZGEzYTJjOGM0
MjQyY2ExNzJjYjg4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bGFyZ2UtbnVtYmVyLW9vbS5qcwpAQCAtMCwwICsxLDIxIEBACisvL0AgcnVuQmlnSW50RW5hYmxl
ZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQiKTsKK30KKwordmFyIGxvbmdTdHIgPSAiZiI7Citmb3IgKHZhciBpID0gMDsg
aSA8IDMwOyArK2kpCisgICAgbG9uZ1N0ciA9IGxvbmdTdHIgKyBsb25nU3RyOworCitsZXQgc3Vi
ID0gbG9uZ1N0ci5zdWJzdHJpbmcoMCwgbG9uZ1N0ci5sZW5ndGggLSA0KQorbGV0IG1zY3JpcHQg
PSAiMHgiICsgbG9uZ1N0ciArIHN1YiArICJuIjsKKwordHJ5IHsKKyAgICBldmFsKG1zY3JpcHQp
OworICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdl
ID09ICJPdXQgb2YgbWVtb3J5IikKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1saXRlcmFscy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmM0ODA5MGJlY2NkOTdjZGI0N2U0OTRlMmEyYWFhNDljZGUzYTQxOAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKQEAgLTAsMCAr
MSwxMTMgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7Cisg
ICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1dCkgeworICAgIHRyeSB7Cisg
ICAgICAgIGV2YWwoaW5wdXQpOworICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcik7CisgICAgfQor
fQorCisvLyBUZXN0IDAgY29udmVyc2lvbnMKK2xldCBuID0gMG47Cithc3NlcnQobiA9PT0gMG4p
OworCituID0gMDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworLy8gQmluYXJ5IHJlcHJlc2VudGF0
aW9uCisKK24gPSAwYjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwYjEwbjsKK2Fz
c2VydChuID09PSAybik7CisKK24gPSAwYjAxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitsZXQg
YmluYXJ5U3RyaW5nID0gIjBiMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAg
IGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cith
c3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisK
K24gPSAwQjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwQjEwbjsKK2Fzc2VydChu
ID09PSAybik7CisKK2JpbmFyeVN0cmluZyA9ICIwQjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAx
Mjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChiaW5hcnlTdHJp
bmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2
ODIxMTQ1Nm4pOworCisvLyBPY3RhbCByZXByZXNlbnRhdGlvbgorCituID0gMG83bjsKK2Fzc2Vy
dChuID09PSA3bik7CisKK24gPSAwbzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwbzIw
bjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gMG8wMDAyMG47Cithc3NlcnQobiA9PT0gMTZu
KTsKKworbiA9IDBPN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gME8xMG47Cithc3NlcnQo
biA9PT0gOG4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPMjBu
OworYXNzZXJ0KG4gPT09IDE2bik7CisKKy8vIEhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCisK
K24gPSAweGFuOworYXNzZXJ0KG4gPT09IDEwbik7CisKK24gPSAweGZmbjsKK2Fzc2VydChuID09
PSAyNTVuKTsKKworbiA9IDB4MDAwZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHhm
YWJjbjsKK2Fzc2VydChuID09PSA2NDE4OG4pOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIw
YjJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjAybiIpOworYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcigiMGIxbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvODluIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIwbzA4biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG83
bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Z24iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjB4MGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGZubiIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMTAwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjFhMG5u
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMEUyMG4iKTsKKwordHJ5IHsKKyAgICBldmFs
KCItLTEwbiIpOworICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNTNjZDMwMTI0NmI5NThmNGM2ZDRkYTExYWY3Y2QwYTZiNDA5MmFjCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCkBAIC0w
LDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7
CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsK
K30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0gImJpZ2ludCIpOworYXNzZXJ0KHR5cGVvZiAxbiAh
PT0gIm9iamVjdCIpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327501</attachid>
            <date>2017-11-23 07:41:45 -0800</date>
            <delta_ts>2017-11-23 19:08:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171123134141.patch</filename>
            <type>text/plain</type>
            <size>101498</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi40NThkMWVjM2QyYjcxYzll
Nzk2YmVhNDMwNmEwM2RlZDk5NTU2ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IG9uIEpTQmlnSW50OjptX2RhdGEgdG8KKyAg
ICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0
eSBhbmQgYWxsb3dpbmcKKyAgICAgICAgNjQtYml0d2lzZSAob3IgMzItYml0d2lzZSkgYXJpdGht
ZXRpYyBvcGVyYXRpb25zLiBKU0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24KKyAgICAgICAgdG8gc3Rv
cmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRhXV0gYW5kIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJh
Y2sgb2YgQmlnSW50IGxlbmd0aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxv
d2luZyB0aGUgVjggb25lLiBKU0JpZ0ludDo6bV9kYXRhIGFyZSBtYW5pcHVsYXRlZAorICAgICAg
ICBieSBKU0JpZ0ludDo6c2V0RGlnaXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0
KGluZGV4KSBvcGVyYXRpb25zLgorICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25z
IHRvIHN1cHBvcnQgYXJpdGhtZXRpY3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1w
b3J0YW50IHRvIG5vdGljZSB0aGF0IG9uIHRoaXMgcmVwcmVzZW50YXRpb24sIEpTQmlnSW50Ojpt
X2RhdGFbMF0gcmVwcmVzZW50cworICAgICAgICB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQg
YW5kIEpTQmlnSW50OjptX2RhdGFbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0Cisg
ICAgICAgIHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6Qmln
SW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJl
c3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZh
bHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpiaWdJ
bnRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yQWRkKToKKyAgICAgICAgKEpT
Qzo6UmVzdWx0VHlwZTo6Zm9yTG9naWNhbE9wKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCaWdJbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVplcm8pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRl
cm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldERpZ2l0KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAoSlNDOjphc0JpZ0ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9O
dW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xv
d0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9N
YXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUtleS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE3LTExLTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgZmVhdHVyZSBkZWZpbmUgZm9yIGFsdGVybmF0aXZlIHByZXNlbnRhdGlvbiBidXR0
b24gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWM0YTk5YmFiMDUw
ODA3ZTY3MjZlMTZiYjI1OWFkMDJiMjY0ZDcwLi5lZjI1MmMzYWQ3MzY1ZjM2NzZlYzQwMzY4ZWJl
NGQ3NzllYWJhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzkyLDcgKzc5
Miw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAv
KiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwotCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzczOEQxMUVEQjU2NzIw
MDNGMkIwQiAvKiBQYXJzZUludC5oICovOyB9OworCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIg
LyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3MzFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVy
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
Mjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMjk1Mjc0MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0
ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjksNiArMTEyOSw3IEBACiAJCTg2NzA0
Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAv
KiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1i
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBACiAJCTg2ODgwRjFC
MTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBK
U0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JpZ0ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYgLyog
SlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCaWdJ
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRBMDA4
NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0
NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBsaW5lRW5k
aW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0u
bW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1t
Lm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1t
bS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQt
bW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
LW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
Mi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
My5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0
LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcu
Y3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENB
IC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0
MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMz
MUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAv
KiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJCThCQzA2NDg5MUUx
QUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFBMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTg5OCwx
NCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjczNUU3ODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM2QjMxOUIxRjcz
NUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTlCMUY3
MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNjYxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
MEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3MGU0MzcuLmE1ODc4
YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9KU0FzeW5jRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1bnRpbWUv
SlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgx
Yjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNkZmVjMThiNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgxMjc0NGNlYmZi
NWNiZjg5NzY0OTkwZTU1MC4uN2Y1ZWZmMmQwMjQ2MGViOGEzOWQ2ZmQzODg5ZjQxZmI4N2M0ZTBh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC05NSw2ICs5Niw3IEBAIHZvaWQgVmFyaWFibGU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAogUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKIHsKKyAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgbV9jb2RlQmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdp
c3Rlci52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAKICAgICBlbWl0TG9nU2hhZG93Q2hpY2tlblByb2xv
Z3VlSWZOZWNlc3NhcnkoKTsKQEAgLTIxMiw2ICsyMTQsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7
CiAKKyAgICBpZiAobV9lcnJvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX2Vycm9yOwor
CiAgICAgaWYgKG1fZXhwcmVzc2lvblRvb0RlZXApCiAgICAgICAgIHJldHVybiBQYXJzZXJFcnJv
cihQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJz
ZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTE3ODMsNiArMTc4OCwxNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xU
eXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7Cisg
ICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfaXNfY2VsbF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJp
Z0ludFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdp
bmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3Jf
bnVsbCk7CkBAIC0zMTI1LDYgKzMxMzgsMjAgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxv
Y2stPmFkZENvbnN0YW50QnVmZmVyKGxlbmd0aCk7CiB9CiAKK0pTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4X3QgcmFkaXgpCit7CisgICAgSlNCaWdJbnQqJiBiaWdJbnRJbk1hcCA9IG1fYmlnSW50TWFw
LmFkZChCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgpLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFiaWdJbnRJbk1hcCkgeworICAgICAgICBiaWdJbnRJ
bk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCAqdm0oKSwgU3RyaW5nVmlldyhpZGVu
dGlmaWVyLnN0cmluZygpKSwgcmFkaXgpOworICAgICAgICBpZiAoIWJpZ0ludEluTWFwKSB7Cisg
ICAgICAgICAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5
KTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAg
IGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworICAgIH0KKyAgICByZXR1cm4gYmlnSW50
SW5NYXA7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3Rh
bnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBKU1N0cmluZyomIHN0cmlu
Z0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNiZDQwNTJhZTVhMmI2YTA5
NzVkYTA0MGQ1YWY3Yi4uZDUzZmI0OTUyMjMzZDIzMDg3YWNlZjQwMzQzZWQzODQ3YzZiMWFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAg
LTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMTAwMCwxMCArMTAwMiwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhbGxv
Y2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNjb3Bl
KCk7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVyTWFw
OwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyos
IElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOwotICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxhdGVS
ZWdpc3RyeUtleU1hcDsKLSAgICAgICAgCisgICAgICAgIHVzaW5nIEJpZ0ludE1hcEVudHJ5ID0g
c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdD47CisgICAgICAgIHN0cnVjdCBC
aWdJbnRFbnRyeUhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goQmlnSW50
TWFwRW50cnkga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXku
Zmlyc3QtPmV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgKyBXVEY6OmludEhhc2goa2V5LnNlY29u
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJzdCAmJiBhLnNlY29uZCA9
PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAg
ICAgICB9OworCisgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBKU1Zh
bHVlPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVl
ZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPjsKKyAgICAgICAgdXNp
bmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTQmlnSW50
KiwgQmlnSW50RW50cnlIYXNoPjsKKyAgICAgICAgdXNpbmcgVGVtcGxhdGVSZWdpc3RyeUtleU1h
cCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj47CisKICAg
ICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRoaXMg
d29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVjdGVkIGZ1bmN0aW9ucyBo
YXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBjb25zdHJ1Y3QKICAgICAg
ICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5ldyBPYmplY3QoKSIpLgpA
QCAtMTA4OCw2ICsxMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAgICAg
ICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3Qg
cmFkaXgpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3Rh
bnQoUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYpOwogCiAgICAgICAgIFZlY3RvcjxVbmxpbmtl
ZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC0xMTg3LDYgKzEyMDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2Vu
dGF0aW9uLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoLCBF
bmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7CiAg
ICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJZGVudGlmaWVyU3RyaW5n
TWFwIG1fc3RyaW5nTWFwOworICAgICAgICBJZGVudGlmaWVyQmlnSW50TWFwIG1fYmlnSW50TWFw
OwogICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1h
cDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplciB7ICZtX2luc3RydWN0aW9ucyB9OwpAQCAtMTIwOCw2ICsxMjI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdXNpbmcgQ2F0Y2hFbnRyeSA9IHN0ZDo6dHVwbGU8VHJ5RGF0YSos
IGludCwgaW50PjsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1fY2F0Y2hlc1RvRW1pdDsK
KyAgICAgICAgUGFyc2VyRXJyb3IgbV9lcnJvcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBkN2ViY2E3MGRmODA4NDdmMzIwLi43
ZjNkYzU0NzNkNzRjZTNiMjNjY2RlMmE3YTZjNTEwYTZkOGFmNmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjIs
NiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5nQ29uc3Rh
bnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmF0b3IuYWRkQmln
SW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0
Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41ZTJjNDc2NGMyMWE3MjU3
MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNzUsNyAr
MTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBi
b29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2go
WyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5m
byB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUu
aXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09
IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBl
LnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlw
ZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkK
ICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2Ug
ZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5YWM3YmViMDI0ZDYwMC4u
ZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDIsNiAr
MjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBjYXNlIEJpZ0ludFR5cGU6
CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUludmFsaWRG
dW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJndW1lbnRzKSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYjlmNzgzMDgx
NzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2ZDU4YjhlMGNlM2I3OWMz
NGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhYjk1NjEz
ZTZlNTUyODBiY2RiMDQ4ZjIyNTJiMTI1YzMxZGYzZGFlLi4zYWQzODhjNGM5OTY5ODllZWE5MzM0
NDAwZjA1ZjNiMzVjNzcxNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaApAQCAtMjMyLDYgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluY0NvbnN0YW50
cygpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9kZShsb2Nh
dGlvbiwgZCk7CiAgICAgfQorICAgIAorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCaWdJbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogYmlnSW50
LCB1aW50OF90IHJhZGl4KQorICAgIHsKKyAgICAgICAgaW5jQ29uc3RhbnRzKCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpZ0ludE5vZGUobG9jYXRpb24sICpiaWdJbnQs
IHJhZGl4KTsKKyAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZlZTZjNWRiZDU5
YWRlMzdmMmQxYjIyZDI5MTY0OGFkMjk2ZjU0MWQuLmMzZmE5MDBhYjY5OGRiYzRiYzc3OTBlZjNl
YzU0NWQ5MTdjMTlhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTUwMCw3ICsxNTAx
LDcgQEAgdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+OjpwYXJz
ZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSoKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFs
dWUpCitBTFdBWVNfSU5MSU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4gTGV4
ZXI8VD46OnBhcnNlSGV4KCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2lt
YWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpA
QCAtMTUxMiwxMCArMTUxMyw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VI
ZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1tYXhpbXVtRGlnaXRzOwogICAgIH0g
d2hpbGUgKGlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7
CiAKLSAgICBpZiAobWF4aW11bURpZ2l0cyA+PSAwKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
aGV4VmFsdWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShtYXhpbXVt
RGlnaXRzID49IDAgJiYgbV9jdXJyZW50ICE9ICduJykpCisgICAgICAgIHJldHVybiBoZXhWYWx1
ZTsKIAogICAgIC8vIE5vIG1vcmUgcGxhY2UgaW4gdGhlIGhleFZhbHVlIGJ1ZmZlci4KICAgICAv
LyBUaGUgdmFsdWVzIGFyZSBzaGlmdGVkIG91dCBhbmQgcGxhY2VkIGludG8gdGhlIG1fYnVmZmVy
OCB2ZWN0b3IuCkBAIC0xNTMzLDExICsxNTMyLDE0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhl
cjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAg
ICB9CiAKLSAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VC
aWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIG1ha2VJZGVudGlm
aWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgIAorICAgIHJldHVy
biBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8
VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6
b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gTGV4ZXI8VD46OnBh
cnNlQmluYXJ5KCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgYmluYXJ5IHZhbHVlcyBm
aXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IGJpbmFyeVZhbHVlID0gMDsKQEAgLTE1NTQs
MTAgKzE1NTYsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRv
dWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJ
SUJpbmFyeURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVND
SUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUg
PSBiaW5hcnlWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGlmIChMSUtF
TFkoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9
ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25z
dCBJZGVudGlmaWVyKj4+KGJpbmFyeVZhbHVlKTsKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVt
RGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsK
QEAgLTE1NjcsMTcgKzE1NjcsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJz
ZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9
IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRp
ZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm5W
YWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgMik7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4ocGFyc2VJbnRPdmVyZmxvdyht
X2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJs
ZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIGNvbnN0IElkZW50aWZpZXIqPj4gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKQogewogICAgIC8v
IE9wdGltaXphdGlvbjogbW9zdCBvY3RhbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1
aW50MzJfdCBvY3RhbFZhbHVlID0gMDsKQEAgLTE1OTQsOSArMTU5NCw4IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAg
ICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkgJiYg
ZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0
ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBvY3RhbFZhbHVlOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdp
dCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKSB7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG9jdGFsVmFsdWUpOwogICAg
IH0KIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkp
CkBAIC0xNjA3LDE3ICsxNjA2LDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFy
c2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAot
ICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9
IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRp
ZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm5W
YWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgOCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4ocGFyc2VJbnRPdmVyZmxvdyht
X2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCA4KSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91
YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRv
dWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkKIHsKICAg
ICAvLyBPcHRpbWl6YXRpb246IG1vc3QgZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4K
ICAgICB1aW50MzJfdCBkZWNpbWFsVmFsdWUgPSAwOwpAQCAtMTYzOCwxMCArMTYzNyw4IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpCiAgICAgICAgICAgICAtLWRpZ2l0OwogICAgICAgICB9IHdoaWxlIChpc0FTQ0lJRGlnaXQo
bV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBt
X2N1cnJlbnQgIT0gJy4nICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScpIHsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gZGVjaW1hbFZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAm
JiAobV9jdXJyZW50IHwgMHgyMCkgIT0gJ2UnICYmIG1fY3VycmVudCAhPSAnbicpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmll
cio+PihkZWNpbWFsVmFsdWUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRz
IC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBA
IC0xNjUxLDggKzE2NDgsMTEgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURl
Y2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwog
ICAgICAgICBzaGlmdCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVy
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
QEAgLTIxMDAsNyArMjEwMCwyNyBAQCBzdGFydDoKICAgICAgICAgICAgIHRva2VuID0gRE9UOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZ290byBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OworICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Cisg
ICAgICAgIHRva2VuID0gRE9VQkxFOworICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09
ICdlJykgeworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0
b3IoKSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAg
ICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJS
T1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAg
ICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNp
emVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJz
ZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgp
OworICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgIHRva2VuID0gdG9r
ZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKworICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxsb3dl
ZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsKKyAgICAgICAgICAgIHRva2VuID0g
YXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAo
KG1fY3VycmVudCB8IDB4MjApID09ICd4JykgewpAQCAtMjExMywxMyArMjEzMywyMiBAQCBzdGFy
dDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAgICAg
IHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUp
OworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlSGV4KCk7CisgICAg
ICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQuaW5kZXgoKSA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZp
ZXIqPihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRp
eCA9IDE2OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworCiAgICAg
ICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVj
aW1hbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBV
TlRFUk1JTkFURURfSEVYX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJl
dHVybkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAg
aWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9r
ZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAg
ICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMjEzMywxMyArMjE2MiwyMiBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91
dCB0aGUgJ2InIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBh
cnNlQmluYXJ5KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgYXV0byBwYXJz
ZU51bWJlclJlc3VsdCA9IHBhcnNlQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAocGFyc2VOdW1i
ZXJSZXN1bHQgJiYgcGFyc2VOdW1iZXJSZXN1bHQtPmluZGV4KCkgPT0gMSkgeworICAgICAgICAg
ICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlm
aWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJh
ZGl4ID0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUgPSBwYXJzZU51bWJlclJlc3VsdCA/IFdURjo6Z2V0PGRvdWJsZT4oKnBhcnNl
TnVtYmVyUmVzdWx0KSA6IDA7CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJy
ZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJObyBzcGFjZSBiZXR3ZWVuIGJpbmFyeSBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfQklOQVJZX05VTUJFUl9FUlJPUlRPSzsK
ICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQorICAg
ICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRh
dGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjE1NCwxMyArMjE5MiwyMiBAQCBzdGFydDoK
ICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHByZWZpeC4KICAgICAgICAgICAgIHNo
aWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7
CisgICAgICAgICAgICBhdXRvIG51bWJlclBhcnNlUmVzdWx0ID0gcGFyc2VPY3RhbCgpOworICAg
ICAgICAgICAgaWYgKG51bWJlclBhcnNlUmVzdWx0ICYmIG51bWJlclBhcnNlUmVzdWx0LT5pbmRl
eCgpID09IDEpIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0g
V1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpudW1iZXJQYXJzZVJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDg7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gbnVtYmVyUGFyc2VSZXN1bHQgPyBX
VEY6OmdldDxkb3VibGU+KCpudW1iZXJQYXJzZVJlc3VsdCkgOiAwOworCiAgICAgICAgICAgICBp
ZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFu
ZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NU
QUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtl
VG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRv
a2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRl
Z2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZm
ZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcyLDM0
ICsyMjE5LDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAg
ICAgICAgaWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAg
ICAgIGF1dG8gbnVtYmVyUGFyc2VSZXN1bHQgPSBwYXJzZU9jdGFsKCk7CisgICAgICAgICAgICBp
ZiAobnVtYmVyUGFyc2VSZXN1bHQgJiYgbnVtYmVyUGFyc2VSZXN1bHQtPmluZGV4KCkgPT0gMCkg
eworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3Vi
bGU+KCpudW1iZXJQYXJzZVJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVy
TnVtYmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0g
RE9VQkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1i
ZXJSZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJS
ZXN1bHQgfHwgcGFyc2VOdW1iZXJSZXN1bHQtPmluZGV4KCkgPT0gMSkgeworICAgICAgICAgICAg
ICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9
IEJJR0lOVDsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLWluTnVtYmVyQWZ0ZXJEZWNp
bWFsUG9pbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9p
bnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VCTEU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2UnKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9y
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlM
aXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgICAg
ICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVy
Kj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5y
YWRpeCA9IDEwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHRva2VuID0gSU5URUdFUjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAn
LicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0b2tlbiA9IERPVUJMRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdlJykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1F
UklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6
ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gSU5U
RUdFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdl
ckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEoKSwgbV9idWZm
ZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0g
SU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2Vy
TGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZU51bWJlclJl
c3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0
PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRv
a2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0
KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZDg0
NWUyZTE0ZjU2OWE0ZDM4ZTJjM2Q5OWVmNmM0NjcyMzI0MzIyMC4uMTk3N2RiMTY0OTg4NTVhMTk3
MmM4NjdhNDE5ODNlZDY3NDhiYjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aApAQCAtMTczLDEyICsxNzMsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VTdHJp
bmcoSlNUb2tlbkRhdGEqLCBib29sIHN0cmljdE1vZGUpOwogICAgIHRlbXBsYXRlIDxib29sIHNo
b3VsZEJ1aWxkU3RyaW5ncz4gTkVWRVJfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlU3Ry
aW5nU2xvd0Nhc2UoSlNUb2tlbkRhdGEqLCBib29sIHN0cmljdE1vZGUpOwogCisgICAgZW51bSBj
bGFzcyBOdW1iZXJQYXJzZVJlc3VsdCB7IE51bWJlciwgQmlnSW50LCBGYWlsdXJlIH07CiAgICAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzLCBMZXhlckVzY2FwZVBhcnNlTW9kZSBl
c2NhcGVQYXJzZU1vZGU+IEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VDb21w
bGV4RXNjYXBlKGJvb2wgc3RyaWN0TW9kZSwgVCBzdHJpbmdRdW90ZUNoYXJhY3Rlcik7CiAgICAg
QUxXQVlTX0lOTElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rv
a2VuRGF0YSosIFJhd1N0cmluZ3NCdWlsZE1vZGUpOwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBw
YXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFy
c2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBh
cnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBh
cnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIFZhcmlh
bnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4gcGFyc2VIZXgoKTsKKyAgICBBTFdBWVNfSU5M
SU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFy
c2VCaW5hcnkoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VPY3RhbCgpOworICAgIEFMV0FZU19JTkxJTkUg
c3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJzZURl
Y2ltYWwoKTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQ
b2ludCgpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJ
bmRpY2F0b3IoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VNdWx0aWxpbmVDb21tZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0NmFkZGQ3MzliZWNlYzhiZDE5YmYuLmUzOWYzNDc4
Nzg3ZjlmMDRlNDBmYTk4MTI2N2RkNzAyNThiMTgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC05Miw2ICs5MiwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5saW5lIEJpZ0ludE5vZGU6OkJpZ0lu
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
dmFsdWUsIHVpbnQ4X3QgcmFkaXgpCisgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAg
ICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05v
ZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRU
eXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJh
OTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNkYzc0ZGIzMThlMjNiY2NlMjY3ZDhkMTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xh
c3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwg
dWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0JpZ0ludCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3JhZGl4OworICAgIH07CisK
ICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAg
ICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2FjMWJkNTQyNmM0YTExZjAyZGFhOGU5OGQ1MzE1MC4u
ODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNmNTMxZWZmNjczMThkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJp
YWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWws
IHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5nOworICAg
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAg
bmV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlk
ZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5
YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZjNS4uYzIwNThhZWViMGQzODhkODExOTMyY2ZjN2Nh
NTExNDA5NDMwODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FV
T1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwK
ICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCkBAIC0yMTgsNiArMjE5LDEwIEBAIHVuaW9uIEpT
VG9rZW5EYXRhIHsKICAgICAgICAgYm9vbCBlc2NhcGVkOwogICAgIH07CiAgICAgc3RydWN0IHsK
KyAgICAgICAgY29uc3QgSWRlbnRpZmllciogYmlnSW50U3RyaW5nOworICAgICAgICB1aW50OF90
IHJhZGl4OworICAgIH07CisgICAgc3RydWN0IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
Y29va2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiByYXc7CiAgICAgICAgIGJvb2wgaXNU
YWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRleCA0ZjY0
NzFiNTRmZDVlODgxZGNkYzMyYmNmY2FmNDQ1ZmE1MmEyODQyLi5jNTI4YmIzYjI3Y2YzNWI2MWY0
ZDFmODgyZmE1MWU4MjI1OGExYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jl
c3VsdFR5cGUuaApAQCAtMzEsMTUgKzMxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogCi0gICAgICAgIHR5cGVk
ZWYgdWludDhfdCBUeXBlOworICAgICAgICB1c2luZyBUeXBlID0gdWludDhfdDsKICAgICAgICAg
c3RhdGljIGNvbnN0IFR5cGUgVHlwZUludDMyID0gMTsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5
cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwMjsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlw
ZU1heWJlU3RyaW5nID0gMHgwNDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJl
TnVsbCAgID0gMHgwODsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQm9vbCAg
ID0gMHgxMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQmlnSW50ID0gMHgx
NjsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHgyMDsKIAot
ICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5
cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJl
T3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVCaXRzID0gVHlwZU1heWJlTnVt
YmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJlTnVsbCB8IFR5cGVNYXliZUJvb2wgfCBU
eXBlTWF5YmVCaWdJbnQgfCBUeXBlTWF5YmVPdGhlcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0gNjsKQEAgLTcwLDYgKzcxLDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBlQml0cykgPT0g
VHlwZU1heWJlQm9vbDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgZGVmaW5pdGVseUlzQmln
SW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBl
Qml0cykgPT0gVHlwZU1heWJlQmlnSW50OworICAgICAgICB9CisKICAgICAgICAgYm9vbCBtaWdo
dEJlTnVtYmVyKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAm
IFR5cGVNYXliZU51bWJlcjsKQEAgLTgwLDYgKzg2LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuICFtaWdodEJlTnVtYmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIGJvb2wgbWlnaHRCZUJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKworICAgICAgICBi
b29sIGlzTm90QmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFt
aWdodEJlQmlnSW50KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1
bHRUeXBlIG51bGxUeXBlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5
cGUoVHlwZU1heWJlTnVsbCk7CkBAIC0xMTAsNiArMTI2LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlU3RyaW5nKTsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgYmlnSW50VHlwZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZUJpZ0ludCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIHVua25vd25UeXBl
KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZUJpdHMpOwpA
QCAtMTIxLDYgKzE0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJldHVy
biBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc1N0cmluZygp
IHx8IG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Ry
aW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJbnQoKSB8fCBv
cDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wMS5kZWZp
bml0ZWx5SXNCaWdJbnQoKSAmJiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkgPyBiaWdJbnRUeXBl
KCkgOiB1bmtub3duVHlwZSgpOwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ09yTnVtYmVyVHlw
ZSgpOwogICAgICAgICB9CiAKQEAgLTEzNCw2ICsxNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyVHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5k
ZWZpbml0ZWx5SXNTdHJpbmcoKSAmJiBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGUoKTsKKyAgICAgICAgICAgIGlmIChvcDEuZGVmaW5p
dGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBiaWdJbnRUeXBlKCk7CiAgICAgICAgICAgICByZXR1cm4gdW5rbm93blR5cGUo
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCmluZGV4IDhkYjM1Yzc3OTZmNGQzNmZhNTQ1MjU5MTYwZGM1ODllYjg0OWQ5NTYuLjUz
OWM0NzM0MGViNmE2NDVmZTdjYWY0NDFjM2YwMGRiNWIzY2Y2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0eUJpdCA9IDB4
ODAwMDAwMDA7CiAgICAgZW51bSA6IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAgICAgUmVzb2x2
ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4
cHIsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBE
b3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVs
bEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAg
RnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4
cHIsIERvdEV4cHIsIENhbGxFeHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhw
ciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoKICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZURvdWJsZUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBE
b3VibGVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBCaWdJbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIq
KSB7IHJldHVybiBTdHJpbmdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVh
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1
cm4gTnVsbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDE5M2M5MWUwN2I1Y2E5OGFkN2JjMzBmNDU5Y2MyNTFiZGU1
NWY5OGYuLmQ2NDc2NmEzMDRmNzU3MmZkMzJjZDA1NGUxMTcyMzkyMjM4NzQxMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MzAsNiArMzAsNyBAQAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBcCiAgICAgbWFjcm8oQXJyYXlJ
dGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVNRU5UKSBcCisgICAgbWFjcm8oQmln
SW50KSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAg
bWFjcm8oQ3JlZGVudGlhbCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyODA4OGQ3ZDJmZTM2NGJhNWFmNzIwNmUzM2VkMTE3NDUwMzQ0
NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAKQEAgLTAsMCArMSw2MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2Fp
byBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqIFBhcnRzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdzoKKyAqCisg
KiBDb3B5cmlnaHQgMjAxNyB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAq
CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE0IHRoZSBEYXJ0IHByb2plY3QgYXV0aG9ycy4gIFBs
ZWFzZSBzZWUgdGhlIEFVVEhPUlMgZmlsZSBbMV0KKyAqIGZvciBkZXRhaWxzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhCisgKiBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIFsy
XS4KKyAqCisgKiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0
ZXIvQVVUSE9SUworICogWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2Iv
bWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgR28gQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlCisgKiBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUgWzNdLgorICoKKyAqIFszXSBodHRwczovL2dvbGFuZy5vcmcvTElDRU5TRQorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNsdWRlICJQYXJz
ZUludC5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
ZWN0b3IuaD4KKworI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29u
ZCwgIkpTQmlnSW50IGFzc3VtZXMgIiAjY29uZCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU0JpZ0ludDo6c19pbmZvID0KKyAgICB7ICJKU0JpZ0ludCIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCaWdJbnQpIH07CisKK3Zv
aWQgSlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgaWYg
KHRoaXNPYmplY3QtPm1fZGF0YSkKKyAgICAgICAgdmlzaXRvci5tYXJrQXV4aWxpYXJ5KHRoaXNP
YmplY3QtPm1fZGF0YS5nZXQoKSk7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgY3JlYXRlV2l0aExlbmd0aCkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICAsIG1fbGVuZ3RoKGNyZWF0ZVdpdGhMZW5ndGgpCit7IH0KKwordm9p
ZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShib29sIHplcm9Jbml0aWFsaXplKQoreworICAgIEFTU0VS
VChtX2RhdGEpOworCisgICAgc2V0U2lnbihmYWxzZSk7CisgICAgaWYgKHplcm9Jbml0aWFsaXpl
KSB7CisgICAgICAgIHZvaWQqIGRhdGEgPSBtX2RhdGEuZ2V0KCk7CisgICAgICAgIG1lbXNldChy
ZWludGVycHJldF9jYXN0PHZvaWQqPihkYXRhKSwgMCwgbGVuZ3RoKCkgKiBEaWdpdFNpemUpOwor
ICAgIH0KK30KKworU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCit7CisgICAg
SlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGUoZXhlYywgdm0sIDApOworICAgIHplcm9CaWdJ
bnQtPnNldFNpZ24oZmFsc2UpOworICAgIHJldHVybiB6ZXJvQmlnSW50OworfQorCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IGNyZWF0ZVdp
dGhMZW5ndGgpCit7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVy
ZS5nZXQoKSwgY3JlYXRlV2l0aExlbmd0aCk7CisgICAgYmlnSW50LT5maW5pc2hDcmVhdGlvbihl
eGVjLCB2bSk7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwordm9pZCBKU0JpZ0ludDo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIAorICAgIGlmIChtX2xlbmd0aCkgeworICAgICAgICB2b2lkKiBiYWNr
aW5nU3RvcmUgPSB2bS5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKG1fZGF0YS5raW5kKS50cnlBbGxv
Y2F0ZShzaXplRm9yKG1fbGVuZ3RoKSk7CisgICAgICAgIERpZ2l0KiBkYXRhID0gc3RhdGljX2Nh
c3Q8RGlnaXQqPihiYWNraW5nU3RvcmUpOworICAgICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fZGF0YS5zZXQodm0sIHRoaXMsIGRhdGEpOwor
ICAgIH0KK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxKU0Jp
Z0ludCo+KHRoaXMpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmlnSW50Ojp0b1N0
cmluZ09uZURpZ2l0KCkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIGlmIChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKKyAgICAgICAgRGlnaXQg
ckRpZ2l0ID0gZGlnaXQoMCk7CisgICAgICAgIGlmIChyRGlnaXQgPD0gOSkKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOworICAgIH0KKyAgICByZXR1cm4g
eyB9OworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgpCit7CisgICAgaWYgKHMuaXM4Qml0
KCkpCisgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBz
Lmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworICAgIHJldHVybiBwYXJzZUludChleGVjLCB2
bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKK30KKwor
U3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGludCByYWRpeCkKK3sK
KyAgICBpZiAodGhpcy0+aXNaZXJvKCkpCisgICAgICAgIHJldHVybiBleGVjLT52bSgpLnNtYWxs
U3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKKworICAgIHJldHVybiB0b1N0
cmluZ0dlbmVyaWMoZXhlYywgdGhpcywgcmFkaXgpOworfQorCitib29sIEpTQmlnSW50Ojppc1pl
cm8oKQoreworICAgIEFTU0VSVChsZW5ndGgoKSB8fCAhc2lnbigpKTsKKyAgICByZXR1cm4gbGVu
Z3RoKCkgPT0gMDsKK30KKworLy8gTXVsdGlwbGllcyB7dGhpc30gd2l0aCB7ZmFjdG9yfSBhbmQg
YWRkcyB7c3VtbWFuZH0gdG8gdGhlIHJlc3VsdC4KK3ZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0
aXBseUFkZCh1aW50cHRyX3QgZmFjdG9yLCB1aW50cHRyX3Qgc3VtbWFuZCkKK3sKKyAgICBTVEFU
SUNfQVNTRVJUKHNpemVvZihmYWN0b3IpID09IHNpemVvZihEaWdpdCkpOworICAgIFNUQVRJQ19B
U1NFUlQoc2l6ZW9mKHN1bW1hbmQpID09IHNpemVvZihEaWdpdCkpOworCisgICAgaW50ZXJuYWxN
dWx0aXBseUFkZCh0aGlzLCBmYWN0b3IsIHN1bW1hbmQsIGxlbmd0aCgpLCB0aGlzKTsKK30KKwor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lUIDEKK3R5cGVkZWYg
dWludDY0X3QgVHdvRGlnaXQ7CisjZWxpZiBIQVZFKElOVDEyOF9UKQorI2RlZmluZSBIQVZFX1RX
T19ESUdJVCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2Vsc2UKKyNkZWZpbmUg
SEFWRV9UV09fRElHSVQgMAorI2VuZGlmCisKKy8vIHtjYXJyeX0gbXVzdCBwb2ludCB0byBhbiBp
bml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8vIGJ5IG9u
ZSBvciBsZWZ0IGFsb25lLgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdEFkZChEaWdp
dCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpCit7CisjaWYgSEFWRV9UV09fRElHSVQKKyAgICBU
d29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgKyBzdGF0aWNfY2FzdDxU
d29EaWdpdD4oYik7CisgICAgY2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGlnaXQgcmVzdWx0
ID0gYSArIGI7CisKKyAgICBpZiAocmVzdWx0IDwgYSkKKyAgICAgICAgY2FycnkgKz0gMTsKKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKy8vIHtib3Jyb3d9IG11c3QgcG9p
bnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVk
CisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGln
aXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGJvcnJvdykKK3sKKyNpZiBIQVZFX1RXT19E
SUdJVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSAtIHN0
YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICBib3Jyb3cgKz0gKHJlc3VsdCA+PiBEaWdpdEJp
dHMpICYgMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7Cisj
ZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgLSBiOworICAgIGlmIChyZXN1bHQgPiBhKQorICAg
ICAgICBib3Jyb3cgKz0gMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJl
c3VsdCk7CisjZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUgbG93IGhhbGYgb2YgdGhlIHJlc3Vs
dC4gSGlnaCBoYWxmIGlzIGluIHtoaWdofS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGln
aXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGhpZ2gpCit7CisjaWYgSEFWRV9UV09fRElH
SVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgKiBzdGF0
aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgaGlnaCA9IHJlc3VsdCA+PiBEaWdpdEJpdHM7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIC8vIE11
bHRpcGx5IGluIGhhbGYtcG9pbnRlci1zaXplZCBjaHVua3MuCisgICAgLy8gRm9yIGlucHV0cyBb
QUggQUxdKltCSCBCTF0sIHRoZSByZXN1bHQgaXM6CisgICAgLy8KKyAgICAvLyAgICAgICAgICAg
IFtBTCpCTF0gIC8vIHJMb3cKKyAgICAvLyAgICArICAgIFtBTCpCSF0gICAgIC8vIHJNaWQxCisg
ICAgLy8gICAgKyAgICBbQUgqQkxdICAgICAvLyByTWlkMgorICAgIC8vICAgICsgW0FIKkJIXSAg
ICAgICAgLy8gckhpZ2gKKyAgICAvLyAgICA9IFtSNCBSMyBSMiBSMV0gIC8vIGhpZ2ggPSBbUjQg
UjNdLCBsb3cgPSBbUjIgUjFdCisgICAgLy8KKyAgICAvLyBXaGVyZSBvZiBjb3Vyc2Ugd2UgbXVz
dCBiZSBjYXJlZnVsIHdpdGggY2FycmllcyBiZXR3ZWVuIHRoZSBjb2x1bW5zLgorICAgIERpZ2l0
IGFMb3cgPSBhICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEgPj4gSGFsZkRp
Z2l0Qml0czsKKyAgICBEaWdpdCBiTG93ID0gYiAmIEhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQg
YkhpZ2ggPSBiID4+IEhhbGZEaWdpdEJpdHM7CisgICAgCisgICAgRGlnaXQgckxvdyA9IGFMb3cg
KiBiTG93OworICAgIERpZ2l0IHJNaWQxID0gYUxvdyAqIGJIaWdoOworICAgIERpZ2l0IHJNaWQy
ID0gYUhpZ2ggKiBiTG93OworICAgIERpZ2l0IHJIaWdoID0gYUhpZ2ggKiBiSGlnaDsKKyAgICAK
KyAgICBEaWdpdCBjYXJyeSA9IDA7CisgICAgRGlnaXQgbG93ID0gZGlnaXRBZGQockxvdywgck1p
ZDEgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRkKGxvdywgck1p
ZDIgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworCisgICAgaGlnaCA9IChyTWlkMSA+PiBIYWxm
RGlnaXRCaXRzKSArIChyTWlkMiA+PiBIYWxmRGlnaXRCaXRzKSArIHJIaWdoICsgY2Fycnk7CisK
KyAgICByZXR1cm4gbG93OworI2VuZGlmCit9CisKKy8vIFJhaXNlcyB7YmFzZX0gdG8gdGhlIHBv
d2VyIG9mIHtleHBvbmVudH0uIERvZXMgbm90IGNoZWNrIGZvciBvdmVyZmxvdy4KK0pTQmlnSW50
OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRQb3coRGlnaXQgYmFzZSwgRGlnaXQgZXhwb25lbnQpCit7
CisgICAgRGlnaXQgcmVzdWx0ID0gMXVsbDsKKyAgICB3aGlsZSAoZXhwb25lbnQgPiAwKSB7Cisg
ICAgICAgIGlmIChleHBvbmVudCAmIDEpCisgICAgICAgICAgICByZXN1bHQgKj0gYmFzZTsKKwor
ICAgICAgICBleHBvbmVudCA+Pj0gMTsKKyAgICAgICAgYmFzZSAqPSBiYXNlOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFJldHVybnMgdGhlIHF1b3RpZW50LgorLy8gcXVv
dGllbnQgPSAoaGlnaCA8PCBEaWdpdEJpdHMgKyBsb3cgLSByZW1haW5kZXIpIC8gZGl2aXNvcgor
SlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdERpdihEaWdpdCBoaWdoLCBEaWdpdCBsb3cs
IERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAgQVNTRVJUKGhpZ2ggPCBk
aXZpc29yKTsKKyNpZiBDUFUoWDg2XzY0KSAmJiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAg
RGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9fYXNtX18oImRpdnEgICVbZGl2
aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0gd2lsbCBiZSBpbiByYXgsIHty
ZW19IGluIHJkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwgIj1kIihyZW0pCisgICAgICAg
IC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIHJkeCwge2xvd30gaW50byByYXgsIGFuZCB7ZGl2
aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Igc3RhY2sgc2xvdC4KKyAgICAg
ICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJtIihkaXZpc29yKSk7CisgICAg
cmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQVShYODYpICYm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCBy
ZW07CisgICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czog
e3F1b3RpZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAgICA6ICI9YSIo
cXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8g
ZWR4LCB7bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSBy
ZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtk
aXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICByZW1haW5kZXIgPSByZW07CisgICAgcmV0dXJu
IHF1b3RpZW50OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgRGlnaXQga0hhbGZEaWdpdEJhc2Ug
PSAxdWxsIDw8IEhhbGZEaWdpdEJpdHM7CisgICAgLy8gQWRhcHRlZCBmcm9tIFdhcnJlbiwgSGFj
a2VyJ3MgRGVsaWdodCwgcC4gMTUyLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50IHMgPSBj
bHo2NChkaXZpc29yKTsKKyNlbHNlCisgICAgaW50IHMgPSBjbHozMihkaXZpc29yKTsKKyNlbmRp
ZgorICAgIGRpdmlzb3IgPDw9IHM7CisgICAgCisgICAgRGlnaXQgdm4xID0gZGl2aXNvciA+PiBI
YWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHZuMCA9IGRpdmlzb3IgJiBIYWxmRGlnaXRNYXNrOwor
CisgICAgLy8ge3N9IGNhbiBiZSAwLiAibG93ID4+IERpZ2l0Qml0cyA9PSBsb3ciIG9uIHg4Niwg
c28gd2UgIiYiIGl0IHdpdGgKKyAgICAvLyB7c196ZXJvX21hc2t9IHdoaWNoIGlzIDAgaWYgcyA9
PSAwIGFuZCBhbGwgMS1iaXRzIG90aGVyd2lzZS4KKyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihp
bnRwdHJfdCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAgRGlnaXQgc1plcm9NYXNrID0gc3RhdGlj
X2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PGludHB0cl90PigtcykgPj4gKERpZ2l0Qml0cyAtIDEp
KTsKKyAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwgcykgfCAoKGxvdyA+PiAoRGlnaXRCaXRzIC0g
cykpICYgc1plcm9NYXNrKTsKKyAgICBEaWdpdCB1bjEwID0gbG93IDw8IHM7CisgICAgRGlnaXQg
dW4xID0gdW4xMCA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHVuMCA9IHVuMTAgJiBIYWxm
RGlnaXRNYXNrOworICAgIERpZ2l0IHExID0gdW4zMiAvIHZuMTsKKyAgICBEaWdpdCByaGF0ID0g
dW4zMiAtIHExICogdm4xOworCisgICAgd2hpbGUgKHExID49IGtIYWxmRGlnaXRCYXNlIHx8IHEx
ICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4xKSB7CisgICAgICAgIHExLS07Cisg
ICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIERpZ2l0IHVuMjEgPSB1bjMyICoga0hh
bGZEaWdpdEJhc2UgKyB1bjEgLSBxMSAqIGRpdmlzb3I7CisgICAgRGlnaXQgcTAgPSB1bjIxIC8g
dm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAgKiB2bjE7CisKKyAgICB3aGlsZSAocTAgPj0ga0hh
bGZEaWdpdEJhc2UgfHwgcTAgKiB2bjAgPiByaGF0ICoga0hhbGZEaWdpdEJhc2UgKyB1bjApIHsK
KyAgICAgICAgcTAtLTsKKyAgICAgICAgcmhhdCArPSB2bjE7CisgICAgICAgIGlmIChyaGF0ID49
IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmVtYWlu
ZGVyID0gKHVuMjEgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMCAtIHEwICogZGl2aXNvcikgPj4gczsK
KyAgICByZXR1cm4gcTEgKiBrSGFsZkRpZ2l0QmFzZSArIHEwOworI2VuZGlmCit9CisKKy8vIE11
bHRpcGxpZXMge3NvdXJjZX0gd2l0aCB7ZmFjdG9yfSBhbmQgYWRkcyB7c3VtbWFuZH0gdG8gdGhl
IHJlc3VsdC4KKy8vIHtyZXN1bHR9IGFuZCB7c291cmNlfSBtYXkgYmUgdGhlIHNhbWUgQmlnSW50
IGZvciBpbnBsYWNlIG1vZGlmaWNhdGlvbi4KK3ZvaWQgSlNCaWdJbnQ6OmludGVybmFsTXVsdGlw
bHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCBpbnQg
biwgSlNCaWdJbnQqIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoc291cmNlLT5sZW5ndGgoKSA+PSBu
KTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA+PSBuKTsKKworICAgIERpZ2l0IGNhcnJ5
ID0gc3VtbWFuZDsKKyAgICBEaWdpdCBoaWdoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG47IGkrKykgeworICAgICAgICBEaWdpdCBjdXJyZW50ID0gc291cmNlLT5kaWdpdChpKTsKKyAg
ICAgICAgRGlnaXQgbmV3Q2FycnkgPSAwOworCisgICAgICAgIC8vIENvbXB1dGUgdGhpcyByb3Vu
ZCdzIG11bHRpcGxpY2F0aW9uLgorICAgICAgICBEaWdpdCBuZXdIaWdoID0gMDsKKyAgICAgICAg
Y3VycmVudCA9IGRpZ2l0TXVsKGN1cnJlbnQsIGZhY3RvciwgbmV3SGlnaCk7CisKKyAgICAgICAg
Ly8gQWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJyZW50ID0gZGlnaXRB
ZGQoY3VycmVudCwgaGlnaCwgbmV3Q2FycnkpOworICAgICAgICBjdXJyZW50ID0gZGlnaXRBZGQo
Y3VycmVudCwgY2FycnksIG5ld0NhcnJ5KTsKKworICAgICAgICAvLyBTdG9yZSByZXN1bHQgYW5k
IHByZXBhcmUgZm9yIG5leHQgcm91bmQuCisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwgY3Vy
cmVudCk7CisgICAgICAgIGNhcnJ5ID0gbmV3Q2Fycnk7CisgICAgICAgIGhpZ2ggPSBuZXdIaWdo
OworICAgIH0KKworICAgIGlmIChyZXN1bHQtPmxlbmd0aCgpID4gbikgeworICAgICAgICByZXN1
bHQtPnNldERpZ2l0KG4rKywgY2FycnkgKyBoaWdoKTsKKworICAgICAgICAvLyBDdXJyZW50IGNh
bGxlcnMgZG9uJ3QgcGFzcyBpbiBzdWNoIGxhcmdlIHJlc3VsdHMsIGJ1dCBsZXQncyBiZSByb2J1
c3QuCisgICAgICAgIHdoaWxlIChuIDwgcmVzdWx0LT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJl
c3VsdC0+c2V0RGlnaXQobisrLCAwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIShjYXJyeSArIGhpZ2gpKTsKK30KKworYm9vbCBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludChK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCit7CisgICAgaWYgKHgtPnNpZ24oKSAhPSB5LT5zaWdu
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh4LT5sZW5ndGgoKSAhPSB5LT5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCB4LT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICh4LT5kaWdpdChpKSAhPSB5LT5kaWdp
dChpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLy8gRGl2aWRlcyB7eH0gYnkge2Rpdmlzb3J9LCByZXR1cm5pbmcgdGhlIHJlc3Vs
dCBpbiB7cXVvdGllbnR9IGFuZCB7cmVtYWluZGVyfS4KKy8vIE1hdGhlbWF0aWNhbGx5LCB0aGUg
Y29udHJhY3QgaXM6CisvLyBxdW90aWVudCA9ICh4IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IsIHdp
dGggMCA8PSByZW1haW5kZXIgPCBkaXZpc29yLgorLy8gSWYge3F1b3RpZW50fSBpcyBhbiBlbXB0
eSBoYW5kbGUsIGFuIGFwcHJvcHJpYXRlbHkgc2l6ZWQgQmlnSW50IHdpbGwgYmUKKy8vIGFsbG9j
YXRlZCBmb3IgaXQ7IG90aGVyd2lzZSB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgaXQgaXMg
YmlnIGVub3VnaC4KKy8vIHtxdW90aWVudH0gY2FuIGJlIHRoZSBzYW1lIGFzIHt4fSBmb3IgYW4g
aW4tcGxhY2UgZGl2aXNpb24uIHtxdW90aWVudH0gY2FuCisvLyBhbHNvIGJlIG51bGxwdHIgaWYg
dGhlIGNhbGxlciBpcyBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJlbWFpbmRlci4KK3ZvaWQgSlNC
aWdJbnQ6OmFic29sdXRlRGl2U21hbGwoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0ludCogeCwgRGln
aXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcikKK3sKKyAg
ICBBU1NFUlQoZGl2aXNvcik7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFTU0VS
VCgheC0+aXNaZXJvKCkpOworICAgIHJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRpdmlzb3IgPT0g
MSkgeworICAgICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICpxdW90
aWVudCA9IHg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0geC0+
bGVuZ3RoKCk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKCpx
dW90aWVudCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
KGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAx
OyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFpbmRl
ciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgICAgICAgICAoKnF1b3Rp
ZW50KS0+c2V0RGlnaXQoaSwgcSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBm
b3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICBkaWdpdERp
dihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgIH0KK30K
KworLy8gTG9va3VwIHRhYmxlIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2YgYml0cyByZXF1aXJl
ZCBwZXIgY2hhcmFjdGVyIG9mIGEKKy8vIGJhc2UtTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Yg
YSBudW1iZXIuIFRvIGluY3JlYXNlIGFjY3VyYWN5LCB0aGUgYXJyYXkKKy8vIHZhbHVlIGlzIHRo
ZSBhY3R1YWwgdmFsdWUgbXVsdGlwbGllZCBieSAzMi4gVG8gZ2VuZXJhdGUgdGhpcyB0YWJsZToK
Ky8vIGZvciAodmFyIGkgPSAwOyBpIDw9IDM2OyBpKyspIHsgcHJpbnQoTWF0aC5jZWlsKE1hdGgu
bG9nMihpKSAqIDMyKSArICIsIik7IH0KK2NvbnN0ZXhwciB1aW50OF90IE1heEJpdHNQZXJDaGFy
W10gPSB7CisgICAgMCwgICAwLCAgIDMyLCAgNTEsICA2NCwgIDc1LCAgODMsICA5MCwgIDk2LCAv
LyAwLi44CisgICAgMTAyLCAxMDcsIDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAv
LyA5Li4xNgorICAgIDEzMSwgMTM0LCAxMzYsIDEzOSwgMTQxLCAxNDMsIDE0NSwgMTQ3LCAgICAg
Ly8gMTcuLjI0CisgICAgMTQ5LCAxNTEsIDE1MywgMTU0LCAxNTYsIDE1OCwgMTU5LCAxNjAsICAg
ICAvLyAyNS4uMzIKKyAgICAxNjIsIDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIDMzLi4zNgorfTsKKworc3RhdGljIGNvbnN0IGludCBCaXRzUGVyQ2hhclRhYmxlU2hp
ZnQgPSA1Oworc3RhdGljIGNvbnN0IHNpemVfdCBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciA9
IDF1IDw8IEJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKworLy8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJv
eGltYXRpb24gb2YpIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisvLyBEaXZp
ZGUgYml0IGxlbmd0aCBvZiB0aGUgQmlnSW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIgY2hh
cmFjdGVyLgordWludDY0X3QgSlNCaWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVx
dWlyZWQoaW50IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2lnbikK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NChsYXN0
RGlnaXQpOworI2Vsc2UKKyAgICBpbnQgbGVhZGluZ1plcm9zID0gY2x6MzIobGFzdERpZ2l0KTsK
KyNlbmRpZgorICAgIHNpemVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBEaWdpdEJpdHMgLSBsZWFk
aW5nWmVyb3M7CisKKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBiaXRzIHdlIGNhbiByZXByZXNl
bnQgd2l0aCBvbmUgY2hhcmFjdGVyLiBXZSdsbCB1c2UgdGhpcworICAgIC8vIHRvIGZpbmQgYW4g
YXBwcm9wcmlhdGUgY2h1bmsgc2l6ZSBiZWxvdy4KKyAgICB1aW50OF90IG1heEJpdHNQZXJDaGFy
ID0gTWF4Qml0c1BlckNoYXJbcmFkaXhdOworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVzdWx0
IGxlbmd0aCwgd2UgaGF2ZSB0byBiZSBwZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAgLy8g
dGhlIG1pbmltdW0gbnVtYmVyIG9mIGJpdHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50Lgor
ICAgIHVpbnQ4X3QgbWluQml0c1BlckNoYXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAgICAv
LyBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgY29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBhdm9p
ZCBvdmVyZmxvd3MuCisgICAgdWludDY0X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9IGJp
dExlbmd0aDsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICo9IEJpdHNQZXJDaGFyVGFi
bGVNdWx0aXBsaWVyOworCisgICAgLy8gUm91bmQgdXAuCisgICAgbWF4aW11bUNoYXJhY3RlcnNS
ZXF1aXJlZCArPSBtaW5CaXRzUGVyQ2hhciAtIDE7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1
aXJlZCAvPSBtaW5CaXRzUGVyQ2hhcjsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICs9
IHNpZ247CisgICAgCisgICAgcmV0dXJuIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQ7Cit9CisK
K1N0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJ
bnQqIHgsIGludCByYWRpeCkKK3sKKyAgICBTdHJpbmdWZWN0b3I8TENoYXI+IHJlc3VsdFN0cmlu
ZzsKKworICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQo
IXgtPmlzWmVybygpKTsKKworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBib29s
IHNpZ24gPSB4LT5zaWduKCk7CisKKyAgICB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4Qml0
c1BlckNoYXJbcmFkaXhdOworICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQg
PSBjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGxlbmd0aCwgcmFkaXgsIHgtPmRp
Z2l0KGxlbmd0aCAtIDEpLCBzaWduKTsKKworICAgIGlmIChtYXhpbXVtQ2hhcmFjdGVyc1JlcXVp
cmVkID4gSlNTdHJpbmc6Ok1heExlbmd0aCkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KFdURk1vdmUo
cmVzdWx0U3RyaW5nKSk7CisgICAgfQorCisgICAgRGlnaXQgbGFzdERpZ2l0OworICAgIGlmIChs
ZW5ndGggPT0gMSkKKyAgICAgICAgbGFzdERpZ2l0ID0geC0+ZGlnaXQoMCk7CisgICAgZWxzZSB7
CisgICAgICAgIGludCBjaHVua0NoYXJzID0gRGlnaXRCaXRzICogQml0c1BlckNoYXJUYWJsZU11
bHRpcGxpZXIgLyBtYXhCaXRzUGVyQ2hhcjsKKyAgICAgICAgRGlnaXQgY2h1bmtEaXZpc29yID0g
ZGlnaXRQb3cocmFkaXgsIGNodW5rQ2hhcnMpOworCisgICAgICAgIC8vIEJ5IGNvbnN0cnVjdGlv
biBvZiBjaHVua0NoYXJzLCB0aGVyZSBjYW4ndCBoYXZlIGJlZW4gb3ZlcmZsb3cuCisgICAgICAg
IEFTU0VSVChjaHVua0Rpdmlzb3IpOworICAgICAgICBpbnQgbm9uWmVyb0RpZ2l0ID0gbGVuZ3Ro
IC0gMTsKKyAgICAgICAgQVNTRVJUKHgtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworCisgICAgICAg
IC8vIHtyZXN0fSBob2xkcyB0aGUgcGFydCBvZiB0aGUgQmlnSW50IHRoYXQgd2UgaGF2ZW4ndCBs
b29rZWQgYXQgeWV0LgorICAgICAgICAvLyBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCAicmVtYWlu
ZGVyIiEKKyAgICAgICAgSlNCaWdJbnQqIHJlc3QgPSBudWxscHRyOworCisgICAgICAgIC8vIElu
IHRoZSBmaXJzdCByb3VuZCwgZGl2aWRlIHRoZSBpbnB1dCwgYWxsb2NhdGluZyBhIG5ldyBCaWdJ
bnQgZm9yCisgICAgICAgIC8vIHRoZSByZXN1bHQgPT0gcmVzdDsgZnJvbSB0aGVuIG9uIGRpdmlk
ZSB0aGUgcmVzdCBpbi1wbGFjZS4KKyAgICAgICAgSlNCaWdJbnQqKiBkaXZpZGVuZCA9ICZ4Owor
ICAgICAgICBkbyB7CisgICAgICAgICAgICBEaWdpdCBjaHVuazsKKyAgICAgICAgICAgIGFic29s
dXRlRGl2U21hbGwoZXhlYywgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVuayk7
CisgICAgICAgICAgICBBU1NFUlQocmVzdCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0gJnJl
c3Q7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgewor
ICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbY2h1bmsgJSBy
YWRpeF0pOworICAgICAgICAgICAgICAgIGNodW5rIC89IHJhZGl4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUKCFjaHVuayk7CisKKyAgICAgICAgICAgIGlmICghcmVzdC0+ZGln
aXQobm9uWmVyb0RpZ2l0KSkKKyAgICAgICAgICAgICAgICBub25aZXJvRGlnaXQtLTsKKworICAg
ICAgICAgICAgLy8gV2UgY2FuIG5ldmVyIGNsZWFyIG1vcmUgdGhhbiBvbmUgZGlnaXQgcGVyIGl0
ZXJhdGlvbiwgYmVjYXVzZQorICAgICAgICAgICAgLy8gY2h1bmtEaXZpc29yIGlzIHNtYWxsZXIg
dGhhbiBtYXggZGlnaXQgdmFsdWUuCisgICAgICAgICAgICBBU1NFUlQocmVzdC0+ZGlnaXQobm9u
WmVyb0RpZ2l0KSk7CisgICAgICAgIH0gd2hpbGUgKG5vblplcm9EaWdpdCA+IDApOworCisgICAg
ICAgIGxhc3REaWdpdCA9IHJlc3QtPmRpZ2l0KDApOworICAgIH0KKworICAgIGRvIHsKKyAgICAg
ICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tsYXN0RGlnaXQgJSByYWRpeF0pOwor
ICAgICAgICBsYXN0RGlnaXQgLz0gcmFkaXg7CisgICAgfSB3aGlsZSAobGFzdERpZ2l0ID4gMCk7
CisgICAgQVNTRVJUKHJlc3VsdFN0cmluZy5zaXplKCkpOworICAgIEFTU0VSVChyZXN1bHRTdHJp
bmcuc2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bUNoYXJhY3RlcnNSZXF1aXJl
ZCkpOworCisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgorICAgIGludCBuZXdTaXplTm9M
ZWFkaW5nWmVyb2VzID0gcmVzdWx0U3RyaW5nLnNpemUoKTsKKyAgICB3aGlsZSAobmV3U2l6ZU5v
TGVhZGluZ1plcm9lcyAgPiAxICYmIHJlc3VsdFN0cmluZ1tuZXdTaXplTm9MZWFkaW5nWmVyb2Vz
IC0gMV0gPT0gJzAnKQorICAgICAgICBuZXdTaXplTm9MZWFkaW5nWmVyb2VzLS07CisKKyAgICBy
ZXN1bHRTdHJpbmcuc2hyaW5rKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMpOworCisgICAgaWYgKHNp
Z24pCisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoJy0nKTsKKworICAgIHN0ZDo6cmV2ZXJz
ZShyZXN1bHRTdHJpbmcuYmVnaW4oKSwgcmVzdWx0U3RyaW5nLmVuZCgpKTsKKworICAgIHJldHVy
biBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworfQorCit2b2lkIEpT
QmlnSW50OjpyaWdodFRyaW0oVk0mIHZtKQoreworICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaW50IG5vblplcm9JbmRleCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3aGls
ZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIWRpZ2l0KG5vblplcm9JbmRleCkpCisgICAgICAgIG5v
blplcm9JbmRleC0tOworCisgICAgaWYgKG5vblplcm9JbmRleCA9PSBtX2xlbmd0aCAtIDEpCisg
ICAgICAgIHJldHVybjsKKworICAgIGludCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOwor
ICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9kYXRh
LmtpbmQpLnRyeUFsbG9jYXRlKHNpemVGb3IobmV3TGVuZ3RoKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoYmFja2luZ1N0b3JlKTsKKyAgICBEaWdpdCogZGF0YSA9IHN0YXRpY19jYXN0PERpZ2l0Kj4o
YmFja2luZ1N0b3JlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKQor
ICAgICAgICBkYXRhW2ldID0gZGlnaXQoaSk7CisKKyAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBk
YXRhKTsKKyAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50
OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IHJhZGl4LCBpbnQgY2hh
cmNvdW50KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4IDw9IDM2KTsKKyAgICBB
U1NFUlQoY2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNoYXJbcmFk
aXhdOworICAgIHNpemVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2hhcmNvdW50KTsK
KyAgICBjb25zdCBpbnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyIC0gMTsK
KyAgICBpZiAoY2hhcnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBy
b3VuZHVwKSAvIGJpdHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVfdCBiaXRzTWluID0gYml0c1Bl
ckNoYXIgKiBjaGFyczsKKworICAgICAgICAvLyBEaXZpZGUgYnkgMzIgKHNlZSB0YWJsZSksIHJv
dW5kaW5nIHVwLgorICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4gKyByb3VuZHVwKSA+PiBCaXRz
UGVyQ2hhclRhYmxlU2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWluIDw9IHN0YXRpY19jYXN0PHNp
emVfdD4oTWF4SW50KSkgeworICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCBy
b3VuZGluZyB1cC4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAoc3RhdGljX2Nhc3Q8aW50Pihi
aXRzTWluKSArIERpZ2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOworICAgICAgICAgICAgaWYgKGxl
bmd0aCA8PSBNYXhMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmNyZWF0ZShleGVjLCB2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGV4ZWMp
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxs
KTsKKyAgICBzaXplX3QgYnVmZmVyRXN0aW1hdGVkU2l6ZSA9IHRoaXNPYmplY3QtPm1fbGVuZ3Ro
ICogRGlnaXRTaXplOworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGwpICsgYnVm
ZmVyRXN0aW1hdGVkU2l6ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjcwY2MxZjVmODY3YWQwMDVi
ZmI5ZmE0MTlkYmM1MDc0Y2M5OTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTQmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKwor
ICAgIGZyaWVuZCBjbGFzcyBCaWdJbnRJbXBsOworCitwdWJsaWM6CisgICAgSlNCaWdJbnQoVk0m
LCBTdHJ1Y3R1cmUqLCBpbnQgY3JlYXRlV2l0aExlbmd0aCk7CisKKyAgICB2b2lkIGluaXRpYWxp
emUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNp
emUoSlNDZWxsKik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlWmVybyhFeGVjU3RhdGUqLCBWTSYpOworCisgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBpbnQgY3JlYXRlV2l0aExlbmd0aCk7CisKKyAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
LCBWTSYpOworCisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2lnbihib29sIHNpZ24pIHsgbV9z
aWduID0gc2lnbjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbjsgfQor
CisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQor
ICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgc3RkOjpv
cHRpb25hbDx1aW50OF90PiB0b1N0cmluZ09uZURpZ2l0KCk7CisKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCk7
CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIGludCByYWRpeCk7CisgICAg
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxUb0JpZ0ludChKU0JpZ0lu
dCogeCwgSlNCaWdJbnQqIHkpOworCitwcml2YXRlOgorICAgIHVzaW5nIERpZ2l0ID0gdWludHB0
cl90OworICAgIHN0YXRpYyBjb25zdCBpbnQgQml0c1BlckJ5dGUgPSA4OworICAgIHN0YXRpYyBj
b25zdCBpbnQgRGlnaXRTaXplID0gc2l6ZW9mKERpZ2l0KTsKKyAgICBzdGF0aWMgY29uc3QgaW50
IERpZ2l0Qml0cyA9IERpZ2l0U2l6ZSAqIEJpdHNQZXJCeXRlOworICAgIHN0YXRpYyBjb25zdCBp
bnQgSGFsZkRpZ2l0Qml0cyA9IERpZ2l0Qml0cyAvIDI7CisgICAgc3RhdGljIGNvbnN0IERpZ2l0
IEhhbGZEaWdpdE1hc2sgPSAoMXVsbCA8PCBIYWxmRGlnaXRCaXRzKSAtIDE7CisgICAgc3RhdGlj
IGNvbnN0IGludCBNYXhJbnQgPSAweDdGRkZGRkZGOworICAgIAorICAgIC8vIFRoZSBtYXhpbXVt
IGxlbmd0aCB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHdvdWxkIGJl
CisgICAgLy8gTWF4SW50IC8gRGlnaXRCaXRzLiBIb3dldmVyLCB3ZSB1c2UgYSBsb3dlciBsaW1p
dCBmb3Igbm93LCBiZWNhdXNlCisgICAgLy8gcmFpc2luZyBpdCBsYXRlciBpcyBlYXNpZXIgdGhh
biBsb3dlcmluZyBpdC4KKyAgICAvLyBTdXBwb3J0IHVwIHRvIDEgbWlsbGlvbiBiaXRzLgorICAg
IHN0YXRpYyBjb25zdCBpbnQgTWF4TGVuZ3RoID0gMTAyNCAqIDEwMjQgLyAoc2l6ZW9mKHZvaWQq
KSAqIEJpdHNQZXJCeXRlKTsKKyAgICAKKyAgICBzdGF0aWMgdWludDY0X3QgY2FsY3VsYXRlTWF4
aW11bUNoYXJhY3RlcnNSZXF1aXJlZChpbnQgbGVuZ3RoLCBpbnQgcmFkaXgsIERpZ2l0IGxhc3RE
aWdpdCwgYm9vbCBzaWduKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdlNtYWxs
KEV4ZWNTdGF0ZSosIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3Rp
ZW50LCBEaWdpdCYgcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbE11bHRpcGx5
QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50LCBK
U0JpZ0ludCogcmVzdWx0KTsKKworICAgIC8vIERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KKyAg
ICBzdGF0aWMgRGlnaXQgZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KTsK
KyAgICBzdGF0aWMgRGlnaXQgZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGJvcnJv
dyk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBo
aWdoKTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBE
aWdpdCBkaXZpc29yLCBEaWdpdCYgcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRQ
b3coRGlnaXQgYmFzZSwgRGlnaXQgZXhwb25lbnQpOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiwgSlNCaWdJbnQqLCBpbnQgcmFkaXgpOworCisgICAgYm9v
bCBpc1plcm8oKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgICBzdGF0
aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBDaGFyVHlwZSog
ZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRpeCwgYm9vbCBhbGxvd0Vt
cHR5U3RyaW5nID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPj0gMCk7Cisg
ICAgICAgIGludCBwID0gc3RhcnRJbmRleDsKKworICAgICAgICBpZiAoIWFsbG93RW1wdHlTdHJp
bmcgJiYgc3RhcnRJbmRleCA9PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCisgICAgICAgIHdoaWxlIChwIDwg
bGVuZ3RoICYmIGRhdGFbcF0gPT0gJzAnKQorICAgICAgICAgICAgKytwOworCisgICAgICAgIGlu
dCBlbmRJbmRleCA9IGxlbmd0aCAtIDE7CisgICAgICAgIC8vIFJlbW92aW5nIHRyYWlsaW5nIHNw
YWNlcworICAgICAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0
YVtlbmRJbmRleF0pKQorICAgICAgICAgICAgLS1lbmRJbmRleDsKKworICAgICAgICBsZW5ndGgg
PSBlbmRJbmRleCArIDE7CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZVplcm8oZXhlYywgdm0pOworCisgICAgICAgIGludCBsaW1pdDAgPSAnMCcg
KyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgICAgICBpbnQgbGltaXRhID0gJ2EnICsg
KHJhZGl4IC0gMTApOworICAgICAgICBpbnQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0gMTApOwor
CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihleGVjLCB2bSwgcmFkaXgs
IGxlbmd0aCAtIHApOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIHJlc3VsdC0+aW5pdGlhbGl6ZSh0cnVlKTsKKworICAgICAgICBm
b3IgKGludCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKKyAgICAgICAgICAgIHVpbnQz
Ml90IGRpZ2l0OworICAgICAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRhdGFbaV0gPCBs
aW1pdDApCisgICAgICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAnOworICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKKyAgICAgICAg
ICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGln
aXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4ocmFkaXgpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGRpZ2l0KSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgIHJl
c3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZNJiwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50
KTsKKworICAgIHZvaWQgcmlnaHRUcmltKFZNJik7CisKKyAgICB2b2lkIGlucGxhY2VNdWx0aXBs
eUFkZChEaWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKworICAgIERpZ2l0IGRpZ2l0KGlu
dCBuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVuZ3RoKCkpOworICAg
ICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgRGlnaXQqIGRhdGFQdHIgPSBtX2RhdGEuZ2V0
KCk7CisgICAgICAgIHJldHVybiBkYXRhUHRyW25dOworICAgIH0KKworICAgIHZvaWQgc2V0RGln
aXQoaW50IG4sIERpZ2l0IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG4gPj0gMCAmJiBu
IDwgbGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgRGlnaXQqIGRp
Z2l0UHRyID0gbV9kYXRhLmdldCgpOworICAgICAgICBkaWdpdFB0cltuXSA9IHZhbHVlOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNpemVGb3IoaW50IGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBsZW5ndGggKiBEaWdpdFNpemU7CisgICAgfQorCisgICAgYm9vbCBtX3NpZ247
CisgICAgaW50IG1fbGVuZ3RoOworICAgIENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0
aXZlLCBEaWdpdD4gbV9kYXRhOworfTsKKworaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1Zh
bHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCmluZGV4IGQwMzA0NTIyMGQ1ZTk1MjY3ZWQ5ZjhmN2I5ZDMzNjVhODMxNzlkZDMuLjc2NDE1
ZjM0NDAzNzY5ZGFmYjljNjM0YTc0MTc3MmViYmNlY2QwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CkBAIC02OCwxMSArNjksMTcgQEAgZG91YmxlIEpTVmFsdWU6OnRvTGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIAogZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFp
c0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+
dG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGlzVHJ1ZSgpKQogICAgICAgICByZXR1cm4gMS4wOwor
ICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIkNvbnZlcnRpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBu
b3QgYWxsb3dlZC4iKSk7CisgICAgICAgIHJldHVybiBQTmFOOworICAgIH0KICAgICByZXR1cm4g
aXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQg
dG8gMC4KIH0KIApAQCAtMzc2LDYgKzM4MywxMyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJp
bmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycgog
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFs
dWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJp
Z0ludCA9IGFzQmlnSW50KCp0aGlzKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBk
aWdpdCA9IGJpZ0ludC0+dG9TdHJpbmdPbmVEaWdpdCgpOworICAgICAgICBpZiAoZGlnaXQpCisg
ICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygq
ZGlnaXQgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgYmln
SW50LT50b1N0cmluZyhleGVjLCAxMCkpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJT
dHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4
IGMyNGVhNWJiZjM1NDdiNGZmZDQ1ZGVlYmE2ZGU0MWYyNjE5NmUzOGUuLjlmMzlhM2M3ZGUwNzdk
MjNkZTAyZGIxOTJhYTQzZDIwZTIwMjdkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0FueUludCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlz
U3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNT
eW1ib2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggYTI3ZjZhMTExYmJkNWJjZWViYTIzY2ZjZjI4
M2ZmZDVmYTEwNGM3Ny4uMDFlYTJkYjgxYzlkZmRmY2VjZTQxNTUxZWMwZmUzOWU1ZGVhYTQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2lu
Y2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTU3OCw2ICs1NzksMTEg
QEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBpc0Nl
bGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNC
aWdJbnQoKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewog
ICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTcxOSw2ICs3
MjUsNyBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlcihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICAgaWYgKGlzRG91Ymxl
KCkpCiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpOworCiAgICAgcmV0dXJuIHRvTnVtYmVyU2xv
d0Nhc2UoZXhlYyk7CiB9CiAKQEAgLTEwMjAsNiArMTAyNyw4IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCkt
PmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFz
U3RyaW5nKHYyKSk7CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KGFzQmlnSW50KHYxLmFzQ2VsbCgp
KSwgYXNCaWdJbnQodjIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZThhYzBlZTdm
YmMxYmMzNTc5ZWU2M2Y1Y2IxNmE5NjA4MzcuLjc5NGJjNzdlMjAyMWYwMzM1NGFhNjYxNDIzM2Nk
ZDU5NWRjYTBiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMTU1LDYgKzE1NSw4IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBw
cmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRU
eXBlKTsKKyAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2
ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKIH0KIApAQCAtMTgxLDYgKzE4Myw4IEBAIEpTT2JqZWN0
KiBKU0NlbGw6OnRvT2JqZWN0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvCiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChl
eGVjLCBnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDlmYzBj
OWIwOTQwMTY0MGZiMTVkNTI1MWE0MTdlYjg0ODYwZDZjY2QuLjcxZjk5ZDk3Y2Y1Y2QyOTFjY2U1
YzM1NGNhOWFjNjJiOTQ5NzViMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5
aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmln
SW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNPYmpl
Y3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNTcwZjA5NGJhZDRi
MDdhMTFhZWUyMDYwN2RlMGE3NjgxZjdmZGMzZS4uOTgzNmIzNDcwNWUwYTc1NjAwNDc5NjMxODll
YmRmYTgzNzc3NjU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaApAQCAtMjAxLDYgKzIwMSwxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3Ry
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKK2lubGlu
ZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0g
QmlnSW50VHlwZTsKK30KKwogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTeW1ib2xUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGYxODI1ZTllNjJiZTUyMmRi
MWVlYWE0MmE2NmViZWI4OGRiOTk4OGEuLjI4YTkyODA0MGQ2ZmNjMjNlNzkzMThhYTczMjBlYzVl
NTk0M2YxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0bwog
bV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsg
XAogCiAgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShDUkVBVEVfQ09OU1RSVUNUT1Jf
Rk9SX1NJTVBMRV9UWVBFKQotICAgIAorCiAjdW5kZWYgQ1JFQVRFX0NPTlNUUlVDVE9SX0ZPUl9T
SU1QTEVfVFlQRQogCiAgICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZXJyb3JD
b25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDg1
MzU2ZDM5NzdhZWQ1YzczYjg5YWZmMDVjOTdjMjQyZjk1YmI0ZWEuLjU3N2QxOGUwMjVjMTFhOTky
Y2UxNmM4NTBjYjIyMThlMjFjNmMwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCkBAIC0zMyw2ICszMyw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgQ2Vs
bFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKICAgICBTeW1ib2xUeXBlLAorICAgIEJpZ0ludFR5cGUs
CiAKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlLAogICAgIEFQSVZhbHVlV3JhcHBlclR5cGUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggZThmMzE2
Y2Y0MmI4ZTkyODlmY2EwODliNDgzMTIxNWI3YTMwMjAzMy4uMGZkYzdjMzU2NWNlOGFiMWRkZWM1
MWRlZmQ0Y2YzODUyYzM5OTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaApAQCAtNjYsNiArNjYsMjUgQEAgaW5saW5lIGludCBjbHozMih1aW50MzJfdCBu
dW1iZXIpCiAjZW5kaWYKIH0KIAoraW5saW5lIGludCBjbHo2NCh1aW50NjRfdCBudW1iZXIpCit7
CisjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIGludCB6ZXJvQ291bnQgPSA2NDsKKyAg
ICBpZiAobnVtYmVyKQorICAgICAgICB6ZXJvQ291bnQgPSBfX2J1aWx0aW5fY2x6bGwobnVtYmVy
KTsKKyAgICByZXR1cm4gemVyb0NvdW50OworI2Vsc2UKKyAgICBpbnQgemVyb0NvdW50ID0gMDsK
KyAgICBmb3IgKGludCBpID0gNjM7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlmICghKG51bWJl
ciA+PiBpKSkKKyAgICAgICAgICAgIHplcm9Db3VudCsrOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbmRpZgorfQorCiAv
LyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41
IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlk
ZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCiAvLyBvZiB0
aGUgcmVzdWx0aW5nIGJpdC1wYXR0ZXJuIChhcyBzdWNoIHRoaXMgbWV0aG9kIGlzIGFsc28gY2Fs
bGVkIHRvIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNTUwYjhmNzBkN2M3NzJiMThmOWI2NDcyOTA1YTY0Yjdm
NzkwZTBiYi4uYTYzZDAxZTRkOGJkYWY4ZDljOWE0NjEyMDdiNWI0MmEwODc0NTA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJQYXJzZUludC5o
IgogI2luY2x1ZGUgIlVpbnQxNldpdGhGcmFjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTEzOSw5ICsxNDAsNiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbG93LCBpbgogLy8gZm8gYW55IG51bWJlciBvZiBkaWdpdHMgYW4gSUVFRSBudW1i
ZXIgbWF5IHJlcXVpcmUgdG8gcmVwcmVzZW50LgogdHlwZWRlZiBjaGFyIFJhZGl4QnVmZmVyWzIx
ODBdOwogCi0vLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlp
bmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2Lgotc3RhdGljIGNvbnN0IGNoYXIgcmFkaXhE
aWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotCiBzdGF0
aWMgaW5saW5lIGNoYXIqIGludDUyVG9TdHJpbmdXaXRoUmFkaXgoY2hhciogc3RhcnRPZlJlc3Vs
dFN0cmluZywgaW50NjRfdCBpbnQ1MlZhbHVlLCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICBib29s
IG5lZ2F0aXZlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuY3BwCmluZGV4IDZkMTA1NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAu
Ljk3Y2ZhMDdhOTY5NDAyMjI1NmM5YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpT
VmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5n
U3RyaW5nKCk7CiAgICAgaWYgKHYuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxs
U3RyaW5ncy5zeW1ib2xTdHJpbmcoKTsKKyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLmJpZ2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0
KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAv
LyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApA
QCAtMTEyLDcgKzExNCw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBK
U1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdU
eXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8
IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09i
amVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKaW5kZXggNzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJh
MzI3ZjBkNWQyZDYwMDYyYWIzNTRkZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29s
IGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9y
V2FzbUNvbnRleHQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4
dCBpbiBmYXN0IFRMUy4gSWYgZmFsc2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikg
XAogICAgIHYoYm9vbCwgdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hl
IFdhc20gdG8gSlMgY2FsbHMuIikgXAogICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwg
dHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFk
IGZlYXR1cmUuIikgXAorICAgIHYoYm9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNl
QXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxs
IHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhl
IGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilc
CiAgICAgdihib29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNy
ZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8g
c3RydWN0dXJlLiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1BhcnNlSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCmlu
ZGV4IGU0Nzk1ZWM0YWY1OTkzODI4NDZmNGNkNzEyMjg1MGYyYzY4MjgwNzQuLmYzMTAxNTg2M2Rk
ZjdkYTFlY2QwN2Y5MmVhZmI5MDhjZmI3ODU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUGFyc2VJbnQuaApAQCAtMjI2LDQgKzIyNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKFN0cmluZ1Zp
ZXcpCiAgICAgcmV0dXJuIGNhbGxiYWNrKHZpZXdXaXRoU3RyaW5nLnZpZXcpOwogfQogCisvLyBN
YXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1
ZSwgZm9yIHJhZGl4IDIuLjM2LgorY29uc3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAxMjM0NTY3
ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaAppbmRleCAxMmY0NTNl
NzYwMWIyZmFhNjdiOWVmYmVhNDAwMWRmMDBjOWYxNWQ3Li40ZWQxMWY4ZmVkMmM4YzRiZmYwZTQy
Yzg1NjIwYmFjMDE3ZDhkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm90b3R5cGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVLZXkuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworCiBjbGFzcyBQcm90b3R5cGVLZXkgewogcHVibGljOgog
ICAgIFByb3RvdHlwZUtleSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuaAppbmRleCA4NWQ0Y2IxNTU4NTgzZTgwMWI5ZDAxMGIwMTNjMzE2ZjZmOGQw
ZjM4Li44ODUwYzRhOWEzNDM5NGYxOGY3NWEzNWQ2N2JhM2E0NWExOWZlNDdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtNDAsNiArNDAsNyBA
QAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAgIG1hY3JvKHN0cmluZykgXAogICAgIG1hY3Jv
KHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkgXAogICAgIG1hY3JvKHRydWUpCiAKIG5hbWVz
cGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpGdW5jdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmluZygpOworICAgICAgICBjYXNlIFR5cGVvZlR5
cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVybiBiaWdpbnRTdHJpbmcoKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDQwNzVmZDc1YjBl
YjE4ZmNlOGE2MzJiYTI3Y2I3MzE2MjdkYTY2N2MuLjlmNTc4ZThhYmM1NDE2MDAzOTQxODU4YmFh
ZmIzMWM4OGU3MDc3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
YWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaApp
bmRleCA1Mzk3ZTgxN2YxMjdmMzVhZDY3Y2VhY2JhNmQyYjc5YjRkOWZlNTU1Li4yNTcwYjcyZTNi
YzRhMGM3ZmIyZGYzNzliZTlhZDAwYzJiZDhkYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWU1MjEwNzA5YTdm
NTQxNmE5ODJhN2M3NWMwYzMzNjFjMmQwMWNlOC4uM2JmY2Y1NzFmNGE4N2EzMWViZjkwNWQ2OGQ0
YjUyZDZkOGE1NWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaApAQCAtMjAzLDcgKzIwMyw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xU
eXBlKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKLQogfQog
CiBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlb2ZUeXBlLmNwcAppbmRleCBkYjE2MmI3ZjRmNGNlMjNmYjg4MDU2ZGRmNDFjNDhkZTMw
ZDU2NGNkLi5hYTNmZmE3YzM4MmUxMDVkNWRhZTRjMWE0ODM2MGQ0MGVmOGJiYzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcApAQCAtNTQsNiArNTQs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZW9mVHlwZSB0eXBl
KQogICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgIG91dC5wcmludCgiZnVu
Y3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50Ogor
ICAgICAgICBvdXQucHJpbnQoImJpZ2ludCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4MTIxOTJhNWE2MmViNjZiYzYxYjI4
MDhiNmY1MzVhNGVkOC4uOTY0ODVkMDJkMjQxYzZkYjc2MmNlODEwNmZmMjg1M2E2YzU5NzBiNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaApAQCAtMzEsNiAr
MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBlb2ZUeXBlIHsKICAgICBV
bmRlZmluZWQsCisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAgTnVtYmVyLAogICAgIFN0
cmluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiMjAwODU3M2ZlMDJh
NDVjZmVkMGVhNzUxYmUyZDVkZTk3ZTg0NTlhLi41OTdkYzUzYTA1MDAxMmRhYzc5MTA5MThmYzkw
NDIxOTIzOGVkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02Myw2
ICs2Myw3IEBACiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVl
V3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0yODAsNiArMjgxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc2V0SXRlcmF0b3JTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgYmlnSW50U3RydWN0
dXJlLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKIAogICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNTZXQ6OkJ1Y2tldFR5
cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBCdWNrZXQuc2V0KCp0
aGlzLCBKU01hcDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGI1NTRiMzUwZDQxODUxNWU0OGI2ZjhmY2MwZTg0ZWMw
MTcyNGY2MWEuLmNjNTQwYzM5ZmFjYWI5ZGYzNDEyYTY5NmI4ZGIzNzczMmQ0M2ZlOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzg4LDYgKzM4OCw3IEBAIHB1YmxpYzoKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHNldEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IG1hcEl0ZXJhdG9yU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVj
dHVyZTsKIAogICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsK
ICAgICBTdHJvbmc8SlNDZWxsPiBzZW50aW5lbFNldEJ1Y2tldDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOGY4OThjOWZjNGIxNzI5NmNjNzNi
ZTU2YTMzZjU2ZmQwNmI3NjliLi5hNmVhYjRhM2ZjM2EzMzIxZTA2NDAyZWVjYjZkY2ZhMjRhYjY4
OTM2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFs
cyBhbmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNy0xMS0xNiAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10g
VXBkYXRlIFdpbkNhaXJvUmVxdWlyZW1lbnRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpp
bmRleCA0MTFlOWE3NTMyMzg2OTI4OTJlOTM2MjA2ZmNjZTc0OWIxNzhlY2JkLi45YzAwNjI2MzU4
OTEwZDk2N2RlNDc4Yjc5YzJmOTIxYzUxMDMzNDcyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKQEAgLTYxNiw2ICs2MTYsMTAgQEAgZGVmIHJ1bkRlZmF1bHQoKm9wdGlvbmFsVGVzdFNw
ZWNpZmljT3B0aW9ucykKICAgICBydW4oImRlZmF1bHQiLCAqKEZUTF9PUFRJT05TICsgb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVuQmlnSW50RW5hYmxlZCgqb3B0
aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmlnLWludC1lbmFibGVkIiwgIi0t
dXNlQmlnSW50PXRydWUiICwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0
aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRp
b25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRMX09QVElPTlMgKyBOT19DSklU
X09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxZWQyMjM3Y2Rh
YTQxMzI0M2VlYmU0MGZhMmJhYWZiM2E1NjZlZTEuLjg5MjdkODZjMzBhYzFmYzg3ZWM1YWJmZGU1
NDRjNTUxM2EzYThkNTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50
IEJpZ0ludCBsaXRlcmFscyBhbmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogYmlnSW50VGVzdHMueWFtbDogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2JpZy1pbnQtbGFyZ2UtbnVtYmVyLW9vbS5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxpdGVy
YWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1N5
bnRheEVycm9yKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC10
eXBlLW9mLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisKIDIwMTctMTEtMTYgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
bWFyayByZWdyZXNzLTE3ODM4NS5qcyBhcyBtZW1vcnkgZXhoYXVzdGluZwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUyYjE3N2UyNjI2YzI1NDg4YzNhMjhkOTVkMTZlNzU0NjI1NzI1ZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKQEAgLTAsMCArMSwzMyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFByb3ZpZGVkIHRvIHNpbXBs
aWZ5IHJ1bm5pbmcgQmlnSW50IHRlc3RzLiBUbyBiZSByZW1vdmVkIG9uY2UgQmlnSW50CisjIGFy
ZSBubyBsb25nZXIgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLgorCistLS0KKy0gcGF0aDogc3RyZXNz
L2JpZy1pbnQtbGl0ZXJhbHMuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0gcGF0aDog
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sYXJnZS1udW1iZXItb29tLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sYXJnZS1udW1iZXItb29tLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZmYw
OTBjYmJjMzc1MzZjZWRhM2EyYzhjNDI0MmNhMTcyY2I4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWxhcmdlLW51bWJlci1vb20uanMKQEAgLTAsMCArMSwyMSBA
QAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAo
IWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIik7Cit9CisKK3ZhciBsb25nU3RyID0g
ImYiOworZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgKytpKQorICAgIGxvbmdTdHIgPSBsb25nU3Ry
ICsgbG9uZ1N0cjsKKworbGV0IHN1YiA9IGxvbmdTdHIuc3Vic3RyaW5nKDAsIGxvbmdTdHIubGVu
Z3RoIC0gNCkKK2xldCBtc2NyaXB0ID0gIjB4IiArIGxvbmdTdHIgKyBzdWIgKyAibiI7CisKK3Ry
eSB7CisgICAgZXZhbChtc2NyaXB0KTsKKyAgICBhc3NlcnQoZmFsc2UpOworfSBjYXRjaChlKSB7
CisgICAgYXNzZXJ0KGUubWVzc2FnZSA9PSAiT3V0IG9mIG1lbW9yeSIpCit9CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNDgwOTBiZWNjZDk3Y2RiNDdlNDk0ZTJh
MmFhYTQ5Y2RlM2E0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxpdGVyYWxzLmpzCkBAIC0wLDAgKzEsMTEzIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitm
dW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4RXJyb3Io
aW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0
KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2Yg
U3ludGF4RXJyb3IpOworICAgIH0KK30KKworLy8gVGVzdCAwIGNvbnZlcnNpb25zCitsZXQgbiA9
IDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworbiA9IDAwbjsKK2Fzc2VydChuID09PSAwbik7CisK
Ky8vIEJpbmFyeSByZXByZXNlbnRhdGlvbgorCituID0gMGIxMTExbjsKK2Fzc2VydChuID09PSAx
NW4pOworCituID0gMGIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCituID0gMGIwMTBuOworYXNz
ZXJ0KG4gPT09IDJuKTsKKworbGV0IGJpbmFyeVN0cmluZyA9ICIwYjEiOworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChi
aW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3
NDYwNzQzMTc2ODIxMTQ1Nm4pOworCituID0gMEIxMTExbjsKK2Fzc2VydChuID09PSAxNW4pOwor
CituID0gMEIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitiaW5hcnlTdHJpbmcgPSAiMEIxIjsK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsK
KworbiA9IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5
MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworLy8gT2N0YWwgcmVwcmVzZW50YXRp
b24KKworbiA9IDBvN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gMG8xMG47Cithc3NlcnQo
biA9PT0gOG4pOworCituID0gMG8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBvMDAw
MjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzduOworYXNzZXJ0KG4gPT09IDduKTsK
KworbiA9IDBPMTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4g
PT09IDE2bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCisvLyBIZXhhZGVj
aW1hbCByZXByZXNlbnRhdGlvbgorCituID0gMHhhbjsKK2Fzc2VydChuID09PSAxMG4pOworCitu
ID0gMHhmZm47Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweDAwMGZmbjsKK2Fzc2VydChu
ID09PSAyNTVuKTsKKworbiA9IDB4ZmFiY247Cithc3NlcnQobiA9PT0gNjQxODhuKTsKKworYXNz
ZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIw
Mm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMW5uIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIwbzg5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG8wOG4iKTsKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjBvN25uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGdu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweDBnbiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMHhmbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwMG5uIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIxYTBubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTBFMjBu
Iik7CisKK3RyeSB7CisgICAgZXZhbCgiLS0xMG4iKTsKKyAgICBhc3NlcnQoZmFsc2UpOworfSBj
YXRjaChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcik7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LXR5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUzY2QzMDEyNDZiOTU4ZjRjNmQ0
ZGExMWFmN2NkMGE2YjQwOTJhYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi5qcwpAQCAtMCwwICsxLDEwIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAor
CitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Fzc2VydCh0eXBlb2YgMG4gPT09ICJiaWdpbnQi
KTsKK2Fzc2VydCh0eXBlb2YgMW4gIT09ICJvYmplY3QiKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327519</attachid>
            <date>2017-11-23 19:08:59 -0800</date>
            <delta_ts>2017-11-24 20:31:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171124010856.patch</filename>
            <type>text/plain</type>
            <size>104574</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi40NThkMWVjM2QyYjcxYzll
Nzk2YmVhNDMwNmEwM2RlZDk5NTU2ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IG9uIEpTQmlnSW50OjptX2RhdGEgdG8KKyAg
ICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0
eSBhbmQgYWxsb3dpbmcKKyAgICAgICAgNjQtYml0d2lzZSAob3IgMzItYml0d2lzZSkgYXJpdGht
ZXRpYyBvcGVyYXRpb25zLiBKU0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24KKyAgICAgICAgdG8gc3Rv
cmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRhXV0gYW5kIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJh
Y2sgb2YgQmlnSW50IGxlbmd0aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxv
d2luZyB0aGUgVjggb25lLiBKU0JpZ0ludDo6bV9kYXRhIGFyZSBtYW5pcHVsYXRlZAorICAgICAg
ICBieSBKU0JpZ0ludDo6c2V0RGlnaXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0
KGluZGV4KSBvcGVyYXRpb25zLgorICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25z
IHRvIHN1cHBvcnQgYXJpdGhtZXRpY3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1w
b3J0YW50IHRvIG5vdGljZSB0aGF0IG9uIHRoaXMgcmVwcmVzZW50YXRpb24sIEpTQmlnSW50Ojpt
X2RhdGFbMF0gcmVwcmVzZW50cworICAgICAgICB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQg
YW5kIEpTQmlnSW50OjptX2RhdGFbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0Cisg
ICAgICAgIHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6Qmln
SW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJl
c3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZh
bHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpiaWdJ
bnRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yQWRkKToKKyAgICAgICAgKEpT
Qzo6UmVzdWx0VHlwZTo6Zm9yTG9naWNhbE9wKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCaWdJbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVplcm8pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRl
cm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldERpZ2l0KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAoSlNDOjphc0JpZ0ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9O
dW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xv
d0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9N
YXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUtleS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE3LTExLTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgZmVhdHVyZSBkZWZpbmUgZm9yIGFsdGVybmF0aXZlIHByZXNlbnRhdGlvbiBidXR0
b24gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWM0YTk5YmFiMDUw
ODA3ZTY3MjZlMTZiYjI1OWFkMDJiMjY0ZDcwLi5lZjI1MmMzYWQ3MzY1ZjM2NzZlYzQwMzY4ZWJl
NGQ3NzllYWJhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzkyLDcgKzc5
Miw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAv
KiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwotCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzczOEQxMUVEQjU2NzIw
MDNGMkIwQiAvKiBQYXJzZUludC5oICovOyB9OworCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIg
LyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3MzFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVy
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
Mjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMjk1Mjc0MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0
ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjksNiArMTEyOSw3IEBACiAJCTg2NzA0
Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAv
KiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1i
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBACiAJCTg2ODgwRjFC
MTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBK
U0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JpZ0ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYgLyog
SlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCaWdJ
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRBMDA4
NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0
NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBsaW5lRW5k
aW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0u
bW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1t
Lm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1t
bS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQt
bW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
LW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
Mi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
My5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0
LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcu
Y3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENB
IC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0
MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMz
MUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAv
KiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJCThCQzA2NDg5MUUx
QUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFBMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTg5OCwx
NCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjczNUU3ODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM2QjMxOUIxRjcz
NUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTlCMUY3
MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNjYxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
MEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3MGU0MzcuLmE1ODc4
YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9KU0FzeW5jRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1bnRpbWUv
SlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgx
Yjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNkZmVjMThiNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgxMjc0NGNlYmZi
NWNiZjg5NzY0OTkwZTU1MC4uYjQ5YTljMTM5MmNlYmVkZmZhYWIwNTUyNTFjZWM4YTVmOGRlYmU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC05NSw2ICs5Niw3IEBAIHZvaWQgVmFyaWFibGU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAogUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKIHsKKyAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgbV9jb2RlQmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdp
c3Rlci52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAKICAgICBlbWl0TG9nU2hhZG93Q2hpY2tlblByb2xv
Z3VlSWZOZWNlc3NhcnkoKTsKQEAgLTIxMiw2ICsyMTQsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7
CiAKKyAgICBpZiAobV9lcnJvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX2Vycm9yOwor
CiAgICAgaWYgKG1fZXhwcmVzc2lvblRvb0RlZXApCiAgICAgICAgIHJldHVybiBQYXJzZXJFcnJv
cihQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJz
ZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTE3ODMsNiArMTc4OCwxNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xU
eXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7Cisg
ICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfaXNfY2VsbF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJp
Z0ludFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdp
bmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3Jf
bnVsbCk7CkBAIC0zMTI1LDYgKzMxMzgsMjYgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxv
Y2stPmFkZENvbnN0YW50QnVmZmVyKGxlbmd0aCk7CiB9CiAKK0pTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4X3QgcmFkaXgpCit7CisgICAgQmlnSW50TWFwRW50cnkgZW50cnlLZXkgPSBCaWdJbnRNYXBF
bnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgpOworICAgIGF1dG8gaXQgPSBtX2JpZ0ludE1h
cC5maW5kKGVudHJ5S2V5KTsKKyAgICBpZiAoaXQgIT0gbV9iaWdJbnRNYXAuZW5kKCkpCisgICAg
ICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsICp2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCBy
YWRpeCk7CisgICAgaWYgKCFiaWdJbnRJbk1hcCkgeworICAgICAgICBtX2Vycm9yID0gUGFyc2Vy
RXJyb3IoUGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5KTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworCisgICAg
YXV0byBhZGRlZEVudHJ5ID0gbV9iaWdJbnRNYXAuYWRkKGVudHJ5S2V5LCBiaWdJbnRJbk1hcCk7
CisgICAgQVNTRVJUKGFkZGVkRW50cnkuaXNOZXdFbnRyeSk7CisKKyAgICByZXR1cm4gYWRkZWRF
bnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBK
U1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNi
ZDQwNTJhZTVhMmI2YTA5NzVkYTA0MGQ1YWY3Yi4uZDUzZmI0OTUyMjMzZDIzMDg3YWNlZjQwMzQz
ZWQzODQ3YzZiMWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxh
YmVsU2NvcGUuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU2Vn
bWVudGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMTAwMCwxMCArMTAwMiwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9j
YXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNW
YWx1ZT4gTnVtYmVyTWFwOwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0lt
cGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOwot
ICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3Rl
cklEKj4gVGVtcGxhdGVSZWdpc3RyeUtleU1hcDsKLSAgICAgICAgCisgICAgICAgIHVzaW5nIEJp
Z0ludE1hcEVudHJ5ID0gc3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdD47Cisg
ICAgICAgIHN0cnVjdCBCaWdJbnRFbnRyeUhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goQmlnSW50TWFwRW50cnkga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBrZXkuZmlyc3QtPmV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgKyBXVEY6Omlu
dEhhc2goa2V5LnNlY29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJz
dCAmJiBhLnNlY29uZCA9PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hN
YXA8ZG91YmxlLCBKU1ZhbHVlPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9
IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNo
PjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFw
RW50cnksIEpTQmlnSW50KiwgQmlnSW50RW50cnlIYXNoPjsKKyAgICAgICAgdXNpbmcgVGVtcGxh
dGVSZWdpc3RyeUtleU1hcCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdp
c3RlcklEKj47CisKICAgICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29u
c3RydWN0KCkuIFRoaXMgd29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVj
dGVkIGZ1bmN0aW9ucyBoYXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBj
b25zdHJ1Y3QKICAgICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5l
dyBPYmplY3QoKSIpLgpAQCAtMTA4OCw2ICsxMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRp
ZmllciYsIHVpbnQ4X3QgcmFkaXgpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZVJl
Z2lzdHJ5S2V5Q29uc3RhbnQoUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYpOwogCiAgICAgICAg
IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC0xMTg3LDYgKzEyMDYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1Zh
bHVlV2l0aFJlcHJlc2VudGF0aW9uLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVz
ZW50YXRpb25IYXNoLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+
IEpTVmFsdWVNYXA7CiAgICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJ
ZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFwOworICAgICAgICBJZGVudGlmaWVyQmlnSW50
TWFwIG1fYmlnSW50TWFwOwogICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxh
dGVSZWdpc3RyeUtleU1hcDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplciB7ICZtX2luc3RydWN0aW9ucyB9OwpAQCAtMTIwOCw2ICsxMjI4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgQ2F0Y2hFbnRyeSA9IHN0ZDo6
dHVwbGU8VHJ5RGF0YSosIGludCwgaW50PjsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1f
Y2F0Y2hlc1RvRW1pdDsKKyAgICAgICAgUGFyc2VyRXJyb3IgbV9lcnJvcjsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBkN2ViY2E3
MGRmODA4NDdmMzIwLi43ZjNkYzU0NzNkNzRjZTNiMjNjY2RlMmE3YTZjNTEwYTZkOGFmNmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3Iu
YWRkU3RyaW5nQ29uc3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBn
ZW5lcmF0b3IuYWRkQmlnSW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCA0Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41
ZTJjNDc2NGMyMWE3MjU3MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAg
Ym9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3Ry
dWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAg
ICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8
IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5
bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAo
IWlzU3RyaWN0TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsK
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1i
b2xzIGhlcmUgc2luY2UgZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5
YWM3YmViMDI0ZDYwMC4uZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBj
YXNlIEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJn
dW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggYjlmNzgzMDgxNzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2
ZDU4YjhlMGNlM2I3OWMzNGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCBhZDg2OWYyMGUyZTRkMWI5YWUwZGE3ODc0ODJmYjZmZTdkMjhhZmFhLi40Y2Y4YzZk
NGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFn
OEJpdEJ1ZmZlciA9PSA4KTsKIAogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTIw
MDAwOworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg0ODAwMDA7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAg
YXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6
OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MjIwMDAwOworICAgICAgICB1aW50MzJf
dCBiaXRzID0gMHg4ODAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
Vk0mIHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVpbnQz
Ml90IGJpdHMgPSAweDI0MDAwMDsKKyAgICAgICAgdWludDMyX3QgYml0cyA9IDB4OTAwMDAwOwog
ICAgICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKQEAgLTE5Nyw3ICsx
OTcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNT
RVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTQwMDAw
OworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg1MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJp
dGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCmluZGV4IGFiOTU2MTNlNmU1NTI4MGJjZGIwNDhmMjI1MmIxMjVjMzFkZjNkYWUu
LjNhZDM4OGM0Yzk5Njk4OWVlYTkzMzQ0MDBmMDVmM2IzNWM3NzE3MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yMzIsNiArMjMyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEludGVnZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CisgICAgCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyKiBiaWdJbnQsIHVpbnQ4X3QgcmFkaXgpCisgICAgeworICAgICAgICBp
bmNDb25zdGFudHMoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlnSW50
Tm9kZShsb2NhdGlvbiwgKmJpZ0ludCwgcmFkaXgpOworICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKaW5kZXggNmVlNmM1ZGJkNTlhZGUzN2YyZDFiMjJkMjkxNjQ4YWQyOTZmNTQxZC4uNmQ0
ZDc2ZWQyMThhNjg1MTY5N2M1NThmNTAzYjVkYmY0ZTZmYzg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMu
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xNTAwLDcgKzE1MDEsNyBAQCB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKgogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFy
c2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgVmFyaWFudDxkb3VibGUs
IGNvbnN0IElkZW50aWZpZXIqPiBMZXhlcjxUPjo6cGFyc2VIZXgoKQogewogICAgIC8vIE9wdGlt
aXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1
aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0xNTEyLDEwICsxNTEzLDggQEAgQUxXQVlTX0lOTElO
RSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAt
LW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkg
JiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlmIChtYXhpbXVtRGlnaXRzID49IDApIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoTElLRUxZKG1heGltdW1EaWdpdHMgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkK
KyAgICAgICAgcmV0dXJuIGhleFZhbHVlOwogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBpbiB0aGUg
aGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1ZXMgYXJlIHNoaWZ0ZWQgb3V0IGFuZCBw
bGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4KQEAgLTE1MzMsMTEgKzE1MzIsMTQgQEAg
QUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRP
dmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CisgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAg
ICAgICByZXR1cm4gbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSk7CisgICAgCisgICAgcmV0dXJuIHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1
ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRl
bnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKQogewogICAgIC8vIE9wdGltaXphdGlv
bjogbW9zdCBiaW5hcnkgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgYmlu
YXJ5VmFsdWUgPSAwOwpAQCAtMTU1NCwxMCArMTU1Niw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1kaWdp
dDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+
PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkg
ewotICAgICAgICByZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGln
aXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4oYmluYXJ5VmFsdWUpOwogCiAg
ICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAg
ICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAtMTU2NywxNyArMTU2NywxNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7
Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICdu
JykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5z
aXplKCkpKTsKIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmll
cio+PihwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCks
IDIpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4
ZXI8VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3Rk
OjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6
cGFyc2VPY3RhbCgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IG9jdGFsIHZhbHVlcyBm
aXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IG9jdGFsVmFsdWUgPSAwOwpAQCAtMTU5NCwx
MCArMTU5NCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3Vi
bGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlP
Y3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBv
Y3RhbFZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSgh
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElk
ZW50aWZpZXIqPj4ob2N0YWxWYWx1ZSk7CisKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGln
aXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBA
IC0xNjA3LDE3ICsxNjA2LDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VP
Y3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAg
IGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IDA7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRpZmll
cihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm5WYWx1
ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwg
OCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4ocGFyc2VJbnRPdmVyZmxvdyhtX2J1
ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCA4KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkKIHsKICAgICAv
LyBPcHRpbWl6YXRpb246IG1vc3QgZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAg
ICB1aW50MzJfdCBkZWNpbWFsVmFsdWUgPSAwOwpAQCAtMTYzOCwxMCArMTYzNyw4IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUp
CiAgICAgICAgICAgICAtLWRpZ2l0OwogICAgICAgICB9IHdoaWxlIChpc0FTQ0lJRGlnaXQobV9j
dXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1
cnJlbnQgIT0gJy4nICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScpIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gZGVjaW1hbFZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAo
bV9jdXJyZW50IHwgMHgyMCkgIT0gJ2UnICYmIG1fY3VycmVudCAhPSAnbicpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
PihkZWNpbWFsVmFsdWUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0g
MTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0x
NjUxLDggKzE2NDgsMTEgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2lt
YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwogICAg
ICAgICBzaGlmdCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNl
QmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVyKG1f
YnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAg
LTIxMDAsMTAgKzIxMDAsMzAgQEAgc3RhcnQ6CiAgICAgICAgICAgICB0b2tlbiA9IERPVDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRl
Y2ltYWxQb2ludDsKKyAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAg
ICAgICB0b2tlbiA9IERPVUJMRTsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJF
eHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9y
Iik7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwor
ICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgdG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCks
IHBhcnNlZExlbmd0aCk7CisgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAg
ICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUpOworCisgICAgICAgIGlmIChVTkxJS0VMWShpc0lkZW50U3RhcnQobV9jdXJyZW50KSkp
IHsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBpZGVu
dGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCIpOworICAgICAg
ICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJP
UlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgZ290
byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJhY3Rlclplcm86CiAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ3gnKSB7CisgICAgICAgIGlmIChp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ3gnKSkgewogICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcw
eCciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VS
Uk9SVE9LOwpAQCAtMjExMywxNyArMjEzMywyNyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNo
aWZ0IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAg
ICAgIHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgYXV0byBw
YXJzZU51bWJlclJlc3VsdCA9IHBhcnNlSGV4KCk7CisgICAgICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxkb3VibGU+KHBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihwYXJzZU51bWJlclJl
c3VsdCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lO
VDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KHBhcnNlTnVtYmVyUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMTY7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAg
dG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2InKSB7Cisg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2InKSkgewog
ICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gYmluYXJ5IGRpZ2l0
cyBhZnRlciAnMGInIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfQklO
QVJZX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMzMsMTggKzIxNjMsMjggQEAgc3RhcnQ6CiAgICAg
ICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICdiJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgp
OwogCi0gICAgICAgICAgICBwYXJzZUJpbmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAg
ICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUJpbmFyeSgpOworICAgICAg
ICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRv
dWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlID0gcGFyc2VOdW1iZXJSZXN1bHQgPyBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51
bWJlclJlc3VsdCkgOiAwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdG9r
ZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFy
c2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAyOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkp
IHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8g
c3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAg
ICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAg
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAg
ICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09
ICdvJykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQs
ICdvJykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSU9jdGFsRGlnaXQocGVlaygxKSkpIHsK
ICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gb2N0
YWwgZGlnaXRzIGFmdGVyICcwbyciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlO
QVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTU0LDEzICsyMTk0LDIzIEBAIHN0YXJ0
OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnbycgcHJlZml4LgogICAgICAgICAgICAg
c2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7Cisg
ICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyUmVzdWx0IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUgPSBwYXJzZU51bWJlclJlc3VsdCA/IFdURjo6Z2V0PGRvdWJsZT4oKnBh
cnNlTnVtYmVyUmVzdWx0KSA6IDA7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+
KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9
IDg7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJy
ZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAg
ICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAg
ICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAg
ICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxNzIsMzQgKzIyMjIsNDYgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0FT
Q0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VPY3RhbCh0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJl
c3VsdCA9IHBhcnNlT2N0YWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgewor
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+
KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyTnVt
YmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9V
QkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJS
ZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3Vs
dCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkg
eworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3Vi
bGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFy
c2VOdW1iZXJSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAg
ICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci1pbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Ogot
ICAgICAgICAgICAgICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdlJykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9u
LW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51
bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxMDsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IElO
VEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBET1VCTEU7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVy
OC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9
PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAg
IHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tl
biA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvcklu
dGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZDg0NWUyZTE0ZjU2OWE0ZDM4ZTJjM2Q5OWVmNmM0
NjcyMzI0MzIyMC4uMTk3N2RiMTY0OTg4NTVhMTk3MmM4NjdhNDE5ODNlZDY3NDhiYjNiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTczLDEyICsxNzMsMTMgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJ
TkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqLCBib29sIHN0cmlj
dE1vZGUpOwogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gTkVWRVJfSU5M
SU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdGEqLCBi
b29sIHN0cmljdE1vZGUpOwogCisgICAgZW51bSBjbGFzcyBOdW1iZXJQYXJzZVJlc3VsdCB7IE51
bWJlciwgQmlnSW50LCBGYWlsdXJlIH07CiAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRT
dHJpbmdzLCBMZXhlckVzY2FwZVBhcnNlTW9kZSBlc2NhcGVQYXJzZU1vZGU+IEFMV0FZU19JTkxJ
TkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VDb21wbGV4RXNjYXBlKGJvb2wgc3RyaWN0TW9kZSwg
VCBzdHJpbmdRdW90ZUNoYXJhY3Rlcik7CiAgICAgQUxXQVlTX0lOTElORSBTdHJpbmdQYXJzZVJl
c3VsdCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSosIFJhd1N0cmluZ3NCdWlsZE1v
ZGUpOwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KTsKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZh
bHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVy
Kj4gcGFyc2VIZXgoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxk
b3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VCaW5hcnkoKTsKKyAgICBBTFdBWVNfSU5M
SU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFy
c2VPY3RhbCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJzZURlY2ltYWwoKTsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKTsKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VNdWx0aWxpbmVDb21tZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0
NmFkZGQ3MzliZWNlYzhiZDE5YmYuLmUzOWYzNDc4Nzg3ZjlmMDRlNDBmYTk4MTI2N2RkNzAyNThi
MTgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCkBAIC05Miw2ICs5MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
CisgICAgaW5saW5lIEJpZ0ludE5vZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUsIHVpbnQ4X3QgcmFkaXgpCisgICAg
ICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQor
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDog
Q29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAy
YTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNk
Yzc0ZGIzMThlMjNiY2NlMjY3ZDhkMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVh
bCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MzI4LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25z
dGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29u
c3QgdWludDhfdCBtX3JhZGl4OworICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2Fj
MWJkNTQyNmM0YTExZjAyZGFhOGU5OGQ1MzE1MC4uODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNm
NTMxZWZmNjczMThkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAg
cmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQor
ICAgIGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5nOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7
CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZj
NS4uYzIwNThhZWViMGQzODhkODExOTMyY2ZjN2NhNTExNDA5NDMwODE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAg
ZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9V
QkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUs
CkBAIC0yMTgsNiArMjE5LDEwIEBAIHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICAgICAgYm9vbCBl
c2NhcGVkOwogICAgIH07CiAgICAgc3RydWN0IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciog
YmlnSW50U3RyaW5nOworICAgICAgICB1aW50OF90IHJhZGl4OworICAgIH07CisgICAgc3RydWN0
IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogY29va2VkOwogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiByYXc7CiAgICAgICAgIGJvb2wgaXNUYWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRleCA0ZjY0NzFiNTRmZDVlODgxZGNkYzMyYmNmY2FmNDQ1
ZmE1MmEyODQyLi4wMGMwNWVlOWU3MzExNDEwZmRmNTJkNjNjOTk2MmUzZDYwMmMwYWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtMzEsMTggKzMxLDE5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3Qg
T3BlcmFuZFR5cGVzOwogCi0gICAgICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOworICAgICAgICB1
c2luZyBUeXBlID0gdWludDhfdDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZUludDMy
ID0gMTsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwMjsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlU3RyaW5nID0gMHgwNDsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVsbCAgID0gMHgwODsKICAgICAgICAgc3Rh
dGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQm9vbCAgID0gMHgxMDsKLSAgICAgICAgc3RhdGljIGNv
bnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5
cGUgVHlwZU1heWJlQmlnSW50ID0gMHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlw
ZU1heWJlT3RoZXIgID0gMHg0MDsKIAotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0
cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBU
eXBlTWF5YmVCb29sIHwgVHlwZU1heWJlT3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBl
IFR5cGVCaXRzID0gVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJl
TnVsbCB8IFR5cGVNYXliZUJvb2wgfCBUeXBlTWF5YmVCaWdJbnQgfCBUeXBlTWF5YmVPdGhlcjsK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0g
NjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAg
c3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0g
VHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKICAgICAg
ICAgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpCkBAIC03MCw2ICs3MSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5
cGVNYXliZUJvb2w7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGRlZmluaXRlbHlJc0JpZ0lu
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJp
dHMpID09IFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgbWlnaHRC
ZU51bWJlcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBU
eXBlTWF5YmVOdW1iZXI7CkBAIC04MCw2ICs4NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiAhbWlnaHRCZU51bWJlcigpOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBib29sIG1pZ2h0QmVCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlQmlnSW50OworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBpc05vdEJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbWln
aHRCZUJpZ0ludCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0
VHlwZSBudWxsVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBl
KFR5cGVNYXliZU51bGwpOwpAQCAtMTEwLDYgKzEyNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZVN0cmluZyk7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIGJpZ0ludFR5cGUoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQpOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSB1bmtub3duVHlwZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVCaXRzKTsKQEAg
LTEyMSw2ICsxNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVtYmVyVHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSB8
fCBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlu
Z1R5cGUoKTsKKyAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50KCkgfHwgb3Ay
LmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBvcDEuZGVmaW5p
dGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpID8gYmlnSW50VHlwZSgp
IDogdW5rbm93blR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdPck51bWJlclR5cGUo
KTsKICAgICAgICAgfQogCkBAIC0xMzQsNiArMTU3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAgIGlmIChvcDEuZGVm
aW5pdGVseUlzU3RyaW5nKCkgJiYgb3AyLmRlZmluaXRlbHlJc1N0cmluZygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRl
bHlJc0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYmlnSW50VHlwZSgpOwogICAgICAgICAgICAgcmV0dXJuIHVua25vd25UeXBlKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAppbmRleCA4ZGIzNWM3Nzk2ZjRkMzZmYTU0NTI1OTE2MGRjNTg5ZWI4NDlkOTU2Li41Mzlj
NDczNDBlYjZhNjQ1ZmU3Y2FmNDQxYzNmMDBkYjViM2NmNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIGludCBNZXRhUHJvcGVydHlCaXQgPSAweDgw
MDAwMDAwOwogICAgIGVudW0gOiBpbnQgeyBOb25lRXhwciA9IDAsCi0gICAgICAgIFJlc29sdmVF
dmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHBy
LAorICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91
YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxF
eHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1
bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNrZXRFeHBy
LCBEb3RFeHByLCBDYWxsRXhwciwKICAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIs
IFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKQEAgLTE3NSw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVEb3VibGVFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gRG91
YmxlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUludGVnZXJFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gSW50ZWdlckV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciosIGludCkgeyByZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikg
eyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJu
IE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUxYmRlNTVm
OThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFycmF5SXRl
cmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3JvKEJpZ0lu
dCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1h
Y3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjgwODhkN2QyZmUzNjRiYTVhZjcyMDZlMzNlZDExNzQ1MDM0NDY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwCkBAIC0wLDAgKzEsNjI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8g
TGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6CisgKgorICog
Q29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgKgor
ICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMuICBQbGVh
c2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQorICogQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbMl0u
CisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVy
L0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21h
c3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiUGFyc2VJ
bnQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmVj
dG9yLmg+CisKKyNkZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQs
ICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OworCit2b2lk
IEpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0
aGlzT2JqZWN0LT5tX2RhdGEpCisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2Jq
ZWN0LT5tX2RhdGEuZ2V0KCkpOworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2xlbmd0aChjcmVhdGVXaXRoTGVuZ3RoKQoreyB9CisKK3ZvaWQg
SlNCaWdJbnQ6OmluaXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBBU1NFUlQo
bV9kYXRhKTsKKworICAgIHNldFNpZ24oZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlhbGl6ZSkg
eworICAgICAgICB2b2lkKiBkYXRhID0gbV9kYXRhLmdldCgpOworICAgICAgICBtZW1zZXQocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZGF0YSksIDAsIGxlbmd0aCgpICogRGlnaXRTaXplKTsKKyAg
ICB9Cit9CisKK1N0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNCaWdJbnQq
IEpTQmlnSW50OjpjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEpT
QmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlKGV4ZWMsIHZtLCAwKTsKKyAgICB6ZXJvQmlnSW50
LT5zZXRTaWduKGZhbHNlKTsKKyAgICByZXR1cm4gemVyb0JpZ0ludDsKK30KKworSlNCaWdJbnQq
IEpTQmlnSW50OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBjcmVhdGVXaXRo
TGVuZ3RoKQoreworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUu
Z2V0KCksIGNyZWF0ZVdpdGhMZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yywgdm0pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAKKyAgICBpZiAobV9sZW5ndGgpIHsKKyAgICAgICAgdm9pZCogYmFja2lu
Z1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5QWxsb2Nh
dGUoc2l6ZUZvcihtX2xlbmd0aCkpOworICAgICAgICBEaWdpdCogZGF0YSA9IHN0YXRpY19jYXN0
PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAg
ICB9Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJ
bnQqPih0aGlzKTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6dG9TdHJp
bmdPbmVEaWdpdCgpCit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7CisgICAgICAgIERpZ2l0IHJE
aWdpdCA9IGRpZ2l0KDApOworICAgICAgICBpZiAockRpZ2l0IDw9IDkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKKyAgICB9CisgICAgcmV0dXJuIHsg
fTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4KQoreworICAgIGlmIChzLmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5s
ZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0s
IHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7Cit9CisKK1N0
cmluZyBKU0JpZ0ludDo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQgcmFkaXgpCit7Cisg
ICAgaWYgKHRoaXMtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKCcwJyk7CisKKyAgICByZXR1cm4gdG9TdHJp
bmdHZW5lcmljKGV4ZWMsIHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJv
KCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0
aCgpID09IDA7Cit9CisKKy8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFk
ZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlw
bHlBZGQodWludHB0cl90IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElD
X0FTU0VSVChzaXplb2YoZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNT
RVJUKHNpemVvZihzdW1tYW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVs
dGlwbHlBZGQodGhpcywgZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVp
bnQ2NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09f
RElHSVQgMQordHlwZWRlZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhB
VkVfVFdPX0RJR0lUIDAKKyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5p
dGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUg
b3IgbGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQg
YSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdv
RGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdv
RGlnaXQ+KGIpOworICAgIGNhcnJ5ICs9IHJlc3VsdCA+PiBEaWdpdEJpdHM7CisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9
IGEgKyBiOworCisgICAgaWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50
IHRvIGFuIGluaXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAor
Ly8gYnkgb25lIG9yIGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0
U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElH
SVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0
aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRz
KSAmIDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vs
c2UKKyAgICBEaWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAg
ICAgYm9ycm93ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1
bHQpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQu
IEhpZ2ggaGFsZiBpcyBpbiB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0
TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lU
CisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGlj
X2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0
aXBseSBpbiBoYWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FI
IEFMXSpbQkggQkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBb
QUwqQkxdICAvLyByTG93CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAg
IC8vICAgICsgICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAg
ICAgIC8vIHJIaWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIz
XSwgbG93ID0gW1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3Qg
YmUgY2FyZWZ1bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBh
TG93ID0gYSAmIEhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IEhhbGZEaWdp
dEJpdHM7CisgICAgRGlnaXQgYkxvdyA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJI
aWdoID0gYiA+PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICog
YkxvdzsKKyAgICBEaWdpdCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9
IGFIaWdoICogYkxvdzsKKyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisg
ICAgRGlnaXQgY2FycnkgPSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQx
IDw8IEhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQy
IDw8IEhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gSGFsZkRp
Z2l0Qml0cykgKyAock1pZDIgPj4gSGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisg
ICAgcmV0dXJuIGxvdzsKKyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dl
ciBvZiB7ZXhwb25lbnR9LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6
RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQorewor
ICAgIERpZ2l0IHJlc3VsdCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAg
ICAgICBpZiAoZXhwb25lbnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAg
ICAgICAgZXhwb25lbnQgPj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3Rp
ZW50ID0gKGhpZ2ggPDwgRGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pT
QmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBE
aWdpdCBkaXZpc29yLCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2
aXNvcik7CisjaWYgQ1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERp
Z2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlz
b3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVt
fSBpbiByZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAv
LyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlz
b3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAg
IDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJl
bWFpbmRlciA9IHJlbTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBD
T01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVt
OworICAgIF9fYXNtX18oImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtx
dW90aWVudH0gd2lsbCBiZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1
b3RpZW50KSwgIj1kIihyZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVk
eCwge2xvd30gaW50byBlYXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVn
aXN0ZXIgb3Igc3RhY2sgc2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2
aXNvcl0gInJtIihkaXZpc29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBx
dW90aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0g
MXVsbCA8PCBIYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tl
cidzIERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6
NjQoZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYK
KyAgICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFs
ZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKwor
ICAgIC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNv
IHdlICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0g
MCBhbmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50
cHRyX3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19j
YXN0PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7
CisgICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMp
KSAmIHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVu
MSA9IHVuMTAgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRp
Z2l0TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVu
MzIgLSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAq
IHZuMCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAg
ICAgICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxm
RGlnaXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZu
MTsKKyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxm
RGlnaXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7Cisg
ICAgICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBr
SGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRl
ciA9ICh1bjIxICoga0hhbGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7Cisg
ICAgcmV0dXJuIHExICoga0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0
aXBsaWVzIHtzb3VyY2V9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSBy
ZXN1bHQuCisvLyB7cmVzdWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBm
b3IgaW5wbGFjZSBtb2RpZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5
QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4s
IEpTQmlnSW50KiByZXN1bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7
CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9
IHN1bW1hbmQ7CisgICAgRGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICAgICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAg
ICAgIERpZ2l0IG5ld0NhcnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQn
cyBtdWx0aXBsaWNhdGlvbi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1
cnJlbnQgPSBkaWdpdE11bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8v
IEFkZCBsYXN0IHJvdW5kJ3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRk
KGN1cnJlbnQsIGhpZ2gsIG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1
cnJlbnQsIGNhcnJ5LCBuZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBw
cmVwYXJlIGZvciBuZXh0IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJl
bnQpOworICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsK
KyAgICB9CisKKyAgICBpZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0
LT5zZXREaWdpdChuKyssIGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxs
ZXJzIGRvbid0IHBhc3MgaW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0
LgorICAgICAgICB3aGlsZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1
bHQtPnNldERpZ2l0KG4rKywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEoY2FycnkgKyBoaWdoKSk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQoSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
eC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQo
aSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vIERpdmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQg
aW4ge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNv
bnRyYWN0IGlzOgorLy8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRo
IDAgPD0gcmVtYWluZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkg
aGFuZGxlLCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0
ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJp
ZyBlbm91Z2guCisvLyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGlu
LXBsYWNlIGRpdmlzaW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRo
ZSBjYWxsZXIgaXMgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmln
SW50OjphYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIERpZ2l0
IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAg
QVNTRVJUKGRpdmlzb3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQo
IXgtPmlzWmVybygpKTsKKyAgICByZW1haW5kZXIgPSAwOworICAgIGlmIChkaXZpc29yID09IDEp
IHsKKyAgICAgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCisgICAgICAgICAgICAqcXVvdGll
bnQgPSB4OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGxlbmd0aCA9IHgtPmxl
bmd0aCgpOworICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CisgICAgICAgIGlmICgqcXVv
dGllbnQgPT0gbnVsbHB0cikgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZShl
eGVjLCB2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5kZXIs
IHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVu
dCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYo
cmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICB9Cit9CisK
Ky8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMgcmVxdWlyZWQg
cGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEg
bnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFycmF5CisvLyB2YWx1ZSBpcyB0aGUg
YWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdlbmVyYXRlIHRoaXMgdGFibGU6Cisv
LyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHByaW50KE1hdGguY2VpbChNYXRoLmxv
ZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWludDhfdCBNYXhCaXRzUGVyQ2hhcltd
ID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwgIDgzLCAgOTAsICA5NiwgLy8g
MC4uOAorICAgIDEwMiwgMTA3LCAxMTEsIDExNSwgMTE5LCAxMjIsIDEyNiwgMTI4LCAgICAgLy8g
OS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAgIC8v
IDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2LCAxNTgsIDE1OSwgMTYwLCAgICAg
Ly8gMjUuLjMyCisgICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJsZVNoaWZ0
ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgPSAx
dSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKKy8vIENvbXB1dGUgKGFuIG92ZXJhcHByb3hp
bWF0aW9uIG9mKSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nOgorLy8gRGl2aWRl
IGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJh
Y3Rlci4KK3VpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVp
cmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQgbGFzdERpZ2l0LCBib29sIHNpZ24pCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpbnQgbGVhZGluZ1plcm9zID0gY2x6NjQobGFzdERp
Z2l0KTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNsejMyKGxhc3REaWdpdCk7Cisj
ZW5kaWYKKyAgICBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3RoICogRGlnaXRCaXRzIC0gbGVhZGlu
Z1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVwcmVzZW50
IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5kIGFuIGFw
cHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9
IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZvciBlc3RpbWF0aW5nIHJlc3VsdCBs
ZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5kIHdvcmsgd2l0aAorICAgIC8vIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4KKyAg
ICB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXIgLSAxOworCisgICAgLy8g
UGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdpdGggdWludDY0X3QgdG8gYXZvaWQg
b3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgPSBiaXRM
ZW5ndGg7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCAqPSBCaXRzUGVyQ2hhclRhYmxl
TXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAgIG1heGltdW1DaGFyYWN0ZXJzUmVx
dWlyZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWly
ZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCArPSBz
aWduOworICAgIAorICAgIHJldHVybiBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkOworfQorCitT
dHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50
KiB4LCBpbnQgcmFkaXgpCit7CisgICAgU3RyaW5nVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7
CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKCF4
LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgYm9vbCBz
aWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQ
ZXJDaGFyW3JhZGl4XTsKKyAgICB1aW50NjRfdCBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkID0g
Y2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChsZW5ndGgsIHJhZGl4LCB4LT5kaWdp
dChsZW5ndGggLSAxKSwgc2lnbik7CisKKyAgICBpZiAobWF4aW11bUNoYXJhY3RlcnNSZXF1aXJl
ZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJl
c3VsdFN0cmluZykpOworICAgIH0KKworICAgIERpZ2l0IGxhc3REaWdpdDsKKyAgICBpZiAobGVu
Z3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRpZ2l0KDApOworICAgIGVsc2Ugewor
ICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAqIEJpdHNQZXJDaGFyVGFibGVNdWx0
aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERpZ2l0IGNodW5rRGl2aXNvciA9IGRp
Z2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAgICAvLyBCeSBjb25zdHJ1Y3Rpb24g
b2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVuIG92ZXJmbG93LgorICAgICAgICBB
U1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5vblplcm9EaWdpdCA9IGxlbmd0aCAt
IDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKworICAgICAgICAv
LyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0ludCB0aGF0IHdlIGhhdmVuJ3QgbG9v
a2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggInJlbWFpbmRl
ciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0cjsKKworICAgICAgICAvLyBJbiB0
aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFsbG9jYXRpbmcgYSBuZXcgQmlnSW50
IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7IGZyb20gdGhlbiBvbiBkaXZpZGUg
dGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50KiogZGl2aWRlbmQgPSAmeDsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7CisgICAgICAgICAgICBhYnNvbHV0
ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgY2h1bmspOwor
ICAgICAgICAgICAgQVNTRVJUKHJlc3QpOworCisgICAgICAgICAgICBkaXZpZGVuZCA9ICZyZXN0
OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaHVua0NoYXJzOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2NodW5rICUgcmFk
aXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRpeDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVCghY2h1bmspOworCisgICAgICAgICAgICBpZiAoIXJlc3QtPmRpZ2l0
KG5vblplcm9EaWdpdCkpCisgICAgICAgICAgICAgICAgbm9uWmVyb0RpZ2l0LS07CisKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiBuZXZlciBjbGVhciBtb3JlIHRoYW4gb25lIGRpZ2l0IHBlciBpdGVy
YXRpb24sIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGNodW5rRGl2aXNvciBpcyBzbWFsbGVyIHRo
YW4gbWF4IGRpZ2l0IHZhbHVlLgorICAgICAgICAgICAgQVNTRVJUKHJlc3QtPmRpZ2l0KG5vblpl
cm9EaWdpdCkpOworICAgICAgICB9IHdoaWxlIChub25aZXJvRGlnaXQgPiAwKTsKKworICAgICAg
ICBsYXN0RGlnaXQgPSByZXN0LT5kaWdpdCgwKTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAg
IHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbbGFzdERpZ2l0ICUgcmFkaXhdKTsKKyAg
ICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgIH0gd2hpbGUgKGxhc3REaWdpdCA+IDApOwor
ICAgIEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpKTsKKyAgICBBU1NFUlQocmVzdWx0U3RyaW5n
LnNpemUoKSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQp
KTsKKworICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9lcy4KKyAgICBpbnQgbmV3U2l6ZU5vTGVh
ZGluZ1plcm9lcyA9IHJlc3VsdFN0cmluZy5zaXplKCk7CisgICAgd2hpbGUgKG5ld1NpemVOb0xl
YWRpbmdaZXJvZXMgID4gMSAmJiByZXN1bHRTdHJpbmdbbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAt
IDFdID09ICcwJykKKyAgICAgICAgbmV3U2l6ZU5vTGVhZGluZ1plcm9lcy0tOworCisgICAgcmVz
dWx0U3RyaW5nLnNocmluayhuZXdTaXplTm9MZWFkaW5nWmVyb2VzKTsKKworICAgIGlmIChzaWdu
KQorICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKCctJyk7CisKKyAgICBzdGQ6OnJldmVyc2Uo
cmVzdWx0U3RyaW5nLmJlZ2luKCksIHJlc3VsdFN0cmluZy5lbmQoKSk7CisKKyAgICByZXR1cm4g
U3RyaW5nSW1wbDo6YWRvcHQoV1RGTW92ZShyZXN1bHRTdHJpbmcpKTsKK30KKwordm9pZCBKU0Jp
Z0ludDo6cmlnaHRUcmltKFZNJiB2bSkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludCBub25aZXJvSW5kZXggPSBtX2xlbmd0aCAtIDE7CisgICAgd2hpbGUg
KG5vblplcm9JbmRleCA+PSAwICYmICFkaWdpdChub25aZXJvSW5kZXgpKQorICAgICAgICBub25a
ZXJvSW5kZXgtLTsKKworICAgIGlmIChub25aZXJvSW5kZXggPT0gbV9sZW5ndGggLSAxKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbnQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKKyAg
ICB2b2lkKiBiYWNraW5nU3RvcmUgPSB2bS5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKG1fZGF0YS5r
aW5kKS50cnlBbGxvY2F0ZShzaXplRm9yKG5ld0xlbmd0aCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJhY2tpbmdTdG9yZSk7CisgICAgRGlnaXQqIGRhdGEgPSBzdGF0aWNfY2FzdDxEaWdpdCo+KGJh
Y2tpbmdTdG9yZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZXdMZW5ndGg7IGkrKykKKyAg
ICAgICAgZGF0YVtpXSA9IGRpZ2l0KGkpOworCisgICAgbV9kYXRhLnNldCh2bSwgdGhpcywgZGF0
YSk7CisgICAgbV9sZW5ndGggPSBuZXdMZW5ndGg7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJj
b3VudCkKK3sKKyAgICBBU1NFUlQoMiA8PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNT
RVJUKGNoYXJjb3VudCA+PSAwKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHNpemVfdCBiaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4
XTsKKyAgICBzaXplX3QgY2hhcnMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7Cisg
ICAgY29uc3QgaW50IHJvdW5kdXAgPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7Cisg
ICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91
bmR1cCkgLyBiaXRzUGVyQ2hhcikgeworICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJD
aGFyICogY2hhcnM7CisKKyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3Vu
ZGluZyB1cC4KKyAgICAgICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1Bl
ckNoYXJUYWJsZVNoaWZ0OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1heEludCkpIHsKKyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91
bmRpbmcgdXAuCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0
c01pbikgKyBEaWdpdEJpdHMgLSAxKSAvIERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5n
dGggPD0gTWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChleGVjKQor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxs
KQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7
CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNpemUgPSB0aGlzT2JqZWN0LT5tX2xlbmd0aCAq
IERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGJ1ZmZl
ckVzdGltYXRlZFNpemU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MGNjMWY1Zjg2N2FkMDA1YmZi
OWZhNDE5ZGJjNTA3NGNjOTk0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQ
YXJzZUludC5oIgorI2luY2x1ZGUgPHd0Zi9DYWdlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U0JpZ0ludCA6IHB1YmxpYyBKU0NlbGwgeworICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisKKyAg
ICBmcmllbmQgY2xhc3MgQmlnSW50SW1wbDsKKworcHVibGljOgorICAgIEpTQmlnSW50KFZNJiwg
U3RydWN0dXJlKiwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpOworCisgICAgdm9pZCBpbml0aWFsaXpl
KGJvb2wgemVyb0luaXRpYWxpemUpOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXpl
KEpTQ2VsbCopOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVplcm8oRXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
Vk0mKTsKKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2ln
biA9IHNpZ247IH0KKyAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKwor
ICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAg
ICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDhfdD4gdG9TdHJpbmdPbmVEaWdpdCgpOworCisgICAgc3RhdGljIEpTQmlnSW50
KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOwor
ICAgIAorICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqLCBpbnQgcmFkaXgpOworICAgIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJf
dDsKKyAgICBzdGF0aWMgY29uc3QgaW50IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29u
c3QgaW50IERpZ2l0U2l6ZSA9IHNpemVvZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0IGludCBE
aWdpdEJpdHMgPSBEaWdpdFNpemUgKiBCaXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50
IEhhbGZEaWdpdEJpdHMgPSBEaWdpdEJpdHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBI
YWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgSGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBj
b25zdCBpbnQgTWF4SW50ID0gMHg3RkZGRkZGRjsKKyAgICAKKyAgICAvLyBUaGUgbWF4aW11bSBs
ZW5ndGggdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB3b3VsZCBiZQor
ICAgIC8vIE1heEludCAvIERpZ2l0Qml0cy4gSG93ZXZlciwgd2UgdXNlIGEgbG93ZXIgbGltaXQg
Zm9yIG5vdywgYmVjYXVzZQorICAgIC8vIHJhaXNpbmcgaXQgbGF0ZXIgaXMgZWFzaWVyIHRoYW4g
bG93ZXJpbmcgaXQuCisgICAgLy8gU3VwcG9ydCB1cCB0byAxIG1pbGxpb24gYml0cy4KKyAgICBz
dGF0aWMgY29uc3QgaW50IE1heExlbmd0aCA9IDEwMjQgKiAxMDI0IC8gKHNpemVvZih2b2lkKikg
KiBCaXRzUGVyQnl0ZSk7CisgICAgCisgICAgc3RhdGljIHVpbnQ2NF90IGNhbGN1bGF0ZU1heGlt
dW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGln
aXQsIGJvb2wgc2lnbik7CisgICAgCisgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZTbWFsbChF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVu
dCwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFk
ZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNC
aWdJbnQqIHJlc3VsdCk7CisKKyAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAg
c3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7Cisg
ICAgc3RhdGljIERpZ2l0IGRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cp
OworICAgIHN0YXRpYyBEaWdpdCBkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGln
aCk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGln
aXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0UG93
KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAgIGJvb2wg
aXNaZXJvKCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGlj
IEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0
eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoID49IDApOworICAg
ICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5n
ICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxl
bmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAgICAgICAgICsrcDsKKworICAgICAgICBpbnQg
ZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAgICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFj
ZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFb
ZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5kSW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0g
ZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBpbnQgbGltaXQwID0gJzAnICsg
KHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChy
YWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKwor
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBs
ZW5ndGggLSBwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICByZXN1bHQtPmluaXRpYWxpemUodHJ1ZSk7CisKKyAgICAgICAgZm9y
IChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgICAgICB1aW50MzJf
dCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGlt
aXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAgICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChk
YXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0
ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihkaWdpdCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisgICAgICAgICAgICByZXN1
bHQtPnJpZ2h0VHJpbSh2bSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50
KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJjb3VudCk7
CisKKyAgICB2b2lkIHJpZ2h0VHJpbShWTSYpOworCisgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlB
ZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7CisKKyAgICBEaWdpdCBkaWdpdChpbnQg
bikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAgICAg
ICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkYXRhUHRyID0gbV9kYXRhLmdldCgp
OworICAgICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpZ2l0
KGludCBuLCBEaWdpdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8
IGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkaWdp
dFB0ciA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgZGlnaXRQdHJbbl0gPSB2YWx1ZTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIGludCBzaXplRm9yKGludCBsZW5ndGgpCisgICAgeworICAgICAg
ICByZXR1cm4gbGVuZ3RoICogRGlnaXRTaXplOworICAgIH0KKworICAgIGJvb2wgbV9zaWduOwor
ICAgIGludCBtX2xlbmd0aDsKKyAgICBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2
ZSwgRGlnaXQ+IG1fZGF0YTsKK307CisKK2lubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAg
IHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAppbmRleCBkMDMwNDUyMjBkNWU5NTI2N2VkOWY4ZjdiOWQzMzY1YTgzMTc5ZGQzLi43NjQxNWYz
NDQwMzc2OWRhZmI5YzYzNGE3NDE3NzJlYmJjZWNkMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpA
QCAtNjgsMTEgKzY5LDE3IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b0xlbmd0aChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAKIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNE
b3VibGUoKSk7CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRv
TnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKKyAg
ICBpZiAoaXNCaWdJbnQoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDb252ZXJ0aW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90
IGFsbG93ZWQuIikpOworICAgICAgICByZXR1cm4gUE5hTjsKKyAgICB9CiAgICAgcmV0dXJuIGlz
VW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRv
IDAuCiB9CiAKQEAgLTM3Niw2ICszODMsMTMgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5n
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnIKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNv
bnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAgIHJldHVybiBlcnJvclZhbHVl
KCk7CiAgICAgfQorICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gZGln
aXQgPSBiaWdJbnQtPnRvU3RyaW5nT25lRGlnaXQoKTsKKyAgICAgICAgaWYgKGRpZ2l0KQorICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRp
Z2l0ICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0lu
dC0+dG9TdHJpbmcoZXhlYywgMTApKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBj
MjRlYTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5YTNjN2RlMDc3ZDIz
ZGUwMmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bnlJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0
cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2VlYmEyM2NmY2YyODNm
ZmQ1ZmExMDRjNzcuLjAxZWEyZGI4MWM5ZGZkZmNlY2U0MTU1MWVjMGZlMzllNWRlYWE0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxs
KCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
QmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmln
SW50KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC03MTksNiArNzI1
LDcgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgIGlmIChpc0RvdWJsZSgp
KQogICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKKwogICAgIHJldHVybiB0b051bWJlclNsb3dD
YXNlKGV4ZWMpOwogfQogCkBAIC0xMDIwLDYgKzEwMjcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0
cmluZyh2MikpOworICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSks
IGFzQmlnSW50KHYyLmFzQ2VsbCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4YWMwZWU3ZmJj
MWJjMzU3OWVlNjNmNWNiMTZhOTYwODM3Li43OTRiYzc3ZTIwMjFmMDMzNTRhYTY2MTQyMzNjZGQ1
OTVkY2EwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAg
LTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBl
eGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJl
ZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlw
ZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUo
ZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE4MSw2ICsxODMsOCBAQCBKU09iamVjdCog
SlNDZWxsOjp0b09iamVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjbwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50
b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmpl
Y3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5ZmMwYzli
MDk0MDE2NDBmYjE1ZDUyNTFhNDE3ZWI4NDg2MGQ2Y2NkLi43MWY5OWQ5N2NmNWNkMjkxY2NlNWMz
NTRjYTlhYzYyYjk0OTc1YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWlu
ZyB0aGUgdHlwZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0lu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDU3MGYwOTRiYWQ0YjA3
YTExYWVlMjA2MDdkZTBhNzY4MWY3ZmRjM2UuLjk4MzZiMzQ3MDVlMGE3NTYwMDQ3OTYzMTg5ZWJk
ZmE4Mzc3NzY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKQEAgLTIwMSw2ICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUg
Ym9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJp
Z0ludFR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewog
ICAgIHJldHVybiBtX3R5cGUgPT0gU3ltYm9sVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMTgyNWU5ZTYyYmU1MjJkYjFl
ZWFhNDJhNjZlYmViODhkYjk5ODhhLi4yOGE5MjgwNDBkNmZjYzIzZTc5MzE4YWE3MzIwZWM1ZTU5
NDNmMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG8KIG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwK
IAogICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ1JFQVRFX0NPTlNUUlVDVE9SX0ZP
Ul9TSU1QTEVfVFlQRSkKLSAgICAKKwogI3VuZGVmIENSRUFURV9DT05TVFJVQ1RPUl9GT1JfU0lN
UExFX1RZUEUKIAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGVycm9yQ29u
c3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA4NTM1
NmQzOTc3YWVkNWM3M2I4OWFmZjA1Yzk3YzI0MmY5NWJiNGVhLi41NzdkMThlMDI1YzExYTk5MmNl
MTZjODUwY2IyMjE4ZTIxYzZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxU
eXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAgICBCaWdJbnRUeXBlLAog
CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGU4ZjMxNmNm
NDJiOGU5Mjg5ZmNhMDg5YjQ4MzEyMTViN2EzMDIwMzMuLjBmZGM3YzM1NjVjZThhYjFkZGVjNTFk
ZWZkNGNmMzg1MmMzOTk4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmgKQEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVt
YmVyKQogI2VuZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQorewor
I2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0NvdW50ID0gNjQ7CisgICAg
aWYgKG51bWJlcikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7
CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHplcm9Db3VudCA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoIShudW1iZXIg
Pj4gaSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZW5kaWYKK30KKwogLy8g
VGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBv
ZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVu
dGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhl
IHJlc3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxl
ZCB0byBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCmluZGV4IDU1MGI4ZjcwZDdjNzcyYjE4ZjliNjQ3MjkwNWE2NGI3Zjc5
MGUwYmIuLmE2M2QwMWU0ZDhiZGFmOGQ5YzlhNDYxMjA3YjViNDJhMDg3NDUwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIK
ICNpbmNsdWRlICJVaW50MTZXaXRoRnJhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xMzksOSArMTQwLDYgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgYm9vbCBnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKEV4ZWNTdGF0ZSogZXhl
YywgaW50IGxvdywgaW4KIC8vIGZvIGFueSBudW1iZXIgb2YgZGlnaXRzIGFuIElFRUUgbnVtYmVy
IG1heSByZXF1aXJlIHRvIHJlcHJlc2VudC4KIHR5cGVkZWYgY2hhciBSYWRpeEJ1ZmZlclsyMTgw
XTsKIAotLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5aW5n
IHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KLXN0YXRpYyBjb25zdCBjaGFyIHJhZGl4RGln
aXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKLQogc3RhdGlj
IGlubGluZSBjaGFyKiBpbnQ1MlRvU3RyaW5nV2l0aFJhZGl4KGNoYXIqIHN0YXJ0T2ZSZXN1bHRT
dHJpbmcsIGludDY0X3QgaW50NTJWYWx1ZSwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgYm9vbCBu
ZWdhdGl2ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcAppbmRleCA2ZDEwNTU4MjcwOGEyNGEzYWQ0YTRhNTAwZDM5NDEzZDliOThkYzIwLi45
N2NmYTA3YTk2OTQwMjIyNTZjOWMzOGE2NmM3NjQzMzUxN2NkNjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtODIsNiArODIsOCBAQCBKU1Zh
bHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnN0cmluZ1N0
cmluZygpOwogICAgIGlmICh2LmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3Muc3ltYm9sU3RyaW5nKCk7CisgICAgaWYgKHYuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIHZtLnNtYWxsU3RyaW5ncy5iaWdpbnRTdHJpbmcoKTsKICAgICBpZiAodi5pc09iamVjdCgp
KSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKICAgICAgICAgLy8g
UmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKQEAg
LTExMiw3ICsxMTQsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNU
eXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlw
ZSB8fCB0eXBlID09IFN5bWJvbFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmpl
Y3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCmluZGV4IDc4ZTc3YWQxODY0YzhmYTAwNzM4N2MzZjUwYzkzOTIxMjVmNzE0OTMuLmZiYTMy
N2YwZDVkMmQ2MDA2MmFiMzU0ZGZmOWU5ZGRlMWM0YjgxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTQ3OCw2ICs0NzgsNyBAQCBjb25zdGV4cHIgYm9vbCBl
bmFibGVBc3luY0l0ZXJhdGlvbiA9IGZhbHNlOwogICAgIHYoYm9vbCwgdXNlRmFzdFRMU0Zvcldh
c21Db250ZXh0LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHN0b3JlIGNvbnRleHQg
aW4gZmFzdCBUTFMuIElmIGZhbHNlLCB3ZSB3aWxsIHBpbiBpdCB0byBhIHJlZ2lzdGVyLiIpIFwK
ICAgICB2KGJvb2wsIHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZvIHRvIGlubGluZSBjYWNoZSBX
YXNtIHRvIEpTIGNhbGxzLiIpIFwKICAgICB2KGJvb2wsIHVzZU9iamVjdFJlc3RTcHJlYWQsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIE9iamVjdCBSZXN0L1NwcmVhZCBm
ZWF0dXJlLiIpIFwKKyAgICB2KGJvb2wsIHVzZUJpZ0ludCwgZmFsc2UsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKICAgICB2KGJvb2wsIHVzZUFy
cmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1
c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBh
bGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpXAog
ICAgIHYoYm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVh
dGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0
cnVjdHVyZS4iKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
YXJzZUludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaAppbmRl
eCBlNDc5NWVjNGFmNTk5MzgyODQ2ZjRjZDcxMjI4NTBmMmM2ODI4MDc0Li5mMzEwMTU4NjNkZGY3
ZGExZWNkMDdmOTJlYWZiOTA4Y2ZiNzg1OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QYXJzZUludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1BhcnNlSW50LmgKQEAgLTIyNiw0ICsyMjYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB0
eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihTdHJpbmdWaWV3
KQogICAgIHJldHVybiBjYWxsYmFjayh2aWV3V2l0aFN0cmluZy52aWV3KTsKIH0KIAorLy8gTWFw
cGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5aW5nIHRoaXMgdmFsdWUs
IGZvciByYWRpeCAyLi4zNi4KK2NvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKaW5kZXggMTJmNDUzZTc2
MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAwYzlmMTVkNy4uNGVkMTFmOGZlZDJjOGM0YmZmMGU0MmM4
NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwogY2xhc3MgUHJvdG90eXBlS2V5IHsKIHB1YmxpYzoKICAg
ICBQcm90b3R5cGVLZXkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmgKaW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2ZjhkMGYz
OC4uODg1MGM0YTlhMzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhz
eW1ib2wpIFwKKyAgICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0U3RyaW5nKCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBl
OjpCaWdJbnQ6CisgICAgICAgICAgICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDc1ZmQ3NWIwZWIx
OGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2NjdjLi45ZjU3OGU4YWJjNTQxNjAwMzk0MTg1OGJhYWZi
MzFjODhlNzA3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2Fj
aGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKaW5k
ZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2NlYWNiYTZkMmI3OWI0ZDlmZTU1NS4uMjU3MGI3MmUzYmM0
YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4ZGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcwOWE3ZjU0
MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFjZTguLjNiZmNmNTcxZjRhODdhMzFlYmY5MDVkNjhkNGI1
MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZQogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlw
ZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0KIAog
aW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZW9mVHlwZS5jcHAKaW5kZXggZGIxNjJiN2Y0ZjRjZTIzZmI4ODA1NmRkZjQxYzQ4ZGUzMGQ1
NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVkYWU0YzFhNDgzNjBkNDBlZjhiYmM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlwZSkK
ICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1bmN0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAg
ICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4IDMzMmZhODEyMTkyYTVhNjJlYjY2YmM2MWIyODA4
YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0MWM2ZGI3NjJjZTgxMDZmZjI4NTNhNmM1OTcwYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKQEAgLTMxLDYgKzMx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgVHlwZW9mVHlwZSB7CiAgICAgVW5k
ZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAogICAgIE51bWJlciwKICAgICBTdHJp
bmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjIwMDg1NzNmZTAyYTQ1
Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5YS4uNTk3ZGM1M2EwNTAwMTJkYWM3OTEwOTE4ZmM5MDQy
MTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdy
YXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgwLDYgKzI4MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgq
dGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNldEl0ZXJhdG9yU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGJpZ0ludFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBl
OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhp
cywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNTU0YjM1MGQ0MTg1MTVlNDhiNmY4ZmNjMGU4NGVjMDE3
MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRmMzQxMmE2OTZiOGRiMzc3MzJkNDNmZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM4OCw2ICszODgsNyBAQCBwdWJsaWM6CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBt
YXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1
cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAg
ICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhmODk4YzlmYzRiMTcyOTZjYzczYmU1
NmEzM2Y1NmZkMDZiNzY5Yi4uYTZlYWI0YTNmYzNhMzMyMWUwNjQwMmVlY2I2ZGNmYTI0YWI2ODkz
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE3LTExLTIyICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQgbGl0ZXJhbHMg
YW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMTYgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVw
ZGF0ZSBXaW5DYWlyb1JlcXVpcmVtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5k
ZXggNDExZTlhNzUzMjM4NjkyODkyZTkzNjIwNmZjY2U3NDliMTc4ZWNiZC4uOWMwMDYyNjM1ODkx
MGQ5NjdkZTQ3OGI3OWMyZjkyMWM1MTAzMzQ3MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCkBAIC02MTYsNiArNjE2LDEwIEBAIGRlZiBydW5EZWZhdWx0KCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJkZWZhdWx0IiwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVz
ZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlv
bnMpKQorZW5kCisKIGRlZiBydW5GVExOb0NKSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKICAgICBydW4oIm1pc2MtZnRsLW5vLWNqaXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9P
UFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMWVkMjIzN2NkYWE0
MTMyNDNlZWJlNDBmYTJiYWFmYjNhNTY2ZWUxLi44OTI3ZDg2YzMwYWMxZmM4N2VjNWFiZmRlNTQ0
YzU1MTNhM2E4ZDU5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTExLTIyICBDYWlvIExpbWEgIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGJpZ0ludFRlc3RzLnlhbWw6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9iaWctaW50LWxhcmdlLW51bWJlci1vb20uanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFs
cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorCiAyMDE3LTExLTE2ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1h
cmsgcmVncmVzcy0xNzgzODUuanMgYXMgbWVtb3J5IGV4aGF1c3RpbmcKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvYmlnSW50VGVzdHMueWFtbCBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMmIxNzdlMjYyNmMyNTQ4OGMzYTI4ZDk1ZDE2ZTc1NDYyNTcyNWYzCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRlZCB0byBzaW1wbGlm
eSBydW5uaW5nIEJpZ0ludCB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIEJpZ0ludAorIyBhcmUg
bm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBhdGg6IHN0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCistIHBhdGg6IHN0
cmVzcy9iaWctaW50LXR5cGUtb2YuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGFyZ2UtbnVtYmVyLW9vbS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGFyZ2UtbnVtYmVyLW9vbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZmMDkw
Y2JiYzM3NTM2Y2VkYTNhMmM4YzQyNDJjYTE3MmNiODhiCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sYXJnZS1udW1iZXItb29tLmpzCkBAIC0wLDAgKzEsMjEgQEAK
Ky8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFh
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpOworfQorCit2YXIgbG9uZ1N0ciA9ICJm
IjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMzA7ICsraSkKKyAgICBsb25nU3RyID0gbG9uZ1N0ciAr
IGxvbmdTdHI7CisKK2xldCBzdWIgPSBsb25nU3RyLnN1YnN0cmluZygwLCBsb25nU3RyLmxlbmd0
aCAtIDQpCitsZXQgbXNjcmlwdCA9ICIweCIgKyBsb25nU3RyICsgc3ViICsgIm4iOworCit0cnkg
eworICAgIGV2YWwobXNjcmlwdCk7CisgICAgYXNzZXJ0KGZhbHNlKTsKK30gY2F0Y2goZSkgewor
ICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiKQorfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1saXRlcmFscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzQ4MDkwYmVjY2Q5N2NkYjQ3ZTQ5NGUyYTJh
YWE0OWNkZTNhNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
aXRlcmFscy5qcwpAQCAtMCwwICsxLDExMyBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVu
Y3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlu
cHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChm
YWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5
bnRheEVycm9yKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgMCBjb252ZXJzaW9ucworbGV0IG4gPSAw
bjsKK2Fzc2VydChuID09PSAwbik7CisKK24gPSAwMG47Cithc3NlcnQobiA9PT0gMG4pOworCisv
LyBCaW5hcnkgcmVwcmVzZW50YXRpb24KKworbiA9IDBiMTExMW47Cithc3NlcnQobiA9PT0gMTVu
KTsKKworbiA9IDBiMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworbiA9IDBiMDEwbjsKK2Fzc2Vy
dChuID09PSAybik7CisKK2xldCBiaW5hcnlTdHJpbmcgPSAiMGIxIjsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsKKworbiA9IGV2YWwoYmlu
YXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2
MDc0MzE3NjgyMTE0NTZuKTsKKworbiA9IDBCMTExMW47Cithc3NlcnQobiA9PT0gMTVuKTsKKwor
biA9IDBCMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworYmluYXJ5U3RyaW5nID0gIjBCMSI7Citm
b3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisK
K24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIw
OTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKKy8vIE9jdGFsIHJlcHJlc2VudGF0aW9u
CisKK24gPSAwbzduOworYXNzZXJ0KG4gPT09IDduKTsKKworbiA9IDBvMTBuOworYXNzZXJ0KG4g
PT09IDhuKTsKKworbiA9IDBvMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwbzAwMDIw
bjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gME83bjsKK2Fzc2VydChuID09PSA3bik7CisK
K24gPSAwTzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09
PSAxNm4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworLy8gSGV4YWRlY2lt
YWwgcmVwcmVzZW50YXRpb24KKworbiA9IDB4YW47Cithc3NlcnQobiA9PT0gMTBuKTsKKworbiA9
IDB4ZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHgwMDBmZm47Cithc3NlcnQobiA9
PT0gMjU1bik7CisKK24gPSAweGZhYmNuOworYXNzZXJ0KG4gPT09IDY0MTg4bik7CisKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjBiMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMDJu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjFubiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMG84OW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvMDhuIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIwbzdubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhnbiIp
OworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHgwZ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJy
b3IoIjB4Zm5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMDBubiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMWEwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwRTIwbiIp
OworCit0cnkgeworICAgIGV2YWwoIi0tMTBuIik7CisgICAgYXNzZXJ0KGZhbHNlKTsKK30gY2F0
Y2goZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC10eXBlLW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1M2NkMzAxMjQ2Yjk1OGY0YzZkNGRh
MTFhZjdjZDBhNmI0MDkyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LXR5cGUtb2YuanMKQEAgLTAsMCArMSwxMCBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkIGFzc2VydGlvbiIpOworfQorCithc3NlcnQodHlwZW9mIDBuID09PSAiYmlnaW50Iik7
Cithc3NlcnQodHlwZW9mIDFuICE9PSAib2JqZWN0Iik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327568</attachid>
            <date>2017-11-24 20:31:36 -0800</date>
            <delta_ts>2017-11-30 05:42:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171125023132.patch</filename>
            <type>text/plain</type>
            <size>108579</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjdiMjhiMzllNTg3NTBkYTExZWVkODBhZTY1NjcyYTk0NmY2OTdkLi40NThkMWVjM2QyYjcxYzll
Nzk2YmVhNDMwNmEwM2RlZDk5NTU2ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTctMTEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IG9uIEpTQmlnSW50OjptX2RhdGEgdG8KKyAg
ICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0
eSBhbmQgYWxsb3dpbmcKKyAgICAgICAgNjQtYml0d2lzZSAob3IgMzItYml0d2lzZSkgYXJpdGht
ZXRpYyBvcGVyYXRpb25zLiBKU0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24KKyAgICAgICAgdG8gc3Rv
cmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRhXV0gYW5kIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJh
Y2sgb2YgQmlnSW50IGxlbmd0aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxv
d2luZyB0aGUgVjggb25lLiBKU0JpZ0ludDo6bV9kYXRhIGFyZSBtYW5pcHVsYXRlZAorICAgICAg
ICBieSBKU0JpZ0ludDo6c2V0RGlnaXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0
KGluZGV4KSBvcGVyYXRpb25zLgorICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25z
IHRvIHN1cHBvcnQgYXJpdGhtZXRpY3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1w
b3J0YW50IHRvIG5vdGljZSB0aGF0IG9uIHRoaXMgcmVwcmVzZW50YXRpb24sIEpTQmlnSW50Ojpt
X2RhdGFbMF0gcmVwcmVzZW50cworICAgICAgICB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQg
YW5kIEpTQmlnSW50OjptX2RhdGFbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0Cisg
ICAgICAgIHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6Qmln
SW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJl
c3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZh
bHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpiaWdJ
bnRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yQWRkKToKKyAgICAgICAgKEpT
Qzo6UmVzdWx0VHlwZTo6Zm9yTG9naWNhbE9wKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCaWdJbnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVplcm8pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRl
cm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldERpZ2l0KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAoSlNDOjphc0JpZ0ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9O
dW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xv
d0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9N
YXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUtleS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE3LTExLTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgZmVhdHVyZSBkZWZpbmUgZm9yIGFsdGVybmF0aXZlIHByZXNlbnRhdGlvbiBidXR0
b24gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWM0YTk5YmFiMDUw
ODA3ZTY3MjZlMTZiYjI1OWFkMDJiMjY0ZDcwLi5lZjI1MmMzYWQ3MzY1ZjM2NzZlYzQwMzY4ZWJl
NGQ3NzllYWJhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzkyLDcgKzc5
Miw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAv
KiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwotCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzczOEQxMUVEQjU2NzIw
MDNGMkIwQiAvKiBQYXJzZUludC5oICovOyB9OworCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIg
LyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3MzFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVy
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
Mjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3Jh
cHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMjk1Mjc0MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0
ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMjksNiArMTEyOSw3IEBACiAJCTg2NzA0
Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNC
aWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAv
KiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1i
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgw
MDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDQsNiArMzY0NSw4IEBACiAJCTg2ODgwRjFC
MTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBw
YXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBK
U0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JpZ0ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYgLyog
SlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCaWdJ
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRBMDA4
NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0
NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBsaW5lRW5k
aW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTg1MiwxNCArNTg1NSwxNCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0u
bW0gKi8sCi0JCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1t
Lm1tICovLAotCQkJCTUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1t
bS5tbSAqLywKLQkJCQk1MzBBNjZCODFGQTNFNzdFMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTQt
bW0ubW0gKi8sCi0JCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
LW1tLm1tICovLAogCQkJCTUzNkIzMEQyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
Mi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovLAogCQkJCTUzNkIzMEQzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
My5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0
LW1tLm1tICovLAogCQkJCTUzNkIzMEUxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEzRTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1
LW1tLm1tICovLAogCQkJCTUzNkIzMEUyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NS5jcHAgKi8sCiAJCQkJNTM2QjMwRUExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2
LmNwcCAqLywKIAkJCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcu
Y3BwICovLApAQCAtNjQ4Nyw2ICs2NDkwLDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENB
IC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0
MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMz
MUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3
IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAv
KiBKU0NhbGxlZS5jcHAgKi8sCkBAIC04NzQ1LDYgKzg3NTAsNyBAQAogCQkJCThCQzA2NDg5MUUx
QUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFBMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTg5OCwx
NCArOTkwNCwxNCBAQAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxOUExRjczNUU3ODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM2QjMxOUIxRjcz
NUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1t
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwQTY2QkIxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2U1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUYxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTlCMUY3
MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNjYxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
MEE2NkJCMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNkUxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDcwZTRhMzI1NzA0MjI1NTZkYWM3M2I3MmY5ZTIxOWIyZTI3MGU0MzcuLmE1ODc4
YjUyN2RkOTRkNGNiN2E5OWZiNGMzNGJhM2I4YzEwNTViMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKQEAgLTc2NCw2ICs3NjQsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9KU0FzeW5jRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1bnRpbWUv
SlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgx
Yjg3YzFiOTY2NzguLjZmYzRmNjhjNWFhZjE2NzY3NWYwYTc2YjU2M2ViMDNkZmVjMThiNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgxMjc0NGNlYmZi
NWNiZjg5NzY0OTkwZTU1MC4uYjQ5YTljMTM5MmNlYmVkZmZhYWIwNTUyNTFjZWM4YTVmOGRlYmU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC05NSw2ICs5Niw3IEBAIHZvaWQgVmFyaWFibGU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAogUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKIHsKKyAgICBtX2Vycm9yID0gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgbV9jb2RlQmxvY2stPnNldFRoaXNSZWdpc3RlcihtX3RoaXNSZWdp
c3Rlci52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAKICAgICBlbWl0TG9nU2hhZG93Q2hpY2tlblByb2xv
Z3VlSWZOZWNlc3NhcnkoKTsKQEAgLTIxMiw2ICsyMTQsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7
CiAKKyAgICBpZiAobV9lcnJvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX2Vycm9yOwor
CiAgICAgaWYgKG1fZXhwcmVzc2lvblRvb0RlZXApCiAgICAgICAgIHJldHVybiBQYXJzZXJFcnJv
cihQYXJzZXJFcnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJz
ZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTE3ODMsNiArMTc4OCwxNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xU
eXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7Cisg
ICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfaXNfY2VsbF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzcmNJbmRleCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJp
Z0ludFR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdp
bmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3Jf
bnVsbCk7CkBAIC0zMTI1LDYgKzMxMzgsMjYgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxv
Y2stPmFkZENvbnN0YW50QnVmZmVyKGxlbmd0aCk7CiB9CiAKK0pTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4X3QgcmFkaXgpCit7CisgICAgQmlnSW50TWFwRW50cnkgZW50cnlLZXkgPSBCaWdJbnRNYXBF
bnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgpOworICAgIGF1dG8gaXQgPSBtX2JpZ0ludE1h
cC5maW5kKGVudHJ5S2V5KTsKKyAgICBpZiAoaXQgIT0gbV9iaWdJbnRNYXAuZW5kKCkpCisgICAg
ICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsICp2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCBy
YWRpeCk7CisgICAgaWYgKCFiaWdJbnRJbk1hcCkgeworICAgICAgICBtX2Vycm9yID0gUGFyc2Vy
RXJyb3IoUGFyc2VyRXJyb3I6Ok91dE9mTWVtb3J5KTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgfQorICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworCisgICAg
YXV0byBhZGRlZEVudHJ5ID0gbV9iaWdJbnRNYXAuYWRkKGVudHJ5S2V5LCBiaWdJbnRJbk1hcCk7
CisgICAgQVNTRVJUKGFkZGVkRW50cnkuaXNOZXdFbnRyeSk7CisKKyAgICByZXR1cm4gYWRkZWRF
bnRyeS5pdGVyYXRvci0+dmFsdWU7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBK
U1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNi
ZDQwNTJhZTVhMmI2YTA5NzVkYTA0MGQ1YWY3Yi4uZDUzZmI0OTUyMjMzZDIzMDg3YWNlZjQwMzQz
ZWQzODQ3YzZiMWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxh
YmVsU2NvcGUuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU2Vn
bWVudGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMTAwMCwxMCArMTAwMiwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBhbGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9j
YXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNW
YWx1ZT4gTnVtYmVyTWFwOwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0lt
cGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOwot
ICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3Rl
cklEKj4gVGVtcGxhdGVSZWdpc3RyeUtleU1hcDsKLSAgICAgICAgCisgICAgICAgIHVzaW5nIEJp
Z0ludE1hcEVudHJ5ID0gc3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdD47Cisg
ICAgICAgIHN0cnVjdCBCaWdJbnRFbnRyeUhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goQmlnSW50TWFwRW50cnkga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBrZXkuZmlyc3QtPmV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgKyBXVEY6Omlu
dEhhc2goa2V5LnNlY29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJz
dCAmJiBhLnNlY29uZCA9PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hN
YXA8ZG91YmxlLCBKU1ZhbHVlPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9
IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNo
PjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFw
RW50cnksIEpTQmlnSW50KiwgQmlnSW50RW50cnlIYXNoPjsKKyAgICAgICAgdXNpbmcgVGVtcGxh
dGVSZWdpc3RyeUtleU1hcCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdp
c3RlcklEKj47CisKICAgICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29u
c3RydWN0KCkuIFRoaXMgd29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVj
dGVkIGZ1bmN0aW9ucyBoYXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBj
b25zdHJ1Y3QKICAgICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5l
dyBPYmplY3QoKSIpLgpAQCAtMTA4OCw2ICsxMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRp
ZmllciYsIHVpbnQ4X3QgcmFkaXgpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZVJl
Z2lzdHJ5S2V5Q29uc3RhbnQoUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYpOwogCiAgICAgICAg
IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC0xMTg3LDYgKzEyMDYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1Zh
bHVlV2l0aFJlcHJlc2VudGF0aW9uLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVz
ZW50YXRpb25IYXNoLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+
IEpTVmFsdWVNYXA7CiAgICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJ
ZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFwOworICAgICAgICBJZGVudGlmaWVyQmlnSW50
TWFwIG1fYmlnSW50TWFwOwogICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxh
dGVSZWdpc3RyeUtleU1hcDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplciB7ICZtX2luc3RydWN0aW9ucyB9OwpAQCAtMTIwOCw2ICsxMjI4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgQ2F0Y2hFbnRyeSA9IHN0ZDo6
dHVwbGU8VHJ5RGF0YSosIGludCwgaW50PjsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1f
Y2F0Y2hlc1RvRW1pdDsKKyAgICAgICAgUGFyc2VyRXJyb3IgbV9lcnJvcjsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBkN2ViY2E3
MGRmODA4NDdmMzIwLi43ZjNkYzU0NzNkNzRjZTNiMjNjY2RlMmE3YTZjNTEwYTZkOGFmNmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3Iu
YWRkU3RyaW5nQ29uc3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBn
ZW5lcmF0b3IuYWRkQmlnSW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCA0Y2FhZjVmYTQ1NTY4YmNmYTZjZjFiNGJmZGM2NGI0MTU2YWNiZjhlLi41
ZTJjNDc2NGMyMWE3MjU3MjE3NDNjNzVkNjk0MjM1M2EwYjcyY2E2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAg
Ym9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3Ry
dWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAg
ICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8
IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5
bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAo
IWlzU3RyaWN0TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsK
ICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1i
b2xzIGhlcmUgc2luY2UgZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5
YWM3YmViMDI0ZDYwMC4uZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBj
YXNlIEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUs
IGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJn
dW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggYjlmNzgzMDgxNzQ4MThhZWI1MzAwMGE0Njg4ODI0MmQzYmU3MTE0NC4uOGYxN2FlM2U2
ZDU4YjhlMGNlM2I3OWMzNGY2NWEzZTEyM2IwYzllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCBhZDg2OWYyMGUyZTRkMWI5YWUwZGE3ODc0ODJmYjZmZTdkMjhhZmFhLi40Y2Y4YzZk
NGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFn
OEJpdEJ1ZmZlciA9PSA4KTsKIAogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTIw
MDAwOworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg0ODAwMDA7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAg
YXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6
OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MjIwMDAwOworICAgICAgICB1aW50MzJf
dCBiaXRzID0gMHg4ODAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
Vk0mIHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVpbnQz
Ml90IGJpdHMgPSAweDI0MDAwMDsKKyAgICAgICAgdWludDMyX3QgYml0cyA9IDB4OTAwMDAwOwog
ICAgICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKQEAgLTE5Nyw3ICsx
OTcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNT
RVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTQwMDAw
OworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg1MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJp
dGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCmluZGV4IGFiOTU2MTNlNmU1NTI4MGJjZGIwNDhmMjI1MmIxMjVjMzFkZjNkYWUu
LjNhZDM4OGM0Yzk5Njk4OWVlYTkzMzQ0MDBmMDVmM2IzNWM3NzE3MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yMzIsNiArMjMyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEludGVnZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CisgICAgCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyKiBiaWdJbnQsIHVpbnQ4X3QgcmFkaXgpCisgICAgeworICAgICAgICBp
bmNDb25zdGFudHMoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlnSW50
Tm9kZShsb2NhdGlvbiwgKmJpZ0ludCwgcmFkaXgpOworICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKaW5kZXggNmVlNmM1ZGJkNTlhZGUzN2YyZDFiMjJkMjkxNjQ4YWQyOTZmNTQxZC4uNmQ0
ZDc2ZWQyMThhNjg1MTY5N2M1NThmNTAzYjVkYmY0ZTZmYzg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMu
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xNTAwLDcgKzE1MDEsNyBAQCB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFy
c2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKgogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFy
c2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgVmFyaWFudDxkb3VibGUs
IGNvbnN0IElkZW50aWZpZXIqPiBMZXhlcjxUPjo6cGFyc2VIZXgoKQogewogICAgIC8vIE9wdGlt
aXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1
aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0xNTEyLDEwICsxNTEzLDggQEAgQUxXQVlTX0lOTElO
RSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAt
LW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkg
JiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlmIChtYXhpbXVtRGlnaXRzID49IDApIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoTElLRUxZKG1heGltdW1EaWdpdHMgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkK
KyAgICAgICAgcmV0dXJuIGhleFZhbHVlOwogCiAgICAgLy8gTm8gbW9yZSBwbGFjZSBpbiB0aGUg
aGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1ZXMgYXJlIHNoaWZ0ZWQgb3V0IGFuZCBw
bGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4KQEAgLTE1MzMsMTEgKzE1MzIsMTQgQEAg
QUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRP
dmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CisgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAg
ICAgICByZXR1cm4gbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSk7CisgICAgCisgICAgcmV0dXJuIHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1
ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRl
bnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKQogewogICAgIC8vIE9wdGltaXphdGlv
bjogbW9zdCBiaW5hcnkgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgYmlu
YXJ5VmFsdWUgPSAwOwpAQCAtMTU1NCwxMCArMTU1Niw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1kaWdp
dDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+
PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkg
ewotICAgICAgICByZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGln
aXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4oYmluYXJ5VmFsdWUpOwogCiAg
ICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAg
ICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAtMTU2NywxNyArMTU2NywxNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7
Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICdu
JykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5z
aXplKCkpKTsKIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmll
cio+PihwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCks
IDIpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4
ZXI8VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3Rk
OjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6
cGFyc2VPY3RhbCgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IG9jdGFsIHZhbHVlcyBm
aXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IG9jdGFsVmFsdWUgPSAwOwpAQCAtMTU5NCwx
MCArMTU5NCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3Vi
bGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlP
Y3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlE
aWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBv
Y3RhbFZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSgh
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElk
ZW50aWZpZXIqPj4ob2N0YWxWYWx1ZSk7CisKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGln
aXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBA
IC0xNjA3LDE3ICsxNjA2LDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VP
Y3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAg
IGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IDA7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRpZmll
cihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm5WYWx1
ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwg
OCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4ocGFyc2VJbnRPdmVyZmxvdyhtX2J1
ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCA4KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkKIHsKICAgICAv
LyBPcHRpbWl6YXRpb246IG1vc3QgZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAg
ICB1aW50MzJfdCBkZWNpbWFsVmFsdWUgPSAwOwpAQCAtMTYzOCwxMCArMTYzNyw4IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUp
CiAgICAgICAgICAgICAtLWRpZ2l0OwogICAgICAgICB9IHdoaWxlIChpc0FTQ0lJRGlnaXQobV9j
dXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1
cnJlbnQgIT0gJy4nICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScpIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gZGVjaW1hbFZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAo
bV9jdXJyZW50IHwgMHgyMCkgIT0gJ2UnICYmIG1fY3VycmVudCAhPSAnbicpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
PihkZWNpbWFsVmFsdWUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0g
MTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0x
NjUxLDggKzE2NDgsMTEgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2lt
YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwogICAg
ICAgICBzaGlmdCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNl
QmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVyKG1f
YnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAg
LTIxMDAsMTAgKzIxMDAsMzAgQEAgc3RhcnQ6CiAgICAgICAgICAgICB0b2tlbiA9IERPVDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRl
Y2ltYWxQb2ludDsKKyAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAg
ICAgICB0b2tlbiA9IERPVUJMRTsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJF
eHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9y
Iik7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwor
ICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgdG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCks
IHBhcnNlZExlbmd0aCk7CisgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAg
ICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91Ymxl
VmFsdWUpOworCisgICAgICAgIGlmIChVTkxJS0VMWShpc0lkZW50U3RhcnQobV9jdXJyZW50KSkp
IHsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBpZGVu
dGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCIpOworICAgICAg
ICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJP
UlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgZ290
byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJhY3Rlclplcm86CiAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ3gnKSB7CisgICAgICAgIGlmIChp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ3gnKSkgewogICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcw
eCciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VS
Uk9SVE9LOwpAQCAtMjExMywxNyArMjEzMywyNyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNo
aWZ0IG91dCB0aGUgJ3gnIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAg
ICAgIHBhcnNlSGV4KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgYXV0byBw
YXJzZU51bWJlclJlc3VsdCA9IHBhcnNlSGV4KCk7CisgICAgICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxkb3VibGU+KHBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihwYXJzZU51bWJlclJl
c3VsdCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lO
VDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KHBhcnNlTnVtYmVyUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMTY7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAg
dG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2InKSB7Cisg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2InKSkgewog
ICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gYmluYXJ5IGRpZ2l0
cyBhZnRlciAnMGInIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfQklO
QVJZX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMzMsMTggKzIxNjMsMjggQEAgc3RhcnQ6CiAgICAg
ICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICdiJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgp
OwogCi0gICAgICAgICAgICBwYXJzZUJpbmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAg
ICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUJpbmFyeSgpOworICAgICAg
ICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRv
dWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlID0gcGFyc2VOdW1iZXJSZXN1bHQgPyBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51
bWJlclJlc3VsdCkgOiAwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdG9r
ZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFy
c2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAyOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkp
IHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8g
c3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAg
ICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAg
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAg
ICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09
ICdvJykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQs
ICdvJykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSU9jdGFsRGlnaXQocGVlaygxKSkpIHsK
ICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gb2N0
YWwgZGlnaXRzIGFmdGVyICcwbyciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlO
QVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTU0LDEzICsyMTk0LDIzIEBAIHN0YXJ0
OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnbycgcHJlZml4LgogICAgICAgICAgICAg
c2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7Cisg
ICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyUmVzdWx0IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUgPSBwYXJzZU51bWJlclJlc3VsdCA/IFdURjo6Z2V0PGRvdWJsZT4oKnBh
cnNlTnVtYmVyUmVzdWx0KSA6IDA7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+
KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9
IDg7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJy
ZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAg
ICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAg
ICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAg
ICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxNzIsMzQgKzIyMjIsNDYgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0FT
Q0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VPY3RhbCh0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJl
c3VsdCA9IHBhcnNlT2N0YWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgewor
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+
KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyTnVt
YmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9V
QkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJS
ZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3Vs
dCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkg
eworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3Vi
bGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFy
c2VOdW1iZXJSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAg
ICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci1pbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Ogot
ICAgICAgICAgICAgICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdlJykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9u
LW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51
bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxMDsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IElO
VEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBET1VCTEU7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVy
OC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9
PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAg
IHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tl
biA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvcklu
dGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZDg0NWUyZTE0ZjU2OWE0ZDM4ZTJjM2Q5OWVmNmM0
NjcyMzI0MzIyMC4uMTk3N2RiMTY0OTg4NTVhMTk3MmM4NjdhNDE5ODNlZDY3NDhiYjNiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTczLDEyICsxNzMsMTMgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJ
TkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqLCBib29sIHN0cmlj
dE1vZGUpOwogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gTkVWRVJfSU5M
SU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdGEqLCBi
b29sIHN0cmljdE1vZGUpOwogCisgICAgZW51bSBjbGFzcyBOdW1iZXJQYXJzZVJlc3VsdCB7IE51
bWJlciwgQmlnSW50LCBGYWlsdXJlIH07CiAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRT
dHJpbmdzLCBMZXhlckVzY2FwZVBhcnNlTW9kZSBlc2NhcGVQYXJzZU1vZGU+IEFMV0FZU19JTkxJ
TkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VDb21wbGV4RXNjYXBlKGJvb2wgc3RyaWN0TW9kZSwg
VCBzdHJpbmdRdW90ZUNoYXJhY3Rlcik7CiAgICAgQUxXQVlTX0lOTElORSBTdHJpbmdQYXJzZVJl
c3VsdCBwYXJzZVRlbXBsYXRlTGl0ZXJhbChKU1Rva2VuRGF0YSosIFJhd1N0cmluZ3NCdWlsZE1v
ZGUpOwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVl
KTsKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZh
bHVlKTsKKyAgICBBTFdBWVNfSU5MSU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVy
Kj4gcGFyc2VIZXgoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxk
b3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VCaW5hcnkoKTsKKyAgICBBTFdBWVNfSU5M
SU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFy
c2VPY3RhbCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJzZURlY2ltYWwoKTsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKTsKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VNdWx0aWxpbmVDb21tZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGFjZGFjNmNhMTE2N2Q1ZGY0YmY0
NmFkZGQ3MzliZWNlYzhiZDE5YmYuLmUzOWYzNDc4Nzg3ZjlmMDRlNDBmYTk4MTI2N2RkNzAyNThi
MTgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCkBAIC05Miw2ICs5MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
CisgICAgaW5saW5lIEJpZ0ludE5vZGU6OkJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUsIHVpbnQ4X3QgcmFkaXgpCisgICAg
ICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQor
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDog
Q29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAy
YTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNk
Yzc0ZGIzMThlMjNiY2NlMjY3ZDhkMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVh
bCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MzI4LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25z
dGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29u
c3QgdWludDhfdCBtX3JhZGl4OworICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2Fj
MWJkNTQyNmM0YTExZjAyZGFhOGU5OGQ1MzE1MC4uODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNm
NTMxZWZmNjczMThkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAg
cmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQor
ICAgIGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5nOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7
CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZj
NS4uYzIwNThhZWViMGQzODhkODExOTMyY2ZjN2NhNTExNDA5NDMwODE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAg
ZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9V
QkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUs
CkBAIC0yMTgsNiArMjE5LDEwIEBAIHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICAgICAgYm9vbCBl
c2NhcGVkOwogICAgIH07CiAgICAgc3RydWN0IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciog
YmlnSW50U3RyaW5nOworICAgICAgICB1aW50OF90IHJhZGl4OworICAgIH07CisgICAgc3RydWN0
IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogY29va2VkOwogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiByYXc7CiAgICAgICAgIGJvb2wgaXNUYWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRleCA0ZjY0NzFiNTRmZDVlODgxZGNkYzMyYmNmY2FmNDQ1
ZmE1MmEyODQyLi4wMGMwNWVlOWU3MzExNDEwZmRmNTJkNjNjOTk2MmUzZDYwMmMwYWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtMzEsMTggKzMxLDE5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3Qg
T3BlcmFuZFR5cGVzOwogCi0gICAgICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOworICAgICAgICB1
c2luZyBUeXBlID0gdWludDhfdDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZUludDMy
ID0gMTsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwMjsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlU3RyaW5nID0gMHgwNDsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVsbCAgID0gMHgwODsKICAgICAgICAgc3Rh
dGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQm9vbCAgID0gMHgxMDsKLSAgICAgICAgc3RhdGljIGNv
bnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5
cGUgVHlwZU1heWJlQmlnSW50ID0gMHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlw
ZU1heWJlT3RoZXIgID0gMHg0MDsKIAotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0
cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBU
eXBlTWF5YmVCb29sIHwgVHlwZU1heWJlT3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBl
IFR5cGVCaXRzID0gVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJl
TnVsbCB8IFR5cGVNYXliZUJvb2wgfCBUeXBlTWF5YmVCaWdJbnQgfCBUeXBlTWF5YmVPdGhlcjsK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0g
NjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAg
c3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0g
VHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKICAgICAg
ICAgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpCkBAIC03MCw2ICs3MSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5
cGVNYXliZUJvb2w7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGRlZmluaXRlbHlJc0JpZ0lu
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJp
dHMpID09IFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgbWlnaHRC
ZU51bWJlcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBU
eXBlTWF5YmVOdW1iZXI7CkBAIC04MCw2ICs4NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiAhbWlnaHRCZU51bWJlcigpOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBib29sIG1pZ2h0QmVCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlQmlnSW50OworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBpc05vdEJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbWln
aHRCZUJpZ0ludCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0
VHlwZSBudWxsVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBl
KFR5cGVNYXliZU51bGwpOwpAQCAtMTEwLDYgKzEyNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZVN0cmluZyk7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIGJpZ0ludFR5cGUoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQpOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSB1bmtub3duVHlwZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVCaXRzKTsKQEAg
LTEyMSw2ICsxNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVtYmVyVHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSB8
fCBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlu
Z1R5cGUoKTsKKyAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50KCkgfHwgb3Ay
LmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBvcDEuZGVmaW5p
dGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpID8gYmlnSW50VHlwZSgp
IDogdW5rbm93blR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdPck51bWJlclR5cGUo
KTsKICAgICAgICAgfQogCkBAIC0xMzQsNiArMTU3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAgIGlmIChvcDEuZGVm
aW5pdGVseUlzU3RyaW5nKCkgJiYgb3AyLmRlZmluaXRlbHlJc1N0cmluZygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRl
bHlJc0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYmlnSW50VHlwZSgpOwogICAgICAgICAgICAgcmV0dXJuIHVua25vd25UeXBlKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAppbmRleCA4ZGIzNWM3Nzk2ZjRkMzZmYTU0NTI1OTE2MGRjNTg5ZWI4NDlkOTU2Li41Mzlj
NDczNDBlYjZhNjQ1ZmU3Y2FmNDQxYzNmMDBkYjViM2NmNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIGludCBNZXRhUHJvcGVydHlCaXQgPSAweDgw
MDAwMDAwOwogICAgIGVudW0gOiBpbnQgeyBOb25lRXhwciA9IDAsCi0gICAgICAgIFJlc29sdmVF
dmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHBy
LAorICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91
YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxF
eHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1
bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNrZXRFeHBy
LCBEb3RFeHByLCBDYWxsRXhwciwKICAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIs
IFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKQEAgLTE3NSw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVEb3VibGVFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gRG91
YmxlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUludGVnZXJFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gSW50ZWdlckV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciosIGludCkgeyByZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikg
eyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJu
IE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUxYmRlNTVm
OThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFycmF5SXRl
cmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3JvKEJpZ0lu
dCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1h
Y3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjgwODhkN2QyZmUzNjRiYTVhZjcyMDZlMzNlZDExNzQ1MDM0NDY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwCkBAIC0wLDAgKzEsNjI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8g
TGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6CisgKgorICog
Q29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgKgor
ICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMuICBQbGVh
c2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQorICogQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbMl0u
CisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVy
L0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21h
c3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiUGFyc2VJ
bnQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmVj
dG9yLmg+CisKKyNkZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQs
ICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OworCit2b2lk
IEpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIGlmICh0
aGlzT2JqZWN0LT5tX2RhdGEpCisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2Jq
ZWN0LT5tX2RhdGEuZ2V0KCkpOworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2xlbmd0aChjcmVhdGVXaXRoTGVuZ3RoKQoreyB9CisKK3ZvaWQg
SlNCaWdJbnQ6OmluaXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBBU1NFUlQo
bV9kYXRhKTsKKworICAgIHNldFNpZ24oZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlhbGl6ZSkg
eworICAgICAgICB2b2lkKiBkYXRhID0gbV9kYXRhLmdldCgpOworICAgICAgICBtZW1zZXQocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZGF0YSksIDAsIGxlbmd0aCgpICogRGlnaXRTaXplKTsKKyAg
ICB9Cit9CisKK1N0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSlNCaWdJbnQq
IEpTQmlnSW50OjpjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEpT
QmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlKGV4ZWMsIHZtLCAwKTsKKyAgICB6ZXJvQmlnSW50
LT5zZXRTaWduKGZhbHNlKTsKKyAgICByZXR1cm4gemVyb0JpZ0ludDsKK30KKworSlNCaWdJbnQq
IEpTQmlnSW50OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBjcmVhdGVXaXRo
TGVuZ3RoKQoreworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0JpZ0ludD4odm0uaGVhcCkpIEpTQmlnSW50KHZtLCB2bS5iaWdJbnRTdHJ1Y3R1cmUu
Z2V0KCksIGNyZWF0ZVdpdGhMZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yywgdm0pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAKKyAgICBpZiAobV9sZW5ndGgpIHsKKyAgICAgICAgdm9pZCogYmFja2lu
Z1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX2RhdGEua2luZCkudHJ5QWxsb2Nh
dGUoc2l6ZUZvcihtX2xlbmd0aCkpOworICAgICAgICBEaWdpdCogZGF0YSA9IHN0YXRpY19jYXN0
PERpZ2l0Kj4oYmFja2luZ1N0b3JlKTsKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBtX2RhdGEuc2V0KHZtLCB0aGlzLCBkYXRhKTsKKyAg
ICB9Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJ
bnQqPih0aGlzKTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6dG9TdHJp
bmdPbmVEaWdpdCgpCit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7CisgICAgICAgIERpZ2l0IHJE
aWdpdCA9IGRpZ2l0KDApOworICAgICAgICBpZiAockRpZ2l0IDw9IDkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKKyAgICB9CisgICAgcmV0dXJuIHsg
fTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4KQoreworICAgIGlmIChzLmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5s
ZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0s
IHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7Cit9CisKK1N0
cmluZyBKU0JpZ0ludDo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQgcmFkaXgpCit7Cisg
ICAgaWYgKHRoaXMtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKCcwJyk7CisKKyAgICByZXR1cm4gdG9TdHJp
bmdHZW5lcmljKGV4ZWMsIHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJv
KCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0
aCgpID09IDA7Cit9CisKKy8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFk
ZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlw
bHlBZGQodWludHB0cl90IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElD
X0FTU0VSVChzaXplb2YoZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNT
RVJUKHNpemVvZihzdW1tYW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVs
dGlwbHlBZGQodGhpcywgZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVp
bnQ2NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09f
RElHSVQgMQordHlwZWRlZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhB
VkVfVFdPX0RJR0lUIDAKKyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5p
dGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUg
b3IgbGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQg
YSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdv
RGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdv
RGlnaXQ+KGIpOworICAgIGNhcnJ5ICs9IHJlc3VsdCA+PiBEaWdpdEJpdHM7CisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9
IGEgKyBiOworCisgICAgaWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAg
CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50
IHRvIGFuIGluaXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAor
Ly8gYnkgb25lIG9yIGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0
U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElH
SVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0
aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRz
KSAmIDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vs
c2UKKyAgICBEaWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAg
ICAgYm9ycm93ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1
bHQpOworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQu
IEhpZ2ggaGFsZiBpcyBpbiB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0
TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lU
CisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGlj
X2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0
aXBseSBpbiBoYWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FI
IEFMXSpbQkggQkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBb
QUwqQkxdICAvLyByTG93CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAg
IC8vICAgICsgICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAg
ICAgIC8vIHJIaWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIz
XSwgbG93ID0gW1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3Qg
YmUgY2FyZWZ1bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBh
TG93ID0gYSAmIEhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IEhhbGZEaWdp
dEJpdHM7CisgICAgRGlnaXQgYkxvdyA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJI
aWdoID0gYiA+PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICog
YkxvdzsKKyAgICBEaWdpdCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9
IGFIaWdoICogYkxvdzsKKyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisg
ICAgRGlnaXQgY2FycnkgPSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQx
IDw8IEhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQy
IDw8IEhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gSGFsZkRp
Z2l0Qml0cykgKyAock1pZDIgPj4gSGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisg
ICAgcmV0dXJuIGxvdzsKKyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dl
ciBvZiB7ZXhwb25lbnR9LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6
RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQorewor
ICAgIERpZ2l0IHJlc3VsdCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAg
ICAgICBpZiAoZXhwb25lbnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAg
ICAgICAgZXhwb25lbnQgPj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3Rp
ZW50ID0gKGhpZ2ggPDwgRGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pT
QmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBE
aWdpdCBkaXZpc29yLCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2
aXNvcik7CisjaWYgQ1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERp
Z2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlz
b3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVt
fSBpbiByZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAv
LyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlz
b3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAg
IDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJl
bWFpbmRlciA9IHJlbTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBD
T01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVt
OworICAgIF9fYXNtX18oImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtx
dW90aWVudH0gd2lsbCBiZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1
b3RpZW50KSwgIj1kIihyZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVk
eCwge2xvd30gaW50byBlYXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVn
aXN0ZXIgb3Igc3RhY2sgc2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2
aXNvcl0gInJtIihkaXZpc29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBx
dW90aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0g
MXVsbCA8PCBIYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tl
cidzIERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6
NjQoZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYK
KyAgICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFs
ZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKwor
ICAgIC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNv
IHdlICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0g
MCBhbmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50
cHRyX3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19j
YXN0PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7
CisgICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMp
KSAmIHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVu
MSA9IHVuMTAgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRp
Z2l0TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVu
MzIgLSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAq
IHZuMCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAg
ICAgICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxm
RGlnaXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZu
MTsKKyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxm
RGlnaXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7Cisg
ICAgICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBr
SGFsZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRl
ciA9ICh1bjIxICoga0hhbGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7Cisg
ICAgcmV0dXJuIHExICoga0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0
aXBsaWVzIHtzb3VyY2V9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSBy
ZXN1bHQuCisvLyB7cmVzdWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBm
b3IgaW5wbGFjZSBtb2RpZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5
QWRkKEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4s
IEpTQmlnSW50KiByZXN1bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7
CisgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9
IHN1bW1hbmQ7CisgICAgRGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
OyBpKyspIHsKKyAgICAgICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAg
ICAgIERpZ2l0IG5ld0NhcnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQn
cyBtdWx0aXBsaWNhdGlvbi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1
cnJlbnQgPSBkaWdpdE11bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8v
IEFkZCBsYXN0IHJvdW5kJ3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRk
KGN1cnJlbnQsIGhpZ2gsIG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1
cnJlbnQsIGNhcnJ5LCBuZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBw
cmVwYXJlIGZvciBuZXh0IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJl
bnQpOworICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsK
KyAgICB9CisKKyAgICBpZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0
LT5zZXREaWdpdChuKyssIGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxs
ZXJzIGRvbid0IHBhc3MgaW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0
LgorICAgICAgICB3aGlsZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1
bHQtPnNldERpZ2l0KG4rKywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEoY2FycnkgKyBoaWdoKSk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQoSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
eC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQo
aSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vIERpdmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQg
aW4ge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNv
bnRyYWN0IGlzOgorLy8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRo
IDAgPD0gcmVtYWluZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkg
aGFuZGxlLCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0
ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJp
ZyBlbm91Z2guCisvLyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGlu
LXBsYWNlIGRpdmlzaW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRo
ZSBjYWxsZXIgaXMgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmln
SW50OjphYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIERpZ2l0
IGRpdmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAg
QVNTRVJUKGRpdmlzb3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQo
IXgtPmlzWmVybygpKTsKKyAgICByZW1haW5kZXIgPSAwOworICAgIGlmIChkaXZpc29yID09IDEp
IHsKKyAgICAgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCisgICAgICAgICAgICAqcXVvdGll
bnQgPSB4OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGxlbmd0aCA9IHgtPmxl
bmd0aCgpOworICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CisgICAgICAgIGlmICgqcXVv
dGllbnQgPT0gbnVsbHB0cikgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZShl
eGVjLCB2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5kZXIs
IHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVu
dCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYo
cmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICB9Cit9CisK
Ky8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMgcmVxdWlyZWQg
cGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEg
bnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFycmF5CisvLyB2YWx1ZSBpcyB0aGUg
YWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdlbmVyYXRlIHRoaXMgdGFibGU6Cisv
LyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHByaW50KE1hdGguY2VpbChNYXRoLmxv
ZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWludDhfdCBNYXhCaXRzUGVyQ2hhcltd
ID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwgIDgzLCAgOTAsICA5NiwgLy8g
MC4uOAorICAgIDEwMiwgMTA3LCAxMTEsIDExNSwgMTE5LCAxMjIsIDEyNiwgMTI4LCAgICAgLy8g
OS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0NywgICAgIC8v
IDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2LCAxNTgsIDE1OSwgMTYwLCAgICAg
Ly8gMjUuLjMyCisgICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgQml0c1BlckNoYXJUYWJsZVNoaWZ0
ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgPSAx
dSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKKy8vIENvbXB1dGUgKGFuIG92ZXJhcHByb3hp
bWF0aW9uIG9mKSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nOgorLy8gRGl2aWRl
IGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNoYXJh
Y3Rlci4KK3VpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVp
cmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQgbGFzdERpZ2l0LCBib29sIHNpZ24pCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpbnQgbGVhZGluZ1plcm9zID0gY2x6NjQobGFzdERp
Z2l0KTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNsejMyKGxhc3REaWdpdCk7Cisj
ZW5kaWYKKyAgICBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3RoICogRGlnaXRCaXRzIC0gbGVhZGlu
Z1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVwcmVzZW50
IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5kIGFuIGFw
cHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9
IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZvciBlc3RpbWF0aW5nIHJlc3VsdCBs
ZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5kIHdvcmsgd2l0aAorICAgIC8vIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0ZXIgY2FuIHJlcHJlc2VudC4KKyAg
ICB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXIgLSAxOworCisgICAgLy8g
UGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdpdGggdWludDY0X3QgdG8gYXZvaWQg
b3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgPSBiaXRM
ZW5ndGg7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCAqPSBCaXRzUGVyQ2hhclRhYmxl
TXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAgIG1heGltdW1DaGFyYWN0ZXJzUmVx
dWlyZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWly
ZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCArPSBz
aWduOworICAgIAorICAgIHJldHVybiBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkOworfQorCitT
dHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50
KiB4LCBpbnQgcmFkaXgpCit7CisgICAgU3RyaW5nVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7
CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKCF4
LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgYm9vbCBz
aWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQ
ZXJDaGFyW3JhZGl4XTsKKyAgICB1aW50NjRfdCBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkID0g
Y2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChsZW5ndGgsIHJhZGl4LCB4LT5kaWdp
dChsZW5ndGggLSAxKSwgc2lnbik7CisKKyAgICBpZiAobWF4aW11bUNoYXJhY3RlcnNSZXF1aXJl
ZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJl
c3VsdFN0cmluZykpOworICAgIH0KKworICAgIERpZ2l0IGxhc3REaWdpdDsKKyAgICBpZiAobGVu
Z3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRpZ2l0KDApOworICAgIGVsc2Ugewor
ICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAqIEJpdHNQZXJDaGFyVGFibGVNdWx0
aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERpZ2l0IGNodW5rRGl2aXNvciA9IGRp
Z2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAgICAvLyBCeSBjb25zdHJ1Y3Rpb24g
b2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVuIG92ZXJmbG93LgorICAgICAgICBB
U1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5vblplcm9EaWdpdCA9IGxlbmd0aCAt
IDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJvRGlnaXQpKTsKKworICAgICAgICAv
LyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0ludCB0aGF0IHdlIGhhdmVuJ3QgbG9v
a2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggInJlbWFpbmRl
ciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0cjsKKworICAgICAgICAvLyBJbiB0
aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFsbG9jYXRpbmcgYSBuZXcgQmlnSW50
IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7IGZyb20gdGhlbiBvbiBkaXZpZGUg
dGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50KiogZGl2aWRlbmQgPSAmeDsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7CisgICAgICAgICAgICBhYnNvbHV0
ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgY2h1bmspOwor
ICAgICAgICAgICAgQVNTRVJUKHJlc3QpOworCisgICAgICAgICAgICBkaXZpZGVuZCA9ICZyZXN0
OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaHVua0NoYXJzOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2NodW5rICUgcmFk
aXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRpeDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVCghY2h1bmspOworCisgICAgICAgICAgICBpZiAoIXJlc3QtPmRpZ2l0
KG5vblplcm9EaWdpdCkpCisgICAgICAgICAgICAgICAgbm9uWmVyb0RpZ2l0LS07CisKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiBuZXZlciBjbGVhciBtb3JlIHRoYW4gb25lIGRpZ2l0IHBlciBpdGVy
YXRpb24sIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGNodW5rRGl2aXNvciBpcyBzbWFsbGVyIHRo
YW4gbWF4IGRpZ2l0IHZhbHVlLgorICAgICAgICAgICAgQVNTRVJUKHJlc3QtPmRpZ2l0KG5vblpl
cm9EaWdpdCkpOworICAgICAgICB9IHdoaWxlIChub25aZXJvRGlnaXQgPiAwKTsKKworICAgICAg
ICBsYXN0RGlnaXQgPSByZXN0LT5kaWdpdCgwKTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAg
IHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbbGFzdERpZ2l0ICUgcmFkaXhdKTsKKyAg
ICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgIH0gd2hpbGUgKGxhc3REaWdpdCA+IDApOwor
ICAgIEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpKTsKKyAgICBBU1NFUlQocmVzdWx0U3RyaW5n
LnNpemUoKSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQp
KTsKKworICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9lcy4KKyAgICBpbnQgbmV3U2l6ZU5vTGVh
ZGluZ1plcm9lcyA9IHJlc3VsdFN0cmluZy5zaXplKCk7CisgICAgd2hpbGUgKG5ld1NpemVOb0xl
YWRpbmdaZXJvZXMgID4gMSAmJiByZXN1bHRTdHJpbmdbbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAt
IDFdID09ICcwJykKKyAgICAgICAgbmV3U2l6ZU5vTGVhZGluZ1plcm9lcy0tOworCisgICAgcmVz
dWx0U3RyaW5nLnNocmluayhuZXdTaXplTm9MZWFkaW5nWmVyb2VzKTsKKworICAgIGlmIChzaWdu
KQorICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKCctJyk7CisKKyAgICBzdGQ6OnJldmVyc2Uo
cmVzdWx0U3RyaW5nLmJlZ2luKCksIHJlc3VsdFN0cmluZy5lbmQoKSk7CisKKyAgICByZXR1cm4g
U3RyaW5nSW1wbDo6YWRvcHQoV1RGTW92ZShyZXN1bHRTdHJpbmcpKTsKK30KKwordm9pZCBKU0Jp
Z0ludDo6cmlnaHRUcmltKFZNJiB2bSkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludCBub25aZXJvSW5kZXggPSBtX2xlbmd0aCAtIDE7CisgICAgd2hpbGUg
KG5vblplcm9JbmRleCA+PSAwICYmICFkaWdpdChub25aZXJvSW5kZXgpKQorICAgICAgICBub25a
ZXJvSW5kZXgtLTsKKworICAgIGlmIChub25aZXJvSW5kZXggPT0gbV9sZW5ndGggLSAxKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbnQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKKyAg
ICB2b2lkKiBiYWNraW5nU3RvcmUgPSB2bS5naWdhY2FnZUF1eGlsaWFyeVNwYWNlKG1fZGF0YS5r
aW5kKS50cnlBbGxvY2F0ZShzaXplRm9yKG5ld0xlbmd0aCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJhY2tpbmdTdG9yZSk7CisgICAgRGlnaXQqIGRhdGEgPSBzdGF0aWNfY2FzdDxEaWdpdCo+KGJh
Y2tpbmdTdG9yZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZXdMZW5ndGg7IGkrKykKKyAg
ICAgICAgZGF0YVtpXSA9IGRpZ2l0KGkpOworCisgICAgbV9kYXRhLnNldCh2bSwgdGhpcywgZGF0
YSk7CisgICAgbV9sZW5ndGggPSBuZXdMZW5ndGg7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6
YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJj
b3VudCkKK3sKKyAgICBBU1NFUlQoMiA8PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNT
RVJUKGNoYXJjb3VudCA+PSAwKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHNpemVfdCBiaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4
XTsKKyAgICBzaXplX3QgY2hhcnMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7Cisg
ICAgY29uc3QgaW50IHJvdW5kdXAgPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7Cisg
ICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91
bmR1cCkgLyBiaXRzUGVyQ2hhcikgeworICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJD
aGFyICogY2hhcnM7CisKKyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3Vu
ZGluZyB1cC4KKyAgICAgICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1Bl
ckNoYXJUYWJsZVNoaWZ0OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KE1heEludCkpIHsKKyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91
bmRpbmcgdXAuCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0
c01pbikgKyBEaWdpdEJpdHMgLSAxKSAvIERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5n
dGggPD0gTWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpjcmVhdGUoZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChleGVjKQor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxs
KQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7
CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNpemUgPSB0aGlzT2JqZWN0LT5tX2xlbmd0aCAq
IERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGJ1ZmZl
ckVzdGltYXRlZFNpemU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MGNjMWY1Zjg2N2FkMDA1YmZi
OWZhNDE5ZGJjNTA3NGNjOTk0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQ
YXJzZUludC5oIgorI2luY2x1ZGUgPHd0Zi9DYWdlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U0JpZ0ludCA6IHB1YmxpYyBKU0NlbGwgeworICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisKKyAg
ICBmcmllbmQgY2xhc3MgQmlnSW50SW1wbDsKKworcHVibGljOgorICAgIEpTQmlnSW50KFZNJiwg
U3RydWN0dXJlKiwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpOworCisgICAgdm9pZCBpbml0aWFsaXpl
KGJvb2wgemVyb0luaXRpYWxpemUpOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXpl
KEpTQ2VsbCopOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVplcm8oRXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgaW50IGNyZWF0ZVdpdGhMZW5ndGgpOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
Vk0mKTsKKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2ln
biA9IHNpZ247IH0KKyAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKwor
ICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAg
ICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDhfdD4gdG9TdHJpbmdPbmVEaWdpdCgpOworCisgICAgc3RhdGljIEpTQmlnSW50
KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOwor
ICAgIAorICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqLCBpbnQgcmFkaXgpOworICAgIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJf
dDsKKyAgICBzdGF0aWMgY29uc3QgaW50IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29u
c3QgaW50IERpZ2l0U2l6ZSA9IHNpemVvZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0IGludCBE
aWdpdEJpdHMgPSBEaWdpdFNpemUgKiBCaXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50
IEhhbGZEaWdpdEJpdHMgPSBEaWdpdEJpdHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBI
YWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgSGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBj
b25zdCBpbnQgTWF4SW50ID0gMHg3RkZGRkZGRjsKKyAgICAKKyAgICAvLyBUaGUgbWF4aW11bSBs
ZW5ndGggdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB3b3VsZCBiZQor
ICAgIC8vIE1heEludCAvIERpZ2l0Qml0cy4gSG93ZXZlciwgd2UgdXNlIGEgbG93ZXIgbGltaXQg
Zm9yIG5vdywgYmVjYXVzZQorICAgIC8vIHJhaXNpbmcgaXQgbGF0ZXIgaXMgZWFzaWVyIHRoYW4g
bG93ZXJpbmcgaXQuCisgICAgLy8gU3VwcG9ydCB1cCB0byAxIG1pbGxpb24gYml0cy4KKyAgICBz
dGF0aWMgY29uc3QgaW50IE1heExlbmd0aCA9IDEwMjQgKiAxMDI0IC8gKHNpemVvZih2b2lkKikg
KiBCaXRzUGVyQnl0ZSk7CisgICAgCisgICAgc3RhdGljIHVpbnQ2NF90IGNhbGN1bGF0ZU1heGlt
dW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGln
aXQsIGJvb2wgc2lnbik7CisgICAgCisgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZTbWFsbChF
eGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVu
dCwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFk
ZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNC
aWdJbnQqIHJlc3VsdCk7CisKKyAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAg
c3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7Cisg
ICAgc3RhdGljIERpZ2l0IGRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cp
OworICAgIHN0YXRpYyBEaWdpdCBkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGln
aCk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGln
aXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0UG93
KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAgIGJvb2wg
aXNaZXJvKCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGlj
IEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0
eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoID49IDApOworICAg
ICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5n
ICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxl
bmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAgICAgICAgICsrcDsKKworICAgICAgICBpbnQg
ZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAgICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFj
ZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFb
ZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5kSW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0g
ZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBpbnQgbGltaXQwID0gJzAnICsg
KHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChy
YWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKwor
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBs
ZW5ndGggLSBwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICByZXN1bHQtPmluaXRpYWxpemUodHJ1ZSk7CisKKyAgICAgICAgZm9y
IChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgICAgICB1aW50MzJf
dCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGlt
aXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAgICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChk
YXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0
ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihkaWdpdCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisgICAgICAgICAgICByZXN1
bHQtPnJpZ2h0VHJpbSh2bSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50
KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJjb3VudCk7
CisKKyAgICB2b2lkIHJpZ2h0VHJpbShWTSYpOworCisgICAgdm9pZCBpbnBsYWNlTXVsdGlwbHlB
ZGQoRGlnaXQgbXVsdGlwbGllciwgRGlnaXQgcGFydCk7CisKKyAgICBEaWdpdCBkaWdpdChpbnQg
bikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAgICAg
ICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkYXRhUHRyID0gbV9kYXRhLmdldCgp
OworICAgICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpZ2l0
KGludCBuLCBEaWdpdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8
IGxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgICAgIERpZ2l0KiBkaWdp
dFB0ciA9IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgZGlnaXRQdHJbbl0gPSB2YWx1ZTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIGludCBzaXplRm9yKGludCBsZW5ndGgpCisgICAgeworICAgICAg
ICByZXR1cm4gbGVuZ3RoICogRGlnaXRTaXplOworICAgIH0KKworICAgIGJvb2wgbV9zaWduOwor
ICAgIGludCBtX2xlbmd0aDsKKyAgICBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2
ZSwgRGlnaXQ+IG1fZGF0YTsKK307CisKK2lubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAg
IHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAppbmRleCBkMDMwNDUyMjBkNWU5NTI2N2VkOWY4ZjdiOWQzMzY1YTgzMTc5ZGQzLi43NjQxNWYz
NDQwMzc2OWRhZmI5YzYzNGE3NDE3NzJlYmJjZWNkMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpA
QCAtNjgsMTEgKzY5LDE3IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b0xlbmd0aChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAKIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNE
b3VibGUoKSk7CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRv
TnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKKyAg
ICBpZiAoaXNCaWdJbnQoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDb252ZXJ0aW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90
IGFsbG93ZWQuIikpOworICAgICAgICByZXR1cm4gUE5hTjsKKyAgICB9CiAgICAgcmV0dXJuIGlz
VW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRv
IDAuCiB9CiAKQEAgLTM3Niw2ICszODMsMTMgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5n
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnIKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNv
bnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAgIHJldHVybiBlcnJvclZhbHVl
KCk7CiAgICAgfQorICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gZGln
aXQgPSBiaWdJbnQtPnRvU3RyaW5nT25lRGlnaXQoKTsKKyAgICAgICAgaWYgKGRpZ2l0KQorICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRp
Z2l0ICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0lu
dC0+dG9TdHJpbmcoZXhlYywgMTApKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBj
MjRlYTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5YTNjN2RlMDc3ZDIz
ZGUwMmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bnlJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0
cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2VlYmEyM2NmY2YyODNm
ZmQ1ZmExMDRjNzcuLjAxZWEyZGI4MWM5ZGZkZmNlY2U0MTU1MWVjMGZlMzllNWRlYWE0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxs
KCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6Omlz
QmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmln
SW50KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC03MTksNiArNzI1
LDcgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgIGlmIChpc0RvdWJsZSgp
KQogICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKKwogICAgIHJldHVybiB0b051bWJlclNsb3dD
YXNlKGV4ZWMpOwogfQogCkBAIC0xMDIwLDYgKzEwMjcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0
cmluZyh2MikpOworICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSks
IGFzQmlnSW50KHYyLmFzQ2VsbCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4YWMwZWU3ZmJj
MWJjMzU3OWVlNjNmNWNiMTZhOTYwODM3Li43OTRiYzc3ZTIwMjFmMDMzNTRhYTY2MTQyMzNjZGQ1
OTVkY2EwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAg
LTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBl
eGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJl
ZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlw
ZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUo
ZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE4MSw2ICsxODMsOCBAQCBKU09iamVjdCog
SlNDZWxsOjp0b09iamVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjbwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50
b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmpl
Y3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5ZmMwYzli
MDk0MDE2NDBmYjE1ZDUyNTFhNDE3ZWI4NDg2MGQ2Y2NkLi43MWY5OWQ5N2NmNWNkMjkxY2NlNWMz
NTRjYTlhYzYyYjk0OTc1YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWlu
ZyB0aGUgdHlwZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0lu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDU3MGYwOTRiYWQ0YjA3
YTExYWVlMjA2MDdkZTBhNzY4MWY3ZmRjM2UuLjk4MzZiMzQ3MDVlMGE3NTYwMDQ3OTYzMTg5ZWJk
ZmE4Mzc3NzY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKQEAgLTIwMSw2ICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUg
Ym9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJp
Z0ludFR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewog
ICAgIHJldHVybiBtX3R5cGUgPT0gU3ltYm9sVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMTgyNWU5ZTYyYmU1MjJkYjFl
ZWFhNDJhNjZlYmViODhkYjk5ODhhLi4yOGE5MjgwNDBkNmZjYzIzZTc5MzE4YWE3MzIwZWM1ZTU5
NDNmMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG8KIG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwK
IAogICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ1JFQVRFX0NPTlNUUlVDVE9SX0ZP
Ul9TSU1QTEVfVFlQRSkKLSAgICAKKwogI3VuZGVmIENSRUFURV9DT05TVFJVQ1RPUl9GT1JfU0lN
UExFX1RZUEUKIAogICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGVycm9yQ29u
c3RydWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA4NTM1
NmQzOTc3YWVkNWM3M2I4OWFmZjA1Yzk3YzI0MmY5NWJiNGVhLi41NzdkMThlMDI1YzExYTk5MmNl
MTZjODUwY2IyMjE4ZTIxYzZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxU
eXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAgICBCaWdJbnRUeXBlLAog
CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGU4ZjMxNmNm
NDJiOGU5Mjg5ZmNhMDg5YjQ4MzEyMTViN2EzMDIwMzMuLjBmZGM3YzM1NjVjZThhYjFkZGVjNTFk
ZWZkNGNmMzg1MmMzOTk4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmgKQEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVt
YmVyKQogI2VuZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQorewor
I2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0NvdW50ID0gNjQ7CisgICAg
aWYgKG51bWJlcikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7
CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHplcm9Db3VudCA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoIShudW1iZXIg
Pj4gaSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZW5kaWYKK30KKwogLy8g
VGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBv
ZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVu
dGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhl
IHJlc3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxl
ZCB0byBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCmluZGV4IDU1MGI4ZjcwZDdjNzcyYjE4ZjliNjQ3MjkwNWE2NGI3Zjc5
MGUwYmIuLmE2M2QwMWU0ZDhiZGFmOGQ5YzlhNDYxMjA3YjViNDJhMDg3NDUwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIK
ICNpbmNsdWRlICJVaW50MTZXaXRoRnJhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xMzksOSArMTQwLDYgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgYm9vbCBnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKEV4ZWNTdGF0ZSogZXhl
YywgaW50IGxvdywgaW4KIC8vIGZvIGFueSBudW1iZXIgb2YgZGlnaXRzIGFuIElFRUUgbnVtYmVy
IG1heSByZXF1aXJlIHRvIHJlcHJlc2VudC4KIHR5cGVkZWYgY2hhciBSYWRpeEJ1ZmZlclsyMTgw
XTsKIAotLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5aW5n
IHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KLXN0YXRpYyBjb25zdCBjaGFyIHJhZGl4RGln
aXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKLQogc3RhdGlj
IGlubGluZSBjaGFyKiBpbnQ1MlRvU3RyaW5nV2l0aFJhZGl4KGNoYXIqIHN0YXJ0T2ZSZXN1bHRT
dHJpbmcsIGludDY0X3QgaW50NTJWYWx1ZSwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgYm9vbCBu
ZWdhdGl2ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcAppbmRleCA2ZDEwNTU4MjcwOGEyNGEzYWQ0YTRhNTAwZDM5NDEzZDliOThkYzIwLi45
N2NmYTA3YTk2OTQwMjIyNTZjOWMzOGE2NmM3NjQzMzUxN2NkNjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtODIsNiArODIsOCBAQCBKU1Zh
bHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnN0cmluZ1N0
cmluZygpOwogICAgIGlmICh2LmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3Muc3ltYm9sU3RyaW5nKCk7CisgICAgaWYgKHYuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIHZtLnNtYWxsU3RyaW5ncy5iaWdpbnRTdHJpbmcoKTsKICAgICBpZiAodi5pc09iamVjdCgp
KSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKICAgICAgICAgLy8g
UmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKQEAg
LTExMiw3ICsxMTQsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNU
eXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlw
ZSB8fCB0eXBlID09IFN5bWJvbFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmpl
Y3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCmluZGV4IDc4ZTc3YWQxODY0YzhmYTAwNzM4N2MzZjUwYzkzOTIxMjVmNzE0OTMuLmZiYTMy
N2YwZDVkMmQ2MDA2MmFiMzU0ZGZmOWU5ZGRlMWM0YjgxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTQ3OCw2ICs0NzgsNyBAQCBjb25zdGV4cHIgYm9vbCBl
bmFibGVBc3luY0l0ZXJhdGlvbiA9IGZhbHNlOwogICAgIHYoYm9vbCwgdXNlRmFzdFRMU0Zvcldh
c21Db250ZXh0LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHN0b3JlIGNvbnRleHQg
aW4gZmFzdCBUTFMuIElmIGZhbHNlLCB3ZSB3aWxsIHBpbiBpdCB0byBhIHJlZ2lzdGVyLiIpIFwK
ICAgICB2KGJvb2wsIHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlNDYWxscywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZvIHRvIGlubGluZSBjYWNoZSBX
YXNtIHRvIEpTIGNhbGxzLiIpIFwKICAgICB2KGJvb2wsIHVzZU9iamVjdFJlc3RTcHJlYWQsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIE9iamVjdCBSZXN0L1NwcmVhZCBm
ZWF0dXJlLiIpIFwKKyAgICB2KGJvb2wsIHVzZUJpZ0ludCwgZmFsc2UsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKICAgICB2KGJvb2wsIHVzZUFy
cmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1
c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBh
bGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpXAog
ICAgIHYoYm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVh
dGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0
cnVjdHVyZS4iKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
YXJzZUludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaAppbmRl
eCBlNDc5NWVjNGFmNTk5MzgyODQ2ZjRjZDcxMjI4NTBmMmM2ODI4MDc0Li5mMzEwMTU4NjNkZGY3
ZGExZWNkMDdmOTJlYWZiOTA4Y2ZiNzg1OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QYXJzZUludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1BhcnNlSW50LmgKQEAgLTIyNiw0ICsyMjYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB0
eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihTdHJpbmdWaWV3
KQogICAgIHJldHVybiBjYWxsYmFjayh2aWV3V2l0aFN0cmluZy52aWV3KTsKIH0KIAorLy8gTWFw
cGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5aW5nIHRoaXMgdmFsdWUs
IGZvciByYWRpeCAyLi4zNi4KK2NvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUtleS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKaW5kZXggMTJmNDUzZTc2
MDFiMmZhYTY3YjllZmJlYTQwMDFkZjAwYzlmMTVkNy4uNGVkMTFmOGZlZDJjOGM0YmZmMGU0MmM4
NTYyMGJhYzAxN2Q4ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlS2V5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKKwogY2xhc3MgUHJvdG90eXBlS2V5IHsKIHB1YmxpYzoKICAg
ICBQcm90b3R5cGVLZXkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmgKaW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2ZjhkMGYz
OC4uODg1MGM0YTlhMzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICAgICBtYWNybyh1bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhz
eW1ib2wpIFwKKyAgICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0U3RyaW5nKCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBl
OjpCaWdJbnQ6CisgICAgICAgICAgICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDc1ZmQ3NWIwZWIx
OGZjZThhNjMyYmEyN2NiNzMxNjI3ZGE2NjdjLi45ZjU3OGU4YWJjNTQxNjAwMzk0MTg1OGJhYWZi
MzFjODhlNzA3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2Fj
aGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKaW5k
ZXggNTM5N2U4MTdmMTI3ZjM1YWQ2N2NlYWNiYTZkMmI3OWI0ZDlmZTU1NS4uMjU3MGI3MmUzYmM0
YTBjN2ZiMmRmMzc5YmU5YWQwMGMyYmQ4ZGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcwOWE3ZjU0
MTZhOTgyYTdjNzVjMGMzMzYxYzJkMDFjZTguLjNiZmNmNTcxZjRhODdhMzFlYmY5MDVkNjhkNGI1
MmQ2ZDhhNTViYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZQogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlw
ZSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0KIAog
aW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZW9mVHlwZS5jcHAKaW5kZXggZGIxNjJiN2Y0ZjRjZTIzZmI4ODA1NmRkZjQxYzQ4ZGUzMGQ1
NjRjZC4uYWEzZmZhN2MzODJlMTA1ZDVkYWU0YzFhNDgzNjBkNDBlZjhiYmM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlwZSkK
ICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1bmN0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAg
ICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4IDMzMmZhODEyMTkyYTVhNjJlYjY2YmM2MWIyODA4
YjZmNTM1YTRlZDguLjk2NDg1ZDAyZDI0MWM2ZGI3NjJjZTgxMDZmZjI4NTNhNmM1OTcwYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKQEAgLTMxLDYgKzMx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgVHlwZW9mVHlwZSB7CiAgICAgVW5k
ZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAogICAgIE51bWJlciwKICAgICBTdHJp
bmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjIwMDg1NzNmZTAyYTQ1
Y2ZlZDBlYTc1MWJlMmQ1ZGU5N2U4NDU5YS4uNTk3ZGM1M2EwNTAwMTJkYWM3OTEwOTE4ZmM5MDQy
MTkyMzhlZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdy
YXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtMjgwLDYgKzI4MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgq
dGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNldEl0ZXJhdG9yU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGJpZ0ludFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBl
OjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhp
cywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNTU0YjM1MGQ0MTg1MTVlNDhiNmY4ZmNjMGU4NGVjMDE3
MjRmNjFhLi5jYzU0MGMzOWZhY2FiOWRmMzQxMmE2OTZiOGRiMzc3MzJkNDNmZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTM4OCw2ICszODgsNyBAQCBwdWJsaWM6CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBt
YXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1
cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAg
ICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhmODk4YzlmYzRiMTcyOTZjYzczYmU1
NmEzM2Y1NmZkMDZiNzY5Yi4uYTZlYWI0YTNmYzNhMzMyMWUwNjQwMmVlY2I2ZGNmYTI0YWI2ODkz
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE3LTExLTIyICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQgbGl0ZXJhbHMg
YW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMTYgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVw
ZGF0ZSBXaW5DYWlyb1JlcXVpcmVtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5k
ZXggNDExZTlhNzUzMjM4NjkyODkyZTkzNjIwNmZjY2U3NDliMTc4ZWNiZC4uOWMwMDYyNjM1ODkx
MGQ5NjdkZTQ3OGI3OWMyZjkyMWM1MTAzMzQ3MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCkBAIC02MTYsNiArNjE2LDEwIEBAIGRlZiBydW5EZWZhdWx0KCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJkZWZhdWx0IiwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVz
ZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlv
bnMpKQorZW5kCisKIGRlZiBydW5GVExOb0NKSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKICAgICBydW4oIm1pc2MtZnRsLW5vLWNqaXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9P
UFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMWVkMjIzN2NkYWE0
MTMyNDNlZWJlNDBmYTJiYWFmYjNhNTY2ZWUxLi44OTI3ZDg2YzMwYWMxZmM4N2VjNWFiZmRlNTQ0
YzU1MTNhM2E4ZDU5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTExLTIyICBDYWlvIExpbWEgIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGJpZ0ludFRlc3RzLnlhbWw6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9iaWctaW50LWxhcmdlLW51bWJlci1vb20uanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFs
cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorCiAyMDE3LTExLTE2ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1h
cmsgcmVncmVzcy0xNzgzODUuanMgYXMgbWVtb3J5IGV4aGF1c3RpbmcKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvYmlnSW50VGVzdHMueWFtbCBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMmIxNzdlMjYyNmMyNTQ4OGMzYTI4ZDk1ZDE2ZTc1NDYyNTcyNWYzCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRlZCB0byBzaW1wbGlm
eSBydW5uaW5nIEJpZ0ludCB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIEJpZ0ludAorIyBhcmUg
bm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBhdGg6IHN0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCistIHBhdGg6IHN0
cmVzcy9iaWctaW50LXR5cGUtb2YuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGFyZ2UtbnVtYmVyLW9vbS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGFyZ2UtbnVtYmVyLW9vbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2ZmMDkw
Y2JiYzM3NTM2Y2VkYTNhMmM4YzQyNDJjYTE3MmNiODhiCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sYXJnZS1udW1iZXItb29tLmpzCkBAIC0wLDAgKzEsMjEgQEAK
Ky8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFh
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpOworfQorCit2YXIgbG9uZ1N0ciA9ICJm
IjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMzA7ICsraSkKKyAgICBsb25nU3RyID0gbG9uZ1N0ciAr
IGxvbmdTdHI7CisKK2xldCBzdWIgPSBsb25nU3RyLnN1YnN0cmluZygwLCBsb25nU3RyLmxlbmd0
aCAtIDQpCitsZXQgbXNjcmlwdCA9ICIweCIgKyBsb25nU3RyICsgc3ViICsgIm4iOworCit0cnkg
eworICAgIGV2YWwobXNjcmlwdCk7CisgICAgYXNzZXJ0KGZhbHNlKTsKK30gY2F0Y2goZSkgewor
ICAgIGFzc2VydChlLm1lc3NhZ2UgPT0gIk91dCBvZiBtZW1vcnkiKQorfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWwtbGluZS10ZXJtaW5hdG9yLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYWZiNDk5OWVlNDBkYmIwNzJiYTBjYWUwZjI3NjY0ZDIwYmE0YjI5Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpA
QCAtMCwwICsxLDMzIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQo
YSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9u
Iik7Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD01blx1MDAwQSIpID09PSA1bik7Cith
c3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD0xNW5cdTAwMEQiKSA9PT0gMTVuKTsK
K2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD0xOW5cdTIwMjg7IikgPT09IDE5
bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUyMDI5OyIpID09
PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQTVuIikg
PT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwRDE1biIp
ID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MjAyODE5
bjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD1cdTIw
Mjk5NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bGl0ZXJhbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM0ODA5MGJlY2NkOTdjZGI0N2U0OTRlMmEyYWFhNDlj
ZGUzYTQxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJh
bHMuanMKQEAgLTAsMCArMSwxMTMgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9u
IGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBh
c3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1dCkg
eworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAgICAgICBhc3NlcnQoZmFsc2Up
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhF
cnJvcik7CisgICAgfQorfQorCisvLyBUZXN0IDAgY29udmVyc2lvbnMKK2xldCBuID0gMG47Cith
c3NlcnQobiA9PT0gMG4pOworCituID0gMDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworLy8gQmlu
YXJ5IHJlcHJlc2VudGF0aW9uCisKK24gPSAwYjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisK
K24gPSAwYjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK24gPSAwYjAxMG47Cithc3NlcnQobiA9
PT0gMm4pOworCitsZXQgYmluYXJ5U3RyaW5nID0gIjBiMSI7Citmb3IgKGxldCBpID0gMDsgaSA8
IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0
cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMx
NzY4MjExNDU2bik7CisKK24gPSAwQjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAw
QjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK2JpbmFyeVN0cmluZyA9ICIwQjEiOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0g
ZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2
MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCisvLyBPY3RhbCByZXByZXNlbnRhdGlvbgorCitu
ID0gMG83bjsKK2Fzc2VydChuID09PSA3bik7CisKK24gPSAwbzEwbjsKK2Fzc2VydChuID09PSA4
bik7CisKK24gPSAwbzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gMG8wMDAyMG47Cith
c3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPN247Cithc3NlcnQobiA9PT0gN24pOworCituID0g
ME8xMG47Cithc3NlcnQobiA9PT0gOG4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZu
KTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKKy8vIEhleGFkZWNpbWFsIHJl
cHJlc2VudGF0aW9uCisKK24gPSAweGFuOworYXNzZXJ0KG4gPT09IDEwbik7CisKK24gPSAweGZm
bjsKK2Fzc2VydChuID09PSAyNTVuKTsKKworbiA9IDB4MDAwZmZuOworYXNzZXJ0KG4gPT09IDI1
NW4pOworCituID0gMHhmYWJjbjsKK2Fzc2VydChuID09PSA2NDE4OG4pOworCithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwYjJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjAybiIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIxbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjBvODluIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzA4biIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMG83bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Z24iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjB4MGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIw
eGZubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTAwbm4iKTsKK2Fzc2VydFRocm93U3lu
dGF4RXJyb3IoIjFhMG5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMEUyMG4iKTsKKwor
dHJ5IHsKKyAgICBldmFsKCItLTEwbiIpOworICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUp
IHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjZDMwMTI0NmI5NThmNGM2ZDRkYTExYWY3
Y2QwYTZiNDA5MmFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10
eXBlLW9mLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0
aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBhc3NlcnRpb24iKTsKK30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0gImJpZ2ludCIpOworYXNz
ZXJ0KHR5cGVvZiAxbiAhPT0gIm9iamVjdCIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIx
YTc3NjE1YjliNDU3YzE1NGI1ZjVlOGI3MzE1YWUyNTQxZGFjNAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qcwpA
QCAtMCwwICsxLDExMSBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0
KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlv
biIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlucHV0KSB7CisgICAg
dHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKTsK
KyAgICB9Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEM1biIpID09PSA1bik7
Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMDkxNW4iKSA9PT0gMTVu
KTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEIxOW5cdTAwMEI7
IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDBD
MTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJk
PVx1MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZh
bCgiZD1cdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0
KGV2YWwoImQ9XHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKK2Fz
c2VydChldmFsKCJkPTVuXHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fz
c2VydChldmFsKCJkPTE1blx1MDAwOSIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisK
K2Fzc2VydChldmFsKCJkPTE5blx1MDAwQjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4p
OworCithc3NlcnQoZXZhbCgiZD0xMTluXHUwMDBDOyIpID09PSAxMTluKTsKK2Fzc2VydChkID09
PSAxMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUwMDIwOyIpID09PSA5NW4pOworYXNzZXJ0
KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPTUzblx1MDBBMDsiKSA9PT0gNTNuKTsKK2Fz
c2VydChkID09PSA1M24pOworCithc3NlcnQoZXZhbCgiZD0zOW5cdUZFRkY7IikgPT09IDM5bik7
Cithc3NlcnQoZCA9PT0gMzluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAwQ2RcdTAwMENc
dTAwMEM9XHUwMDBDXHUwMDBDNW5cdTAwMEM7XHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09
PSA1bik7CisKK2Fzc2VydChldmFsKCJcdTAwMDlcdTAwMDlkXHUwMDA5XHUwMDA5PVx1MDAwOVx1
MDAwOTE1blx1MDAwOTsiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQo
ZXZhbCgiXHUwMDBCXHUwMDBCZFx1MDAwQlx1MDAwQj1cdTAwMEJcdTAwMEIxOW5cdTAwMEI7Iikg
PT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAw
Q2RcdTAwMEM9XHUwMDBDXHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5
bik7CisKK2Fzc2VydChldmFsKCJcdTAwMjBkXHUwMDIwPVx1MDAyMFx1MDAyMDk1bjsiKSA9PT0g
OTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiXHUwMEEwZFx1MDBBMD1c
dTAwQTBcdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0
KGV2YWwoIlx1RkVGRmRcdUZFRkY9XHVGRUZGXHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0
KGQgPT09IDM5bik7CisKKy8vIEFzc2VydCBlcnJvcnMKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMGJcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMEIxMTAxbiIp
OworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMDkxMTExMTFuIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwYlx1MDAyMDEwMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MGJcdTAwQTAxMDExbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdUZFRkYxMTEwMDBu
Iik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBDMm4iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjBvXHUwMDBCNDVuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1
MDAwOTc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwMjA3NzduIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDBBMDE3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVy
cm9yKCIwb1x1RkVGRjE3MzYxbiIpOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAw
QzJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQjQ1biIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMHhcdTAwMDk3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4
XHUwMDIwNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwQTAxNzc3biIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdUZFRkYxNzM2MW4iKTsKKworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMlx1MDAwQ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjQ1XHUwMDBC
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNzdcdTAwMDluIik7Cithc3NlcnRUaHJvd1N5
bnRheEVycm9yKCI3NzdcdTAwMjBuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxNzc3XHUw
MEEwbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTczNjFcdUZFRkZuIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327970</attachid>
            <date>2017-11-30 05:42:46 -0800</date>
            <delta_ts>2017-12-01 07:53:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171130114243.patch</filename>
            <type>text/plain</type>
            <size>107233</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzJmOTEwNjk0MmUxMWY1NmZlMDQ4NWNkM2Y0YTY3MjA4OWFjZDQxLi45M2JjMjQ5NTg0MGM0OTk1
MzU0OTU0ODY3ODBkMjU1OGEzOGU2NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTctMTEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IGFzIGlubGluZSBzdG9yYWdlIG9mIEpTQmln
SW50IHRvCisgICAgICAgIHRha2UgYWR2YW50YWdlcyBvbiBwZXJmb3JtYW5jZSBkdWUgdG8gY2Fj
aGUgbG9jYWxpdHkuIFRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgNjQgb3IgMzIg
Yml0d2lzZSBhcml0aG1ldGljIG9wZXJhdGlvbnMuCisgICAgICAgIEpTQmlnSW50IGFsc28gaGFz
IG1fc2lnbiB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQKKyAgICAgICAg
bV9sZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUg
aW1wbGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEg
YXJlIG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFs
dWUpIGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFs
c28gaGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0
cy4KKworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXBy
ZXNlbnRhdGlvbiwKKyAgICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKClbMF0gcmVwcmVzZW50
cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgYW5kCisgICAgICAgIEpTQmlnSW50OjpkYXRh
U3RvcmFnZSgpW21fbGVuZ3RoIC0gMV0gcmVwcmVzZW50cyB0aGUgbW9zdCBzaWdpbmlmaWNhbnQg
ZGlnaXQuCisKKyAgICAgICAgV2UgYXJlIGFsc28gaW50cm9kdWNpbmcgaW50byB0aGlzIFBhdGNo
IHRoZSBCaWdJbnQgbGl0ZXJhbHMgbGV4ZXIgYW5kCisgICAgICAgIHN5bnRheCBwYXJzaW5nIHN1
cHBvcnQuIFRoZSBvcGVyYXRpb24gU3RyaWN0IEVxdWFscyBvbiBCaWdJbnRzIGlzIGFsc28gYmVp
bmcKKyAgICAgICAgaW1wbGVtZW50ZWQgdG8gZW5hYmxlIHRlc3RzLgorICAgICAgICBUaGVzZSBm
ZWF0dXJlcyBhcmUgYmVpbmcgaW1wbGVtZW50ZWQgYmVoaW5kIGEgcnVudGltZSBmbGFnZSAiLS11
c2VCaWdJbnQiIGFuZAorICAgICAgICBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6QmlnSW50
RW50cnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJpZ0lu
dEVudHJ5SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpqc1ZhbHVlIGNvbnN0KToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogbGxpbnQvTExJ
bnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVCaWdJbnQpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAg
IChKU0M6OkxleGVyPFQ+OjpwYXJzZUJpbmFyeSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZU9jdGFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlRGVjaW1hbCk6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VI
ZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAqIHBhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OkJpZ0ludE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9u
Tm9kZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjp2YWx1ZSk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
VG9rZW5zLmg6CisgICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6
UmVzdWx0VHlwZTo6ZGVmaW5pdGVseUlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVz
dWx0VHlwZTo6bWlnaHRCZUJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6
OmlzTm90QmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6YWRkUmVzdWx0
VHlwZSk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmJpZ0ludFR5cGUpOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpmb3JBZGQpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpmb3JM
b2dpY2FsT3ApOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0
aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3Ry
aW5nT25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aXNa
ZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERp
dik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjYWxjdWxhdGVN
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3Ry
aW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpyaWdodFRyaW0pOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Om9mZnNldE9mRGF0YSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpkaWdpdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpzaXplRm9yKToKKyAgICAgICAgKEpTQzo6YXNCaWdJbnQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVt
YmVyU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dD
YXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmln
SW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlu
bGluZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNs
b3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNCaWdJbnQgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9NYXRoQ29t
bW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlw
ZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGlt
ZS9QYXJzZUludC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAg
IChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmluZyBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKyAgICAgICAg
KiBydW50aW1lL1R5cGVvZlR5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBydW50aW1lL1R5cGVvZlR5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTctMTEtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDbGVhbnVwIEluc3BlY3RvciBjbGFzc2VzIGJlIG1vcmUgY29uc2lz
dGVudCBhYm91dCB1c2luZyBmYXN0IG1hbGxvYyAvIG5vbmNvcHlhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDI5MjY1OTUxY2M1MjM2NzRhNzExNGJiMWIyMTUxZWMxOWRiMDdi
YTEuLjM1M2YwNDZjMmJmZDAwYTQ5NjkzNWRlMzhkODg3MDhjOWU1ZWM0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OTIsNyArNzkyLDcgQEAKIAkJMkFGNzM4MkQxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIy
NjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0
MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07Ci0JCTM3QzczOEQyMUVEQjU2
RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87
IH07CisJCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0Yy
QjBCIC8qIFBhcnNlSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDEyOTUyNzcxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRl
X2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzQxRDJD
RjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxl
bWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxMjk1Mjc5MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFw
cGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMjk1Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTEyOSw2ICsxMTI5LDcgQEAKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1
NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8q
IEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIg
LyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVy
QVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzY0Myw2ICszNjQ0LDggQEAKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5
MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmlnSW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JpZ0ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3VsdFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODZBMDU0NDYxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5hc20uYXNtOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5hc207
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZBMDU0NDcxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDg1LDYgKzY0ODgsOCBAQAog
CQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLywKIAkJ
CQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNw
cCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmggKi8sCisJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNw
cCAqLywKKwkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLywKIAkJ
CQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLywKIAkJ
CQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8sCiAJCQkJ
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKQEAgLTg3NTAsNiAr
ODc1NSw3IEBACiAJCQkJOEJDMDY0ODkxRTFBQkE2NDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTgwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThBRDRBOTAwMENEMTdE
IC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2ODkyMUMyMUY5QzBDQjcw
MDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGQTlFOTIxNDJCQkIy
RTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjAzNjU2ZTUw
YTVhYjFhOGYwYTJlMWIwOTBkM2FhOTc2YWE3MjVkZS4uODEzMGY3ODU1NmM0NzRlYTU1NTM5Yzlk
MmZmZjM3Zjk0OTQyZTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzYzLDYg
Kzc2Myw3IEBAIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUv
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcAorcnVudGltZS9KU0JpZ0ludC5jcHAKIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogcnVudGltZS9K
U0NhbGxlZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggMGFmZjRiMGM2ZmQzMGM5M2FiNjBlMmM1Zjg1ODFiODdjMWI5NjY3OC4uNmZjNGY2
OGM1YWFmMTY3Njc1ZjBhNzZiNTYzZWIwM2RmZWMxOGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl
ICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRN
YXRoSUMuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCA2M2UzOThkNjExYmJhODEyNzQ0Y2ViZmI1Y2JmODk3NjQ5OTBlNTUwLi45
Nzg0ZjZlZDY3YmZiNzczN2YyZmJmY2ZjODUwODFkZDI5NTUxMDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKQEAgLTE3ODMsNiArMTc4NCwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAogICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xUeXBlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CisgICAgICAgICAgICAgICAgcmV3
aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfY2VsbF93aXRo
X3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7Cisg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJpZ0ludFR5cGUpOworICAgICAg
ICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFs
dWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAgICAg
ICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3JfbnVsbCk7CkBAIC0zMTI1LDYg
KzMxMzQsMjUgQEAgdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50QnVmZmVy
KHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmFkZENvbnN0YW50QnVm
ZmVyKGxlbmd0aCk7CiB9CiAKK0pTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENv
bnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4X3QgcmFkaXgpCit7Cisg
ICAgQmlnSW50TWFwRW50cnkgZW50cnlLZXkgPSBCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmlt
cGwoKSwgcmFkaXgpOworICAgIGF1dG8gaXQgPSBtX2JpZ0ludE1hcC5maW5kKGVudHJ5S2V5KTsK
KyAgICBpZiAoaXQgIT0gbV9iaWdJbnRNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+dmFs
dWU7CisgICAgCisgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50
KG51bGxwdHIsICp2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCk7CisgICAgLy8gRklY
TUU6IFtFU05leHRdIEVuYWJsZXMgYSB3YXkgdG8gdGhyb3cgYW4gZXJyb3Igb24gQnl0ZUNvZGVH
ZW5lcmF0b3Igc3RlcAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODAxMzkKKyAgICBSRUxFQVNFX0FTU0VSVChiaWdJbnRJbk1hcCk7CisgICAgYWRkQ29u
c3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CisKKyAgICBhdXRvIGFkZGVkRW50cnkgPSBtX2JpZ0lu
dE1hcC5hZGQoZW50cnlLZXksIGJpZ0ludEluTWFwKTsKKyAgICBBU1NFUlQoYWRkZWRFbnRyeS5p
c05ld0VudHJ5KTsKKworICAgIHJldHVybiBhZGRlZEVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKK30K
KwogSlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBt
X3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCAyYjI0MjY0MTgwM2JkNDA1MmFlNWEyYjZhMDk3NWRhMDQwZDVh
ZjdiLi5iODVmNjc0ZDBmMzY3YWNiYzBiNTQ0ZDI4NzQ1NzdjYjI0NWJmMWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtNDYsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDAwLDEw
ICsxMDAyLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFsbG9jYXRlQ2FsbGVl
U2F2ZVNwYWNlKCk7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAotICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPiBOdW1iZXJNYXA7Ci0gICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmll
clJlcEhhc2g+IElkZW50aWZpZXJTdHJpbmdNYXA7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lzdGVySUQqPiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
TWFwOwotICAgICAgICAKKyAgICAgICAgdXNpbmcgQmlnSW50TWFwRW50cnkgPSBzdGQ6OnBhaXI8
VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50OF90PjsKKyAgICAgICAgc3RydWN0IEJpZ0ludEVudHJ5
SGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChCaWdJbnRNYXBFbnRyeSBr
ZXkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5maXJzdC0+ZXhp
c3RpbmdTeW1ib2xBd2FyZUhhc2goKSArIFdURjo6aW50SGFzaChrZXkuc2Vjb25kKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoQmln
SW50TWFwRW50cnkgYSwgQmlnSW50TWFwRW50cnkgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYS5maXJzdCA9PSBiLmZpcnN0ICYmIGEuc2Vjb25kID09IGIuc2Vjb25k
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgICAgIH07CisK
KyAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OworICAg
ICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1w
bCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OworICAgICAgICB1c2luZyBJZGVudGlm
aWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqLCBCaWdJbnRF
bnRyeUhhc2g+OworICAgICAgICB1c2luZyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwID0gSGFzaE1h
cDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lzdGVySUQqPjsKKwogICAgICAgICAvLyBI
ZWxwZXIgZm9yIGVtaXRDYWxsKCkgYW5kIGVtaXRDb25zdHJ1Y3QoKS4gVGhpcyB3b3JrcyBiZWNh
dXNlIHRoZSBzZXQgb2YKICAgICAgICAgLy8gZXhwZWN0ZWQgZnVuY3Rpb25zIGhhdmUgaWRlbnRp
Y2FsIGJlaGF2aW9yIGZvciBib3RoIGNhbGwgYW5kIGNvbnN0cnVjdAogICAgICAgICAvLyAoaS5l
LiAiT2JqZWN0KCkiIGlzIGlkZW50aWNhbCB0byAibmV3IE9iamVjdCgpIikuCkBAIC0xMDg4LDYg
KzExMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdHJp
bmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNWYWx1
ZSBhZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVt
cGxhdGVSZWdpc3RyeUtleT4mJik7CiAKICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rp
b24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9p
bnN0cnVjdGlvbnM7IH0KQEAgLTExODcsNiArMTIwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVu
c2lnbmVkLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1Zh
bHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNW
YWx1ZU1hcCBtX2pzVmFsdWVNYXA7CiAgICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJp
bmdNYXA7CisgICAgICAgIElkZW50aWZpZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAg
IFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAg
ICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1f
aW5zdHJ1Y3Rpb25zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMjM1YWE2YjFiYTQzMzllOTM5NTQwZDdlYmNhNzBk
ZjgwODQ3ZjMyMC4uN2YzZGM1NDczZDc0Y2UzYjIzY2NkZTJhN2E2YzUxMGE2ZDhhZjZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMTIyLDYgKzEyMiwxMSBAQCBKU1ZhbHVlIFN0cmluZ05vZGU6OmpzVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKICAgICByZXR1cm4gZ2VuZXJhdG9yLmFk
ZFN0cmluZ0NvbnN0YW50KG1fdmFsdWUpOwogfQogCitKU1ZhbHVlIEJpZ0ludE5vZGU6OmpzVmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmFkZEJpZ0ludENvbnN0YW50KG1fdmFsdWUsIG1fcmFkaXgpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggOGI3OGUwMDNmZWY4YmZkZDZkODEzNjQwMzZmOTg5ZDM0NjMyNDMzOS4uN2Qw
ZDNmNWRmNGI3OTg2YTZkOGViM2ViZDg1YzU0MDJkZWY4OWJlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMTc3LDcgKzE3Nyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50
aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGJv
b2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVj
dHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAg
ICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2Jq
ZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1i
b2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFp
c1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAg
ICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9s
cyBoZXJlIHNpbmNlIGVpdGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM1ZTg0YTVjMTQ1MTdlYmVkOGQ2MTQ4NzFmOWFj
N2JlYjAyNGQ2MDAuLmRjMjk0ZjEwZTNlZjU0MGNkNDZhZWM3MGQ0MGIwM2IwYzRlZGYxMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtMjAyLDYgKzIwMiw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6CisgICAgY2Fz
ZSBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBj
cmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgIGFyZ3Vt
ZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFkODY5ZjIwZTJlNGQxYjlhZTBkYTc4NzQ4MmZi
NmZlN2QyOGFmYWEuLjRjZjhjNmQ0ZWQ5ZjFhMzEyYzQxNDNlNTRiMTAyNmI1NTdhNjAwNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKFN0
cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gMHgxMjAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDQ4MDAw
MDsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJp
dGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKQEAgLTE3Nyw3
ICsxNzcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAg
QVNTRVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyMjAw
MDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDg4MDAwMDsKICAgICAgICAgVU5VU0VEX1BB
UkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBh
cml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6
OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MjQwMDAwOworICAgICAgICB1aW50MzJf
dCBiaXRzID0gMHg5MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
Vk0mIHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50
MzJfdCBiaXRzID0gMHgxNDAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDUwMDAwMDsK
ICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxM2U2ZTU1MjgwYmNkYjA0
OGYyMjUyYjEyNWMzMWRmM2RhZS4uM2FkMzg4YzRjOTk2OTg5ZWVhOTMzNDQwMGYwNWYzYjM1Yzc3
MTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIz
Miw2ICsyMzIsMTIgQEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMoKTsKICAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwogICAg
IH0KKyAgICAKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCwgdWludDhfdCByYWRp
eCkKKyAgICB7CisgICAgICAgIGluY0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBCaWdJbnROb2RlKGxvY2F0aW9uLCAqYmlnSW50LCByYWRpeCk7CisgICAg
fQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA2ZWU2YzVkYmQ1OWFkZTM3ZjJkMWIyMmQy
OTE2NDhhZDI5NmY1NDFkLi43NDAzY2RmMzM1NTI0ODkyN2Q4MjU5ZTQ5Y2Y2Y2NhMGMzNWFmOGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYv
ZHRvYS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE1MDAsNyArMTUwMSw3IEBAIHR5cGVuYW1l
IExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVy
YWwoSlNUb2tlbkRhdGEqCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElO
RSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lO
TElORSBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+IExleGVyPFQ+OjpwYXJzZUhl
eCgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IGhleGFkZWNpbWFsIHZhbHVlcyBmaXQg
aW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IGhleFZhbHVlID0gMDsKQEAgLTE1MTIsMTAgKzE1
MTMsOCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0
dXJuVmFsdWUpCiAgICAgICAgIC0tbWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxlIChpc0FTQ0lJ
SGV4RGlnaXQobV9jdXJyZW50KSAmJiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0gICAgaWYgKG1h
eGltdW1EaWdpdHMgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IGhleFZhbHVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0cyA+PSAwICYm
IG1fY3VycmVudCAhPSAnbicpKQorICAgICAgICByZXR1cm4gaGV4VmFsdWU7CiAKICAgICAvLyBO
byBtb3JlIHBsYWNlIGluIHRoZSBoZXhWYWx1ZSBidWZmZXIuCiAgICAgLy8gVGhlIHZhbHVlcyBh
cmUgc2hpZnRlZCBvdXQgYW5kIHBsYWNlZCBpbnRvIHRoZSBtX2J1ZmZlcjggdmVjdG9yLgpAQCAt
MTUzMywxMSArMTUzMiwxNCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4
KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgcmV0
dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5z
aXplKCksIDE2KTsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9j
dXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gcGFyc2VJbnRPdmVy
ZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFy
eShkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpCiB7
CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IGJpbmFyeSB2YWx1ZXMgZml0IGludG8gNCBieXRl
cy4KICAgICB1aW50MzJfdCBiaW5hcnlWYWx1ZSA9IDA7CkBAIC0xNTU0LDEwICsxNTU2LDggQEAg
QUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZh
bHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdpdCht
X2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJy
ZW50KSAmJiBkaWdpdCA+PSAwKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQorICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
PihiaW5hcnlWYWx1ZSk7CiAKICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkg
PiBkaWdpdDsgLS1pKQogICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNTY3LDE3ICsx
NTY3LDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91Ymxl
JiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNBU0NJ
SURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSAwOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQo
KSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4obWFrZUlkZW50aWZpZXIobV9idWZmZXI4
LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkpOwogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUlu
dE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwotICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91
YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgMikpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVl
KQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVu
dGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZU9jdGFsKCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246
IG1vc3Qgb2N0YWwgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3Qgb2N0YWxW
YWx1ZSA9IDA7CkBAIC0xNTk0LDEwICsxNTk0LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVy
PFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAg
ICAgfSB3aGlsZSAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsK
IAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewotICAg
ICAgICByZXR1cm5WYWx1ZSA9IG9jdGFsVmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAw
ICYmIG1fY3VycmVudCAhPSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJp
YW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihvY3RhbFZhbHVlKTsKKwogCiAgICAgZm9y
IChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJl
Y29yZDgoZGlnaXRzW2ldKTsKQEAgLTE2MDcsMTcgKzE2MDYsMTcgQEAgQUxXQVlTX0lOTElORSBi
b29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHNo
aWZ0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAg
ICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlm
aWVyKj4+KG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkp
KTsKIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpLCA4KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJ
SURpZ2l0KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+Pihw
YXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46
OnBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJz
ZURlY2ltYWwoKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFsIHZhbHVlcyBm
aXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7CkBAIC0xNjM4
LDEwICsxNjM3LDggQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwo
ZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hp
bGUgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlm
IChkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9
ICdlJykgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBt
X2N1cnJlbnQgIT0gJy4nICYmICFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwg
J2UnKSAmJiBtX2N1cnJlbnQgIT0gJ24nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4oZGVjaW1hbFZhbHVlKTsKIAog
ICAgICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQog
ICAgICAgICAgICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAtMTY1MSw4ICsxNjQ4LDExIEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpCiAgICAgICAgIHJlY29yZDgobV9jdXJyZW50KTsKICAgICAgICAgc2hpZnQoKTsKICAgICB9
CisgICAgCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVu
dCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwg
Y29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1
ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0yMTAwLDEwICsyMTAwLDMwIEBA
IHN0YXJ0OgogICAgICAgICAgICAgdG9rZW4gPSBET1Q7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBnb3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7CisgICAgICAg
IHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgdG9rZW4gPSBET1VCTEU7
CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSkg
eworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkg
eworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24t
bnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAg
IHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sg
OiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICBnb3Rv
IHJldHVybkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpemVfdCBw
YXJzZWRMZW5ndGg7CisgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJs
ZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAg
ICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBl
Rm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKworICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJl
Y3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiKTsKKyAgICAgICAgICAgIHRva2VuID0gYXRFbmQo
KSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAg
ICAgIH0KKyAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDaGFyYWN0ZXJaZXJvOgogICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZiAoKG1fY3Vy
cmVudCB8IDB4MjApID09ICd4JykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX2N1cnJlbnQsICd4JykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0
KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIk5vIGhleGFkZWNpbWFsIGRpZ2l0cyBhZnRlciAnMHgnIik7CiAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBVTlRFUk1JTkFURURfSEVYX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMTMsMTcg
KzIxMzMsMjcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBwcmVm
aXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRh
dGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBw
YXJzZUhleCgpOworICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91Ymxl
PihwYXJzZU51bWJlclJlc3VsdCkpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6
Z2V0PGNvbnN0IElkZW50aWZpZXIqPihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5yYWRpeCA9IDE2OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBp
ZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVjaW1hbCBsaXRl
cmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFU
RURfSEVYX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9y
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2Vy
TGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VM
WSh0b2tlbiAhPSBCSUdJTlQpKQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9y
SW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1f
YnVmZmVyOC5zaHJpbmsoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdiJykgeworICAgICAgICBpZiAoaXNBU0NJSUFs
cGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmICghaXNB
U0NJSUJpbmFyeURpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyIpOwogICAg
ICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7
CkBAIC0yMTMzLDE4ICsyMTYzLDI4IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0
IHRoZSAnYicgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFy
c2VCaW5hcnkodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNl
TnVtYmVyUmVzdWx0ID0gcGFyc2VCaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1i
ZXJSZXN1bHQgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJl
c3VsdCkpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlTnVt
YmVyUmVzdWx0ID8gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpIDogMDsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJp
bmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5
IGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVS
TUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZv
ckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tl
blR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAg
ICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAgICAgaWYg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRlciAnMG8n
Iik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VS
Uk9SVE9LOwpAQCAtMjE1NCwxMyArMjE5NCwyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNo
aWZ0IG91dCB0aGUgJ28nIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAg
ICAgIHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRv
IHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKCFwYXJz
ZU51bWJlclJlc3VsdCB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVt
YmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFy
c2VOdW1iZXJSZXN1bHQgPyBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkgOiAw
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7Cisg
ICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0lu
dFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQp
OworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSA4OworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBv
Y3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBV
TlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlw
ZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAg
ICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0
b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAg
ICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yMTcyLDM0ICsyMjIyLDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290byByZXR1
cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJy
ZW50KSkgewotICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSkpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7
CisgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQp
OwogICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3Rlck51bWJlcjoKICAgICAgICAgaWYgKExJ
S0VMWSh0b2tlbiAhPSBJTlRFR0VSICYmIHRva2VuICE9IERPVUJMRSkpIHsKLSAgICAgICAgICAg
IGlmICghcGFyc2VEZWNpbWFsKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgdG9rZW4gPSBJTlRFR0VSOwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jy4nKSB7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VEZWNpbWFs
KCk7CisgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1
bHQpOworICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tl
bih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlTnVtYmVyUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBz
aGlmdCgpOwotaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKLSAgICAgICAgICAgICAgICAgICAg
cGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tl
biA9IERPVUJMRTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtX2N1
cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51
bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIg
ZXhwb25lbnQgaW5kaWNhdG9yIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0
RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9O
VU1FUklDX0xJVEVSQUxfRVJST1JUT0s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
dHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9
IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMTA7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAg
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVy
IGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJS
T1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJz
ZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBw
YXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5n
dGgpOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
c2l6ZV90IHBhcnNlZExlbmd0aDsKLSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFy
c2VkTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKLSAgICAg
ICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2Vu
RGF0YS0+ZG91YmxlVmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
dG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlz
SWRlbnRTdGFydChtX2N1cnJlbnQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CmluZGV4IGQ4NDVlMmUxNGY1NjlhNGQzOGUyYzNkOTllZjZjNDY3MjMyNDMyMjAuLjE5NzdkYjE2
NDk4ODU1YTE5NzJjODY3YTQxOTgzZWQ2NzQ4YmIzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKQEAgLTE3MywxMiArMTczLDEzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0
IHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICB0ZW1wbGF0
ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IE5FVkVSX0lOTElORSBTdHJpbmdQYXJzZVJlc3Vs
dCBwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXRhKiwgYm9vbCBzdHJpY3RNb2RlKTsKIAor
ICAgIGVudW0gY2xhc3MgTnVtYmVyUGFyc2VSZXN1bHQgeyBOdW1iZXIsIEJpZ0ludCwgRmFpbHVy
ZSB9OwogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncywgTGV4ZXJFc2NhcGVQ
YXJzZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0
IHBhcnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0
ZXIpOwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxp
dGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CisgICAgQUxXQVlTX0lO
TElORSBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+IHBhcnNlSGV4KCk7CisgICAg
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlm
aWVyKj4+IHBhcnNlQmluYXJ5KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZh
cmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IHBhcnNlT2N0YWwoKTsKKyAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIq
Pj4gcGFyc2VEZWNpbWFsKCk7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNlTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VOdW1iZXJBZnRl
ckV4cG9uZW50SW5kaWNhdG9yKCk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlTXVsdGls
aW5lQ29tbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAppbmRleCBhY2RhYzZjYTExNjdkNWRmNGJmNDZhZGRkNzM5YmVjZWM4YmQxOWJm
Li5iYmNkYTA5MDYzNjI2YjdiODYzMTIyZjdiNWUzZTNhNDYwMTM1NWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtOTIsNiArOTIs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBCaWdJbnRO
b2RlOjpCaWdJbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIHZhbHVlLCB1aW50OF90IHJhZGl4KQorICAgICAgICA6IENvbnN0YW50Tm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6YmlnSW50VHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5l
IFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyMmNkOGQxN2NlZjJiM2Ri
ZjcxNjhiMzJhOTkyYWFjZGNjLi40ZDIzYTQxYTA3YzEwNGNkYzc0ZGIzMThlMjNiY2NlMjY3ZDhk
MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0ZXJh
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5
TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9Owog
CisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0Jp
Z0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNWYWx1ZSBq
c1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3JhZGl4Owor
ICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NTk5M2FjMWJkNTQyNmM0YTExZjAyZGFhOGU5
OGQ1MzE1MC4uODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNmNTMxZWZmNjczMThkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVB
bmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3Ry
aW5nOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
KyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9j
YXRpb24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RS
SU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFm
ZDRhN2FmMmU5YzhlMzUyNzNjY2M3ZTc0NTliZDU5MDk2MTZjNS4uYzIwNThhZWViMGQzODhkODEx
OTMyY2ZjN2NhNTExNDA5NDMwODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAg
ICAgQkFDS1FVT1RFLAogICAgIElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAg
ICBJREVOVCwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCkBAIC0yMTgsNiArMjE5LDEwIEBA
IHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICAgICAgYm9vbCBlc2NhcGVkOwogICAgIH07CiAgICAg
c3RydWN0IHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogYmlnSW50U3RyaW5nOworICAgICAg
ICB1aW50OF90IHJhZGl4OworICAgIH07CisgICAgc3RydWN0IHsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogY29va2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiByYXc7CiAgICAgICAg
IGJvb2wgaXNUYWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9S
ZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApp
bmRleCA0ZjY0NzFiNTRmZDVlODgxZGNkYzMyYmNmY2FmNDQ1ZmE1MmEyODQyLi4wM2NhZTJhNDdm
OTAzYjZkMmRmZTdkNzc1MjA1YWFkODhmNTIwMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtMzEsMTggKzMxLDE5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogCi0gICAg
ICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOworICAgICAgICB1c2luZyBUeXBlID0gdWludDhfdDsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZUludDMyID0gMTsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFR5cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwMjsKICAgICAgICAgc3RhdGljIGNvbnN0
IFR5cGUgVHlwZU1heWJlU3RyaW5nID0gMHgwNDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUg
VHlwZU1heWJlTnVsbCAgID0gMHgwODsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1h
eWJlQm9vbCAgID0gMHgxMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3Ro
ZXIgID0gMHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQmlnSW50ID0g
MHgyMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHg0MDsK
IAotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8
IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1h
eWJlT3RoZXI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVCaXRzID0gVHlwZU1heWJl
TnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJlTnVsbCB8IFR5cGVNYXliZUJvb2wg
fCBUeXBlTWF5YmVCaWdJbnQgfCBUeXBlTWF5YmVPdGhlcjsKIAogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVlZGVkID0gNjsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJp
dHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5l
Y2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKICAgICAgICAgZXhwbGljaXQgUmVzdWx0VHlw
ZShUeXBlIHR5cGUpCkBAIC03MCw2ICs3MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5cGVNYXliZUJvb2w7CiAgICAgICAg
IH0KIAorICAgICAgICBib29sIGRlZmluaXRlbHlJc0JpZ0ludCgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5cGVNYXliZUJpZ0lu
dDsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgbWlnaHRCZU51bWJlcigpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBUeXBlTWF5YmVOdW1iZXI7CkBAIC04
MCw2ICs4NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAhbWlnaHRC
ZU51bWJlcigpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBib29sIG1pZ2h0QmVCaWdJ
bnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgVHlwZU1h
eWJlQmlnSW50OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc05vdEJpZ0ludCgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbWlnaHRCZUJpZ0ludCgpOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBudWxsVHlwZSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZU51bGwpOwpAQCAt
MTA1LDExICsxMjEsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gUmVz
dWx0VHlwZShUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcpOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBhZGRSZXN1bHRUeXBlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVtYmVyIHwgVHlw
ZU1heWJlU3RyaW5nIHwgVHlwZU1heWJlQmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgc3RhdGljIFJlc3VsdFR5cGUgc3RyaW5nVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZVN0cmluZyk7CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIGJpZ0ludFR5cGUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQpOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSB1bmtub3duVHlwZSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVCaXRzKTsKQEAgLTEyMSw3
ICsxNDcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVy
VHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSB8fCBvcDIu
ZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGUo
KTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdPck51bWJlclR5cGUoKTsKKyAgICAgICAgICAg
IGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBiaWdJbnRUeXBlKCk7CisgICAgICAgICAgICByZXR1
cm4gYWRkUmVzdWx0VHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVW5saWtlIGluIEMs
IGEgbG9naWNhbCBvcCBwcm9kdWNlcyB0aGUgdmFsdWUgb2YgdGhlCkBAIC0xMzQsNiArMTYyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsK
ICAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzU3RyaW5nKCkgJiYgb3AyLmRlZmluaXRl
bHlJc1N0cmluZygpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7CisgICAg
ICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNC
aWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmlnSW50VHlwZSgpOwogICAgICAgICAg
ICAgcmV0dXJuIHVua25vd25UeXBlKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA4ZGIzNWM3Nzk2ZjRkMzZmYTU0NTI1
OTE2MGRjNTg5ZWI4NDlkOTU2Li41MzljNDczNDBlYjZhNjQ1ZmU3Y2FmNDQxYzNmMDBkYjViM2Nm
NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIGlu
dCBNZXRhUHJvcGVydHlCaXQgPSAweDgwMDAwMDAwOwogICAgIGVudW0gOiBpbnQgeyBOb25lRXhw
ciA9IDAsCi0gICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHBy
LCBEb3VibGVFeHByLCBTdHJpbmdFeHByLAorICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29s
dmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwK
ICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0
TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIs
IEltcG9ydEV4cHIsIEJyYWNrZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKICAgICAgICAgTmV3
RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKQEAgLTE3NSw2
ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3VibGVFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGRvdWJsZSkgeyByZXR1cm4gRG91YmxlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUludGVnZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4g
SW50ZWdlckV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCaWdJbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gQmlnSW50RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyBy
ZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNh
OThhZDdiYzMwZjQ1OWNjMjUxYmRlNTVmOThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3
MjM5MjIzODc0MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZl
cikgXAogICAgIG1hY3JvKEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxF
TUVOVCkgXAorICAgIG1hY3JvKEJpZ0ludCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBt
YWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjZhZDIyMDVmYWI3Y2U2
YTcwNGYwZGE4ZjgwZmJkNWU5YjRhOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0wLDAgKzEsNjM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gYmVsb3c6CisgKgorICogQ29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFy
dCBwcm9qZWN0IGF1dGhvcnMuICBQbGVhc2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBm
b3IgZGV0YWlscy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYQorICogQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBbMl0uCisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9k
YXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVyL0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5j
b20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIw
MDkgVGhlIEdvIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9n
b2xhbmcub3JnL0xJQ0VOU0UKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNCaWdJbnQuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29t
bW9uLmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmVjdG9yLmg+CisKKyNkZWZpbmUgU1RBVElDX0FTU0VSVChj
b25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9CisgICAg
eyAiSlNCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTQmlnSW50KSB9OworCit2b2lkIEpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKK30KKworSlNCaWdJbnQ6OkpTQmlnSW50KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludCBsZW5ndGgpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBt
X2xlbmd0aChsZW5ndGgpCit7IH0KKwordm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShib29sIHpl
cm9Jbml0aWFsaXplKQoreworICAgIHNldFNpZ24oZmFsc2UpOworICAgIGlmICh6ZXJvSW5pdGlh
bGl6ZSkgeworICAgICAgICB2b2lkKiBkYXRhID0gc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFTdG9y
YWdlKCkpOworICAgICAgICBtZW1zZXQoZGF0YSwgMCwgbGVuZ3RoKCkgKiBEaWdpdFNpemUpOwor
ICAgIH0KK30KKworU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0pCit7CisgICAg
SlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHZtLCAwKTsKKyAg
ICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNlKTsKKyAgICByZXR1cm4gemVyb0JpZ0ludDsKK30K
Kworc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0aW9uU2l6ZShpbnQgbGVuZ3RoKQoreworICAgIHNp
emVfdCBzaXplV2l0aFBhZGRpbmcgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHNp
emVfdCk+KHNpemVvZihKU0JpZ0ludCkpOworICAgIHJldHVybiBzaXplV2l0aFBhZGRpbmcgKyBs
ZW5ndGggKiBzaXplb2YoRGlnaXQpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGludCBsZW5ndGgpCit7CisgICAgSlNC
aWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgpKSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVj
dHVyZS5nZXQoKSwgbGVuZ3RoKTsKKyAgICBiaWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZt
KTsKKyAgICByZXR1cm4gYmlnSW50OworfQorCit2b2lkIEpTQmlnSW50OjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
fQorCitKU1ZhbHVlIEpTQmlnSW50Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4o
dGhpcyk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWludDhfdD4gSlNCaWdJbnQ6OnRvU3RyaW5nT25l
RGlnaXQoKQoreworICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgaWYgKGxlbmd0aCgpID09IDEgJiYgIXNpZ24oKSkgeworICAgICAgICBEaWdpdCByRGlnaXQg
PSBkaWdpdCgwKTsKKyAgICAgICAgaWYgKHJEaWdpdCA8PSA5KQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJEaWdpdCk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9
CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCkKK3sKKyAgICBpZiAocy5pczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3Ro
KCksIDAsIHJhZGl4LCBmYWxzZSk7CisgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLmNo
YXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworfQorCitTdHJpbmcg
SlNCaWdJbnQ6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgaW50IHJhZGl4KQoreworICAgIGlm
ICh0aGlzLT5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCgnMCcpOworCisgICAgcmV0dXJuIHRvU3RyaW5nR2Vu
ZXJpYyhleGVjLCB0aGlzLCByYWRpeCk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmlzWmVybygpCit7
CisgICAgQVNTRVJUKGxlbmd0aCgpIHx8ICFzaWduKCkpOworICAgIHJldHVybiBsZW5ndGgoKSA9
PSAwOworfQorCisvLyBNdWx0aXBsaWVzIHt0aGlzfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtz
dW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9pZCBKU0JpZ0ludDo6aW5wbGFjZU11bHRpcGx5QWRk
KHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJfdCBzdW1tYW5kKQoreworICAgIFNUQVRJQ19BU1NF
UlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAgU1RBVElDX0FTU0VSVChz
aXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisKKyAgICBpbnRlcm5hbE11bHRpcGx5
QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwgbGVuZ3RoKCksIHRoaXMpOworfQorCisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMQordHlwZWRlZiB1aW50NjRf
dCBUd29EaWdpdDsKKyNlbGlmIEhBVkUoSU5UMTI4X1QpCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lU
IDEKK3R5cGVkZWYgX191aW50MTI4X3QgVHdvRGlnaXQ7CisjZWxzZQorI2RlZmluZSBIQVZFX1RX
T19ESUdJVCAwCisjZW5kaWYKKworLy8ge2NhcnJ5fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxp
emVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxl
ZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0QWRkKERpZ2l0IGEsIERp
Z2l0IGIsIERpZ2l0JiBjYXJyeSkKK3sKKyNpZiBIQVZFX1RXT19ESUdJVAorICAgIFR3b0RpZ2l0
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSArIHN0YXRpY19jYXN0PFR3b0RpZ2l0
PihiKTsKKyAgICBjYXJyeSArPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdpdCByZXN1bHQgPSBhICsg
YjsKKworICAgIGlmIChyZXN1bHQgPCBhKQorICAgICAgICBjYXJyeSArPSAxOworICAgIAorICAg
IHJldHVybiByZXN1bHQ7CisjZW5kaWYKK30KKworLy8ge2JvcnJvd30gbXVzdCBwb2ludCB0byBh
biBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8vIGJ5
IG9uZSBvciBsZWZ0IGFsb25lLgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFN1YihE
aWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgYm9ycm93KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisg
ICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpIC0gc3RhdGljX2Nh
c3Q8VHdvRGlnaXQ+KGIpOworICAgIGJvcnJvdyArPSAocmVzdWx0ID4+IERpZ2l0Qml0cykgJiAx
OworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisg
ICAgRGlnaXQgcmVzdWx0ID0gYSAtIGI7CisgICAgaWYgKHJlc3VsdCA+IGEpCisgICAgICAgIGJv
cnJvdyArPSAxOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsK
KyNlbmRpZgorfQorCisvLyBSZXR1cm5zIHRoZSBsb3cgaGFsZiBvZiB0aGUgcmVzdWx0LiBIaWdo
IGhhbGYgaXMgaW4ge2hpZ2h9LgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdE11bChE
aWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGlnaCkKK3sKKyNpZiBIQVZFX1RXT19ESUdJVAorICAg
IFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0PihhKSAqIHN0YXRpY19jYXN0
PFR3b0RpZ2l0PihiKTsKKyAgICBoaWdoID0gcmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgLy8gTXVsdGlwbHkg
aW4gaGFsZi1wb2ludGVyLXNpemVkIGNodW5rcy4KKyAgICAvLyBGb3IgaW5wdXRzIFtBSCBBTF0q
W0JIIEJMXSwgdGhlIHJlc3VsdCBpczoKKyAgICAvLworICAgIC8vICAgICAgICAgICAgW0FMKkJM
XSAgLy8gckxvdworICAgIC8vICAgICsgICAgW0FMKkJIXSAgICAgLy8gck1pZDEKKyAgICAvLyAg
ICArICAgIFtBSCpCTF0gICAgIC8vIHJNaWQyCisgICAgLy8gICAgKyBbQUgqQkhdICAgICAgICAv
LyBySGlnaAorICAgIC8vICAgID0gW1I0IFIzIFIyIFIxXSAgLy8gaGlnaCA9IFtSNCBSM10sIGxv
dyA9IFtSMiBSMV0KKyAgICAvLworICAgIC8vIFdoZXJlIG9mIGNvdXJzZSB3ZSBtdXN0IGJlIGNh
cmVmdWwgd2l0aCBjYXJyaWVzIGJldHdlZW4gdGhlIGNvbHVtbnMuCisgICAgRGlnaXQgYUxvdyA9
IGEgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGFIaWdoID0gYSA+PiBIYWxmRGlnaXRCaXRz
OworICAgIERpZ2l0IGJMb3cgPSBiICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBiSGlnaCA9
IGIgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICAKKyAgICBEaWdpdCByTG93ID0gYUxvdyAqIGJMb3c7
CisgICAgRGlnaXQgck1pZDEgPSBhTG93ICogYkhpZ2g7CisgICAgRGlnaXQgck1pZDIgPSBhSGln
aCAqIGJMb3c7CisgICAgRGlnaXQgckhpZ2ggPSBhSGlnaCAqIGJIaWdoOworICAgIAorICAgIERp
Z2l0IGNhcnJ5ID0gMDsKKyAgICBEaWdpdCBsb3cgPSBkaWdpdEFkZChyTG93LCByTWlkMSA8PCBI
YWxmRGlnaXRCaXRzLCBjYXJyeSk7CisgICAgbG93ID0gZGlnaXRBZGQobG93LCByTWlkMiA8PCBI
YWxmRGlnaXRCaXRzLCBjYXJyeSk7CisKKyAgICBoaWdoID0gKHJNaWQxID4+IEhhbGZEaWdpdEJp
dHMpICsgKHJNaWQyID4+IEhhbGZEaWdpdEJpdHMpICsgckhpZ2ggKyBjYXJyeTsKKworICAgIHJl
dHVybiBsb3c7CisjZW5kaWYKK30KKworLy8gUmFpc2VzIHtiYXNlfSB0byB0aGUgcG93ZXIgb2Yg
e2V4cG9uZW50fS4gRG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93LgorSlNCaWdJbnQ6OkRpZ2l0
IEpTQmlnSW50OjpkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCkKK3sKKyAgICBE
aWdpdCByZXN1bHQgPSAxdWxsOworICAgIHdoaWxlIChleHBvbmVudCA+IDApIHsKKyAgICAgICAg
aWYgKGV4cG9uZW50ICYgMSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSBiYXNlOworCisgICAgICAg
IGV4cG9uZW50ID4+PSAxOworICAgICAgICBiYXNlICo9IGJhc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJucyB0aGUgcXVvdGllbnQuCisvLyBxdW90aWVudCA9
IChoaWdoIDw8IERpZ2l0Qml0cyArIGxvdyAtIHJlbWFpbmRlcikgLyBkaXZpc29yCitKU0JpZ0lu
dDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQg
ZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcikKK3sKKyAgICBBU1NFUlQoaGlnaCA8IGRpdmlzb3Ip
OworI2lmIENQVShYODZfNjQpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBx
dW90aWVudDsKKyAgICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2cSAgJVtkaXZpc29yXSIK
KyAgICAgICAgLy8gT3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIHJheCwge3JlbX0gaW4g
cmR4LgorICAgICAgICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5w
dXRzOiBwdXQge2hpZ2h9IGludG8gcmR4LCB7bG93fSBpbnRvIHJheCwgYW5kIHtkaXZpc29yfSBp
bnRvCisgICAgICAgIC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJk
IihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICByZW1haW5k
ZXIgPSByZW07CisgICAgcmV0dXJuIHF1b3RpZW50OworI2VsaWYgQ1BVKFg4NikgJiYgQ09NUElM
RVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAg
ICBfX2FzbV9fKCJkaXZsICAlW2Rpdmlzb3JdIgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGll
bnR9IHdpbGwgYmUgaW4gZWF4LCB7cmVtfSBpbiBlZHguCisgICAgICAgIDogIj1hIihxdW90aWVu
dCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6IHB1dCB7aGlnaH0gaW50byBlZHgsIHts
b3d9IGludG8gZWF4LCBhbmQge2Rpdmlzb3J9IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVy
IG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3Jd
ICJybSIoZGl2aXNvcikpOworICAgIHJlbWFpbmRlciA9IHJlbTsKKyAgICByZXR1cm4gcXVvdGll
bnQ7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBEaWdpdCBrSGFsZkRpZ2l0QmFzZSA9IDF1bGwg
PDwgSGFsZkRpZ2l0Qml0czsKKyAgICAvLyBBZGFwdGVkIGZyb20gV2FycmVuLCBIYWNrZXIncyBE
ZWxpZ2h0LCBwLiAxNTIuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpbnQgcyA9IGNsejY0KGRp
dmlzb3IpOworI2Vsc2UKKyAgICBpbnQgcyA9IGNsejMyKGRpdmlzb3IpOworI2VuZGlmCisgICAg
ZGl2aXNvciA8PD0gczsKKyAgICAKKyAgICBEaWdpdCB2bjEgPSBkaXZpc29yID4+IEhhbGZEaWdp
dEJpdHM7CisgICAgRGlnaXQgdm4wID0gZGl2aXNvciAmIEhhbGZEaWdpdE1hc2s7CisKKyAgICAv
LyB7c30gY2FuIGJlIDAuICJsb3cgPj4gRGlnaXRCaXRzID09IGxvdyIgb24geDg2LCBzbyB3ZSAi
JiIgaXQgd2l0aAorICAgIC8vIHtzX3plcm9fbWFza30gd2hpY2ggaXMgMCBpZiBzID09IDAgYW5k
IGFsbCAxLWJpdHMgb3RoZXJ3aXNlLgorICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGludHB0cl90
KSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBEaWdpdCBzWmVyb01hc2sgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC1zKSA+PiAoRGlnaXRCaXRzIC0gMSkpOworICAg
IERpZ2l0IHVuMzIgPSAoaGlnaCA8PCBzKSB8ICgobG93ID4+IChEaWdpdEJpdHMgLSBzKSkgJiBz
WmVyb01hc2spOworICAgIERpZ2l0IHVuMTAgPSBsb3cgPDwgczsKKyAgICBEaWdpdCB1bjEgPSB1
bjEwID4+IEhhbGZEaWdpdEJpdHM7CisgICAgRGlnaXQgdW4wID0gdW4xMCAmIEhhbGZEaWdpdE1h
c2s7CisgICAgRGlnaXQgcTEgPSB1bjMyIC8gdm4xOworICAgIERpZ2l0IHJoYXQgPSB1bjMyIC0g
cTEgKiB2bjE7CisKKyAgICB3aGlsZSAocTEgPj0ga0hhbGZEaWdpdEJhc2UgfHwgcTEgKiB2bjAg
PiByaGF0ICoga0hhbGZEaWdpdEJhc2UgKyB1bjEpIHsKKyAgICAgICAgcTEtLTsKKyAgICAgICAg
cmhhdCArPSB2bjE7CisgICAgICAgIGlmIChyaGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgRGlnaXQgdW4yMSA9IHVuMzIgKiBrSGFsZkRpZ2l0
QmFzZSArIHVuMSAtIHExICogZGl2aXNvcjsKKyAgICBEaWdpdCBxMCA9IHVuMjEgLyB2bjE7Cisg
ICAgcmhhdCA9IHVuMjEgLSBxMCAqIHZuMTsKKworICAgIHdoaWxlIChxMCA+PSBrSGFsZkRpZ2l0
QmFzZSB8fCBxMCAqIHZuMCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMCkgeworICAgICAg
ICBxMC0tOworICAgICAgICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZE
aWdpdEJhc2UpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZW1haW5kZXIgPSAo
dW4yMSAqIGtIYWxmRGlnaXRCYXNlICsgdW4wIC0gcTAgKiBkaXZpc29yKSA+PiBzOworICAgIHJl
dHVybiBxMSAqIGtIYWxmRGlnaXRCYXNlICsgcTA7CisjZW5kaWYKK30KKworLy8gTXVsdGlwbGll
cyB7c291cmNlfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0
LgorLy8ge3Jlc3VsdH0gYW5kIHtzb3VyY2V9IG1heSBiZSB0aGUgc2FtZSBCaWdJbnQgZm9yIGlu
cGxhY2UgbW9kaWZpY2F0aW9uLgordm9pZCBKU0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFkZChK
U0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCBuLCBKU0Jp
Z0ludCogcmVzdWx0KQoreworICAgIEFTU0VSVChzb3VyY2UtPmxlbmd0aCgpID49IG4pOworICAg
IEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID49IG4pOworCisgICAgRGlnaXQgY2FycnkgPSBzdW1t
YW5kOworICAgIERpZ2l0IGhpZ2ggPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsr
KSB7CisgICAgICAgIERpZ2l0IGN1cnJlbnQgPSBzb3VyY2UtPmRpZ2l0KGkpOworICAgICAgICBE
aWdpdCBuZXdDYXJyeSA9IDA7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGlzIHJvdW5kJ3MgbXVs
dGlwbGljYXRpb24uCisgICAgICAgIERpZ2l0IG5ld0hpZ2ggPSAwOworICAgICAgICBjdXJyZW50
ID0gZGlnaXRNdWwoY3VycmVudCwgZmFjdG9yLCBuZXdIaWdoKTsKKworICAgICAgICAvLyBBZGQg
bGFzdCByb3VuZCdzIGNhcnJ5b3ZlcnMuCisgICAgICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJy
ZW50LCBoaWdoLCBuZXdDYXJyeSk7CisgICAgICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJyZW50
LCBjYXJyeSwgbmV3Q2FycnkpOworCisgICAgICAgIC8vIFN0b3JlIHJlc3VsdCBhbmQgcHJlcGFy
ZSBmb3IgbmV4dCByb3VuZC4KKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBjdXJyZW50KTsK
KyAgICAgICAgY2FycnkgPSBuZXdDYXJyeTsKKyAgICAgICAgaGlnaCA9IG5ld0hpZ2g7CisgICAg
fQorCisgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPiBuKSB7CisgICAgICAgIHJlc3VsdC0+c2V0
RGlnaXQobisrLCBjYXJyeSArIGhpZ2gpOworCisgICAgICAgIC8vIEN1cnJlbnQgY2FsbGVycyBk
b24ndCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVzdWx0cywgYnV0IGxldCdzIGJlIHJvYnVzdC4KKyAg
ICAgICAgd2hpbGUgKG4gPCByZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVzdWx0LT5z
ZXREaWdpdChuKyssIDApOworICAgIH0gZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGNh
cnJ5ICsgaGlnaCkpOworfQorCitib29sIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSkKK3sKKyAgICBpZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgtPmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CisvLyBEaXZpZGVzIHt4fSBieSB7ZGl2aXNvcn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGluIHtx
dW90aWVudH0gYW5kIHtyZW1haW5kZXJ9LgorLy8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250cmFj
dCBpczoKKy8vIHF1b3RpZW50ID0gKHggLSByZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAwIDw9
IHJlbWFpbmRlciA8IGRpdmlzb3IuCisvLyBJZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhhbmRs
ZSwgYW4gYXBwcm9wcmlhdGVseSBzaXplZCBCaWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVkIGZv
ciBpdDsgb3RoZXJ3aXNlIHRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcgZW5v
dWdoLgorLy8ge3F1b3RpZW50fSBjYW4gYmUgdGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1wbGFj
ZSBkaXZpc2lvbi4ge3F1b3RpZW50fSBjYW4KKy8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUgY2Fs
bGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0ludDo6
YWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZp
c29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VS
VChkaXZpc29yKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4LT5p
c1plcm8oKSk7CisgICAgcmVtYWluZGVyID0gMDsKKyAgICBpZiAoZGl2aXNvciA9PSAxKSB7Cisg
ICAgICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKQorICAgICAgICAgICAgKnF1b3RpZW50ID0g
eDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgo
KTsKKyAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikgeworICAgICAgICBpZiAoKnF1b3RpZW50
ID09IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVu
Z3RoKGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGgg
LSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFp
bmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgICAgICAgICAoKnF1
b3RpZW50KS0+c2V0RGlnaXQoaSwgcSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICBkaWdp
dERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOworICAgIH0K
K30KKworLy8gTG9va3VwIHRhYmxlIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2YgYml0cyByZXF1
aXJlZCBwZXIgY2hhcmFjdGVyIG9mIGEKKy8vIGJhc2UtTiBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgYSBudW1iZXIuIFRvIGluY3JlYXNlIGFjY3VyYWN5LCB0aGUgYXJyYXkKKy8vIHZhbHVlIGlz
IHRoZSBhY3R1YWwgdmFsdWUgbXVsdGlwbGllZCBieSAzMi4gVG8gZ2VuZXJhdGUgdGhpcyB0YWJs
ZToKKy8vIGZvciAodmFyIGkgPSAwOyBpIDw9IDM2OyBpKyspIHsgcHJpbnQoTWF0aC5jZWlsKE1h
dGgubG9nMihpKSAqIDMyKSArICIsIik7IH0KK2NvbnN0ZXhwciB1aW50OF90IE1heEJpdHNQZXJD
aGFyW10gPSB7CisgICAgMCwgICAwLCAgIDMyLCAgNTEsICA2NCwgIDc1LCAgODMsICA5MCwgIDk2
LCAvLyAwLi44CisgICAgMTAyLCAxMDcsIDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAg
ICAvLyA5Li4xNgorICAgIDEzMSwgMTM0LCAxMzYsIDEzOSwgMTQxLCAxNDMsIDE0NSwgMTQ3LCAg
ICAgLy8gMTcuLjI0CisgICAgMTQ5LCAxNTEsIDE1MywgMTU0LCAxNTYsIDE1OCwgMTU5LCAxNjAs
ICAgICAvLyAyNS4uMzIKKyAgICAxNjIsIDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIDMzLi4zNgorfTsKKworc3RhdGljIGNvbnN0IGludCBCaXRzUGVyQ2hhclRhYmxl
U2hpZnQgPSA1Oworc3RhdGljIGNvbnN0IHNpemVfdCBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGll
ciA9IDF1IDw8IEJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKworLy8gQ29tcHV0ZSAoYW4gb3ZlcmFw
cHJveGltYXRpb24gb2YpIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisvLyBE
aXZpZGUgYml0IGxlbmd0aCBvZiB0aGUgQmlnSW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIg
Y2hhcmFjdGVyLgordWludDY0X3QgSlNCaWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJz
UmVxdWlyZWQoaW50IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2ln
bikKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NChs
YXN0RGlnaXQpOworI2Vsc2UKKyAgICBpbnQgbGVhZGluZ1plcm9zID0gY2x6MzIobGFzdERpZ2l0
KTsKKyNlbmRpZgorICAgIHNpemVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBEaWdpdEJpdHMgLSBs
ZWFkaW5nWmVyb3M7CisKKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBiaXRzIHdlIGNhbiByZXBy
ZXNlbnQgd2l0aCBvbmUgY2hhcmFjdGVyLiBXZSdsbCB1c2UgdGhpcworICAgIC8vIHRvIGZpbmQg
YW4gYXBwcm9wcmlhdGUgY2h1bmsgc2l6ZSBiZWxvdy4KKyAgICB1aW50OF90IG1heEJpdHNQZXJD
aGFyID0gTWF4Qml0c1BlckNoYXJbcmFkaXhdOworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVz
dWx0IGxlbmd0aCwgd2UgaGF2ZSB0byBiZSBwZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAg
Ly8gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJpdHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50
LgorICAgIHVpbnQ4X3QgbWluQml0c1BlckNoYXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAg
ICAvLyBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgY29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBh
dm9pZCBvdmVyZmxvd3MuCisgICAgdWludDY0X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9
IGJpdExlbmd0aDsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICo9IEJpdHNQZXJDaGFy
VGFibGVNdWx0aXBsaWVyOworCisgICAgLy8gUm91bmQgdXAuCisgICAgbWF4aW11bUNoYXJhY3Rl
cnNSZXF1aXJlZCArPSBtaW5CaXRzUGVyQ2hhciAtIDE7CisgICAgbWF4aW11bUNoYXJhY3RlcnNS
ZXF1aXJlZCAvPSBtaW5CaXRzUGVyQ2hhcjsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVk
ICs9IHNpZ247CisgICAgCisgICAgcmV0dXJuIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQ7Cit9
CisKK1N0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNC
aWdJbnQqIHgsIGludCByYWRpeCkKK3sKKyAgICBTdHJpbmdWZWN0b3I8TENoYXI+IHJlc3VsdFN0
cmluZzsKKworICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NF
UlQoIXgtPmlzWmVybygpKTsKKworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBi
b29sIHNpZ24gPSB4LT5zaWduKCk7CisKKyAgICB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4
Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWly
ZWQgPSBjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGxlbmd0aCwgcmFkaXgsIHgt
PmRpZ2l0KGxlbmd0aCAtIDEpLCBzaWduKTsKKworICAgIGlmIChtYXhpbXVtQ2hhcmFjdGVyc1Jl
cXVpcmVkID4gSlNTdHJpbmc6Ok1heExlbmd0aCkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KFdURk1v
dmUocmVzdWx0U3RyaW5nKSk7CisgICAgfQorCisgICAgRGlnaXQgbGFzdERpZ2l0OworICAgIGlm
IChsZW5ndGggPT0gMSkKKyAgICAgICAgbGFzdERpZ2l0ID0geC0+ZGlnaXQoMCk7CisgICAgZWxz
ZSB7CisgICAgICAgIGludCBjaHVua0NoYXJzID0gRGlnaXRCaXRzICogQml0c1BlckNoYXJUYWJs
ZU11bHRpcGxpZXIgLyBtYXhCaXRzUGVyQ2hhcjsKKyAgICAgICAgRGlnaXQgY2h1bmtEaXZpc29y
ID0gZGlnaXRQb3cocmFkaXgsIGNodW5rQ2hhcnMpOworCisgICAgICAgIC8vIEJ5IGNvbnN0cnVj
dGlvbiBvZiBjaHVua0NoYXJzLCB0aGVyZSBjYW4ndCBoYXZlIGJlZW4gb3ZlcmZsb3cuCisgICAg
ICAgIEFTU0VSVChjaHVua0Rpdmlzb3IpOworICAgICAgICBpbnQgbm9uWmVyb0RpZ2l0ID0gbGVu
Z3RoIC0gMTsKKyAgICAgICAgQVNTRVJUKHgtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworCisgICAg
ICAgIC8vIHtyZXN0fSBob2xkcyB0aGUgcGFydCBvZiB0aGUgQmlnSW50IHRoYXQgd2UgaGF2ZW4n
dCBsb29rZWQgYXQgeWV0LgorICAgICAgICAvLyBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCAicmVt
YWluZGVyIiEKKyAgICAgICAgSlNCaWdJbnQqIHJlc3QgPSBudWxscHRyOworCisgICAgICAgIC8v
IEluIHRoZSBmaXJzdCByb3VuZCwgZGl2aWRlIHRoZSBpbnB1dCwgYWxsb2NhdGluZyBhIG5ldyBC
aWdJbnQgZm9yCisgICAgICAgIC8vIHRoZSByZXN1bHQgPT0gcmVzdDsgZnJvbSB0aGVuIG9uIGRp
dmlkZSB0aGUgcmVzdCBpbi1wbGFjZS4KKyAgICAgICAgSlNCaWdJbnQqKiBkaXZpZGVuZCA9ICZ4
OworICAgICAgICBkbyB7CisgICAgICAgICAgICBEaWdpdCBjaHVuazsKKyAgICAgICAgICAgIGFi
c29sdXRlRGl2U21hbGwoZXhlYywgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVu
ayk7CisgICAgICAgICAgICBBU1NFUlQocmVzdCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0g
JnJlc3Q7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykg
eworICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbY2h1bmsg
JSByYWRpeF0pOworICAgICAgICAgICAgICAgIGNodW5rIC89IHJhZGl4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgQVNTRVJUKCFjaHVuayk7CisKKyAgICAgICAgICAgIGlmICghcmVzdC0+
ZGlnaXQobm9uWmVyb0RpZ2l0KSkKKyAgICAgICAgICAgICAgICBub25aZXJvRGlnaXQtLTsKKwor
ICAgICAgICAgICAgLy8gV2UgY2FuIG5ldmVyIGNsZWFyIG1vcmUgdGhhbiBvbmUgZGlnaXQgcGVy
IGl0ZXJhdGlvbiwgYmVjYXVzZQorICAgICAgICAgICAgLy8gY2h1bmtEaXZpc29yIGlzIHNtYWxs
ZXIgdGhhbiBtYXggZGlnaXQgdmFsdWUuCisgICAgICAgICAgICBBU1NFUlQocmVzdC0+ZGlnaXQo
bm9uWmVyb0RpZ2l0KSk7CisgICAgICAgIH0gd2hpbGUgKG5vblplcm9EaWdpdCA+IDApOworCisg
ICAgICAgIGxhc3REaWdpdCA9IHJlc3QtPmRpZ2l0KDApOworICAgIH0KKworICAgIGRvIHsKKyAg
ICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tsYXN0RGlnaXQgJSByYWRpeF0p
OworICAgICAgICBsYXN0RGlnaXQgLz0gcmFkaXg7CisgICAgfSB3aGlsZSAobGFzdERpZ2l0ID4g
MCk7CisgICAgQVNTRVJUKHJlc3VsdFN0cmluZy5zaXplKCkpOworICAgIEFTU0VSVChyZXN1bHRT
dHJpbmcuc2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bUNoYXJhY3RlcnNSZXF1
aXJlZCkpOworCisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgorICAgIGludCBuZXdTaXpl
Tm9MZWFkaW5nWmVyb2VzID0gcmVzdWx0U3RyaW5nLnNpemUoKTsKKyAgICB3aGlsZSAobmV3U2l6
ZU5vTGVhZGluZ1plcm9lcyAgPiAxICYmIHJlc3VsdFN0cmluZ1tuZXdTaXplTm9MZWFkaW5nWmVy
b2VzIC0gMV0gPT0gJzAnKQorICAgICAgICBuZXdTaXplTm9MZWFkaW5nWmVyb2VzLS07CisKKyAg
ICByZXN1bHRTdHJpbmcuc2hyaW5rKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMpOworCisgICAgaWYg
KHNpZ24pCisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoJy0nKTsKKworICAgIHN0ZDo6cmV2
ZXJzZShyZXN1bHRTdHJpbmcuYmVnaW4oKSwgcmVzdWx0U3RyaW5nLmVuZCgpKTsKKworICAgIHJl
dHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworfQorCitKU0Jp
Z0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKK3sKKyAg
ICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgaW50IG5vblplcm9J
bmRleCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIWRp
Z2l0KG5vblplcm9JbmRleCkpCisgICAgICAgIG5vblplcm9JbmRleC0tOworCisgICAgaWYgKG5v
blplcm9JbmRleCA9PSBtX2xlbmd0aCAtIDEpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAg
aW50IG5ld0xlbmd0aCA9IG5vblplcm9JbmRleCArIDE7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRC
aWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHZtLCBuZXdMZW5ndGgpOworICAgIFJFTEVB
U0VfQVNTRVJUKHRyaW1tZWRCaWdJbnQpOworICAgIERpZ2l0KiBkYXRhID0gdHJpbW1lZEJpZ0lu
dC0+ZGF0YVN0b3JhZ2UoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsr
KQorICAgICAgICBkYXRhW2ldID0gZGlnaXQoaSk7CisKKyAgICB0cmltbWVkQmlnSW50LT5zZXRT
aWduKHRoaXMtPnNpZ24oKSk7CisKKyAgICByZXR1cm4gdHJpbW1lZEJpZ0ludDsKK30KKworSlNC
aWdJbnQqIEpTQmlnSW50OjphbGxvY2F0ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50
IHJhZGl4LCBpbnQgY2hhcmNvdW50KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4
IDw9IDM2KTsKKyAgICBBU1NFUlQoY2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gTWF4
Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHNpemVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNpemVf
dD4oY2hhcmNvdW50KTsKKyAgICBjb25zdCBpbnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFibGVN
dWx0aXBsaWVyIC0gMTsKKyAgICBpZiAoY2hhcnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgLSByb3VuZHVwKSAvIGJpdHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVfdCBi
aXRzTWluID0gYml0c1BlckNoYXIgKiBjaGFyczsKKworICAgICAgICAvLyBEaXZpZGUgYnkgMzIg
KHNlZSB0YWJsZSksIHJvdW5kaW5nIHVwLgorICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4gKyBy
b3VuZHVwKSA+PiBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWluIDw9
IHN0YXRpY19jYXN0PHNpemVfdD4oTWF4SW50KSkgeworICAgICAgICAgICAgLy8gRGl2aWRlIGJ5
IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAoc3Rh
dGljX2Nhc3Q8aW50PihiaXRzTWluKSArIERpZ2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOworICAg
ICAgICAgICAgaWYgKGxlbmd0aCA8PSBNYXhMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgdm0sIGxlbmd0
aCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChleGVjKQorICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzaXplX3QgSlNCaWdJbnQ6
OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNp
emUgPSB0aGlzT2JqZWN0LT5tX2xlbmd0aCAqIERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6
ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGJ1ZmZlckVzdGltYXRlZFNpemU7Cit9CisKK2RvdWJsZSBK
U0JpZ0ludDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnZlcnRpb24g
ZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgcmV0dXJu
IDAuMDsKK30KKworYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSog
ZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICByZXN1
bHQgPSB0aGlzOworICAgIG51bWJlciA9IHRvTnVtYmVyKGV4ZWMpOworICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YmNhNTljMmExMDFmOGVmMzk3MDM5OTEzODI3NDUyN2Nk
MzhiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCkBAIC0wLDAgKzEsMjEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENh
aW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVs
cGVycy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNp
bmNsdWRlIDx3dGYvQ2FnZWRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNCaWdJbnQgOiBwdWJs
aWMgSlNDZWxsIHsKKyAgICB1c2luZyBCYXNlID0gSlNDZWxsOworCitwdWJsaWM6CisgICAgSlNC
aWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6
ZShib29sIHplcm9Jbml0aWFsaXplKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoaW50IGxlbmd0
aCk7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlWmVybyhFeGVjU3RhdGUqLCBWTSYpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVX
aXRoTGVuZ3RoKEV4ZWNTdGF0ZSosIFZNJiwgaW50IGxlbmd0aCk7CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBWTSYpOwor
CisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2lnbihib29sIHNpZ24pIHsgbV9zaWduID0gc2ln
bjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbjsgfQorCisgICAgdm9p
ZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQorICAgIGludCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgc3RkOjpvcHRpb25hbDx1
aW50OF90PiB0b1N0cmluZ09uZURpZ2l0KCk7CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNl
SW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCk7CisgICAgCisg
ICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIGludCByYWRpeCk7CisgICAgCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxUb0JpZ0ludChKU0JpZ0ludCogeCwgSlNC
aWdJbnQqIHkpOworCisgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CisgICAgZG91YmxlIHRvTnVtYmVy
KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICB1c2luZyBEaWdpdCA9IHVp
bnRwdHJfdDsKKyAgICBzdGF0aWMgY29uc3QgaW50IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0
aWMgY29uc3QgaW50IERpZ2l0U2l6ZSA9IHNpemVvZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0
IGludCBEaWdpdEJpdHMgPSBEaWdpdFNpemUgKiBCaXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29u
c3QgaW50IEhhbGZEaWdpdEJpdHMgPSBEaWdpdEJpdHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBE
aWdpdCBIYWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgSGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0
YXRpYyBjb25zdCBpbnQgTWF4SW50ID0gMHg3RkZGRkZGRjsKKyAgICAKKyAgICAvLyBUaGUgbWF4
aW11bSBsZW5ndGggdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB3b3Vs
ZCBiZQorICAgIC8vIE1heEludCAvIERpZ2l0Qml0cy4gSG93ZXZlciwgd2UgdXNlIGEgbG93ZXIg
bGltaXQgZm9yIG5vdywgYmVjYXVzZQorICAgIC8vIHJhaXNpbmcgaXQgbGF0ZXIgaXMgZWFzaWVy
IHRoYW4gbG93ZXJpbmcgaXQuCisgICAgLy8gU3VwcG9ydCB1cCB0byAxIG1pbGxpb24gYml0cy4K
KyAgICBzdGF0aWMgY29uc3QgaW50IE1heExlbmd0aCA9IDEwMjQgKiAxMDI0IC8gKHNpemVvZih2
b2lkKikgKiBCaXRzUGVyQnl0ZSk7CisgICAgCisgICAgc3RhdGljIHVpbnQ2NF90IGNhbGN1bGF0
ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBs
YXN0RGlnaXQsIGJvb2wgc2lnbik7CisgICAgCisgICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZT
bWFsbChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBx
dW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJuYWxNdWx0
aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGlu
dCwgSlNCaWdJbnQqIHJlc3VsdCk7CisKKyAgICAvLyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMu
CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJy
eSk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0U3ViKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBi
b3Jyb3cpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdp
dCYgaGlnaCk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxv
dywgRGlnaXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRp
Z2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsKKworICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50KiwgaW50IHJhZGl4KTsKKworICAg
IGJvb2wgaXNaZXJvKCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAg
c3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ2hhclR5
cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxs
b3dFbXB0eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoID49IDAp
OworICAgICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAgICAgICAgaWYgKCFhbGxvd0VtcHR5
U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcworICAgICAgICB3aGlsZSAo
cCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAgICAgICAgICsrcDsKKworICAgICAg
ICBpbnQgZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAgICAvLyBSZW1vdmluZyB0cmFpbGlu
ZyBzcGFjZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNl
KGRhdGFbZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5kSW5kZXg7CisKKyAgICAgICAgbGVu
Z3RoID0gZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKworICAgICAgICBpbnQgbGltaXQwID0g
JzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICAgICAgaW50IGxpbWl0YSA9ICdh
JyArIChyYWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEw
KTsKKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZXhlYywgdm0sIHJh
ZGl4LCBsZW5ndGggLSBwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICByZXN1bHQtPmluaXRpYWxpemUodHJ1ZSk7CisKKyAgICAg
ICAgZm9yIChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgICAgICB1
aW50MzJfdCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ld
IDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAg
ICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNl
IGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAgICAgICAg
IGRpZ2l0ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihkaWdp
dCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMsIHZtKTsKKworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0
ZSosIFZNJiwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50KTsKKworICAgIEpTQmlnSW50KiByaWdo
dFRyaW0oRXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERp
Z2l0IG11bHRpcGxpZXIsIERpZ2l0IHBhcnQpOworICAgIAorICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Y8c2l6ZW9mKERpZ2l0KT4oc2l6ZW9mKEpTQmlnSW50KSk7CisgICAgfQorICAgIAorICAgIERp
Z2l0KiBkYXRhU3RvcmFnZSgpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PERp
Z2l0Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICB9
CisKKyAgICBEaWdpdCBkaWdpdChpbnQgbikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAg
JiYgbiA8IGxlbmd0aCgpKTsKKyAgICAgICAgRGlnaXQqIGRhdGFQdHIgPSBkYXRhU3RvcmFnZSgp
OworICAgICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpZ2l0
KGludCBuLCBEaWdpdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8
IGxlbmd0aCgpKTsKKyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0gZGF0YVN0b3JhZ2UoKTsKKyAg
ICAgICAgZGlnaXRQdHJbbl0gPSB2YWx1ZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBz
aXplRm9yKGludCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoICogRGlnaXRT
aXplOworICAgIH0KKworICAgIGludCBtX2xlbmd0aDsKKyAgICBib29sIG1fc2lnbjsKK307CisK
K2lubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQo
dmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQq
Pih2YWx1ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBkMDMwNDUyMjBkNWU5NTI2
N2VkOWY4ZjdiOWQzMzY1YTgzMTc5ZGQzLi4wYzczZGZhNWE4YTNjZTFiNzIxNWIzNmQ2MjkwZDg2
MTA2OWU5YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
QmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtNzMsNiArNzQsNyBAQCBkb3VibGUg
SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAg
IHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgaWYgKGlzVHJ1ZSgpKQogICAg
ICAgICByZXR1cm4gMS4wOworCiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsg
Ly8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCiB9CiAKQEAgLTEzMCw2ICsxMzIs
OSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJv
dG90eXBlKCk7CisgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnRDb25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWlzQmlnSW50KCkpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAg
IHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN5bWJvbFByb3RvdHlwZSgpOwog
ICAgIH0KQEAgLTM3Niw2ICszODEsMTMgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xv
d0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnIKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNvbnZl
cnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7
CiAgICAgfQorICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gZGlnaXQg
PSBiaWdJbnQtPnRvU3RyaW5nT25lRGlnaXQoKTsKKyAgICAgICAgaWYgKGRpZ2l0KQorICAgICAg
ICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0
ICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0ludC0+
dG9TdHJpbmcoZXhlYywgMTApKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyU3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBjMjRl
YTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5YTNjN2RlMDc3ZDIzZGUw
MmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnlJ
bnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9s
KCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2VlYmEyM2NmY2YyODNmZmQ1
ZmExMDRjNzcuLjU2Mjk1MThhMmZiMmFkNzU2NGUxNTQwZDQ3ODYzYTVhZTM5ZjA5OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBAIGlu
bGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmln
SW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50
KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC0xMDIwLDYgKzEwMjYs
OCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGlu
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0
cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJp
bmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmluZyh2MikpOworICAgIGlmICh2MS5pc0JpZ0ludCgp
ICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxUb0JpZ0lu
dChhc0JpZ0ludCh2MS5hc0NlbGwoKSksIGFzQmlnSW50KHYyLmFzQ2VsbCgpKSk7CiAgICAgcmV0
dXJuIHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cAppbmRleCAxNDM0NmU4YWMwZWU3ZmJjMWJjMzU3OWVlNjNmNWNiMTZhOTYwODM3Li4xZGFhM2Mw
OGEyNThhYTZjODZiZjljNjUxNGM4M2Q1ODMyODU4NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBDb25zdHJ1Y3RUeXBlIEpT
Q2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQogCiBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpCisg
ICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0Jp
Z0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVj
LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CkBAIC0x
MjIsNyArMTIyLDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUKIAogYm9vbCBKU0NlbGw6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZp
ZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgaWYgKGNlbGwtPmlz
U3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygp
IHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgewogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaWRl
bnRpZmllciksIHZhbHVlLCBzbG90KTsKICAgICB9CkBAIC0xNTUsNiArMTU1LDggQEAgSlNWYWx1
ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBwcmVmZXJyZWRUeXAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3Ry
aW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAgIGlmIChp
c1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhp
cyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOworICAgIGlmIChpc0JpZ0ludCgp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Q
cmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwog
fQogCkBAIC0xNjQsNiArMTY2LDggQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihF
eGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51
bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1i
ZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1i
ZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
T2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsK
IH0KIApAQCAtMTczLDYgKzE3Nyw4IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwor
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNC
aWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogfQogCkBAIC0xODEsNiArMTg3
LDkgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY28KICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwog
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAvLyBGSVhN
RTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJbnQsIEJpZ0ludENvbnN0cnVjdG9y
IGFuZCBCaWdJbnRQcm90b3R5cAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzNTkKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNCaWdJbnQoKSk7CiAgICAg
QVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wq
Pih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggOWZjMGM5YjA5NDAxNjQwZmIxNWQ1MjUxYTQxN2Vi
ODQ4NjBkNmNjZC4uNzFmOTlkOTdjZjVjZDI5MWNjZTVjMzU0Y2E5YWM2MmI5NDk3NWIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTExMiw2ICsxMTIsNyBAQCBw
cm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBp
c1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlz
U3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAppbmRleCA1NzBmMDk0YmFkNGIwN2ExMWFlZTIwNjA3ZGUwYTc2ODFmN2Zk
YzNlLi45ODM2YjM0NzA1ZTBhNzU2MDA0Nzk2MzE4OWViZGZhODM3Nzc2NTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yMDEsNiArMjAx
LDExIEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworfQorCiBpbmxpbmUg
Ym9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlID09IFN5
bWJvbFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDg1MzU2
ZDM5NzdhZWQ1YzczYjg5YWZmMDVjOTdjMjQyZjk1YmI0ZWEuLjU3N2QxOGUwMjVjMTFhOTkyY2Ux
NmM4NTBjYjIyMThlMjFjNmMwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCkBAIC0zMyw2ICszMyw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgQ2VsbFR5
cGUsCiAgICAgU3RyaW5nVHlwZSwKICAgICBTeW1ib2xUeXBlLAorICAgIEJpZ0ludFR5cGUsCiAK
ICAgICBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlLAogICAgIEFQSVZhbHVlV3JhcHBlclR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggZThmMzE2Y2Y0
MmI4ZTkyODlmY2EwODliNDgzMTIxNWI3YTMwMjAzMy4uMGZkYzdjMzU2NWNlOGFiMWRkZWM1MWRl
ZmQ0Y2YzODUyYzM5OTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhD
b21tb24uaApAQCAtNjYsNiArNjYsMjUgQEAgaW5saW5lIGludCBjbHozMih1aW50MzJfdCBudW1i
ZXIpCiAjZW5kaWYKIH0KIAoraW5saW5lIGludCBjbHo2NCh1aW50NjRfdCBudW1iZXIpCit7Cisj
aWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIGludCB6ZXJvQ291bnQgPSA2NDsKKyAgICBp
ZiAobnVtYmVyKQorICAgICAgICB6ZXJvQ291bnQgPSBfX2J1aWx0aW5fY2x6bGwobnVtYmVyKTsK
KyAgICByZXR1cm4gemVyb0NvdW50OworI2Vsc2UKKyAgICBpbnQgemVyb0NvdW50ID0gMDsKKyAg
ICBmb3IgKGludCBpID0gNjM7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGlmICghKG51bWJlciA+
PiBpKSkKKyAgICAgICAgICAgIHplcm9Db3VudCsrOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbmRpZgorfQorCiAvLyBU
aGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9m
IHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50
aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCiAvLyBvZiB0aGUg
cmVzdWx0aW5nIGJpdC1wYXR0ZXJuIChhcyBzdWNoIHRoaXMgbWV0aG9kIGlzIGFsc28gY2FsbGVk
IHRvIGltcGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKaW5kZXggNTUwYjhmNzBkN2M3NzJiMThmOWI2NDcyOTA1YTY0YjdmNzkw
ZTBiYi4uYTYzZDAxZTRkOGJkYWY4ZDljOWE0NjEyMDdiNWI0MmEwODc0NTA1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgog
I2luY2x1ZGUgIlVpbnQxNldpdGhGcmFjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTEzOSw5ICsxNDAsNiBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoRXhlY1N0YXRlKiBleGVj
LCBpbnQgbG93LCBpbgogLy8gZm8gYW55IG51bWJlciBvZiBkaWdpdHMgYW4gSUVFRSBudW1iZXIg
bWF5IHJlcXVpcmUgdG8gcmVwcmVzZW50LgogdHlwZWRlZiBjaGFyIFJhZGl4QnVmZmVyWzIxODBd
OwogCi0vLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcg
dGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2Lgotc3RhdGljIGNvbnN0IGNoYXIgcmFkaXhEaWdp
dHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotCiBzdGF0aWMg
aW5saW5lIGNoYXIqIGludDUyVG9TdHJpbmdXaXRoUmFkaXgoY2hhciogc3RhcnRPZlJlc3VsdFN0
cmluZywgaW50NjRfdCBpbnQ1MlZhbHVlLCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICBib29sIG5l
Z2F0aXZlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwCmluZGV4IDZkMTA1NTgyNzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAuLjk3
Y2ZhMDdhOTY5NDAyMjI1NmM5YzM4YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpTVmFs
dWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3Ry
aW5nKCk7CiAgICAgaWYgKHYuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5zeW1ib2xTdHJpbmcoKTsKKyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLmJpZ2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkp
IHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAvLyBS
ZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApAQCAt
MTEyLDcgKzExNCw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5
cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUgPT0gU3ltYm9sVHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5
cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVj
dCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKaW5kZXggNzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJhMzI3
ZjBkNWQyZDYwMDYyYWIzNTRkZmY5ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9yV2Fz
bUNvbnRleHQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBp
biBmYXN0IFRMUy4gSWYgZmFsc2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAog
ICAgIHYoYm9vbCwgdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdh
c20gdG8gSlMgY2FsbHMuIikgXAogICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwgdHJ1
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFkIGZl
YXR1cmUuIikgXAorICAgIHYoYm9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNlQXJy
YXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVz
ZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFs
bG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilcCiAg
ICAgdihib29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0
ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3Ry
dWN0dXJlLiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Bh
cnNlSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCmluZGV4
IGU0Nzk1ZWM0YWY1OTkzODI4NDZmNGNkNzEyMjg1MGYyYzY4MjgwNzQuLmYzMTAxNTg2M2RkZjdk
YTFlY2QwN2Y5MmVhZmI5MDhjZmI3ODU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUGFyc2VJbnQuaApAQCAtMjI2LDQgKzIyNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHR5
cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKFN0cmluZ1ZpZXcp
CiAgICAgcmV0dXJuIGNhbGxiYWNrKHZpZXdXaXRoU3RyaW5nLnZpZXcpOwogfQogCisvLyBNYXBw
aW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwg
Zm9yIHJhZGl4IDIuLjM2LgorY29uc3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAxMjM0NTY3ODlh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA4NWQ0Y2IxNTU4
NTgzZTgwMWI5ZDAxMGIwMTNjMzE2ZjZmOGQwZjM4Li44ODUwYzRhOWEzNDM5NGYxOGY3NWEzNWQ2
N2JhM2E0NWExOWZlNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaApAQCAtNDAsNiArNDAsNyBAQAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAg
IG1hY3JvKHN0cmluZykgXAogICAgIG1hY3JvKHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkg
XAogICAgIG1hY3JvKHRydWUpCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2Fz
ZSBUeXBlb2ZUeXBlOjpGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmlu
ZygpOworICAgICAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVy
biBiaWdpbnRTdHJpbmcoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IDQwNzVmZDc1YjBlYjE4ZmNlOGE2MzJiYTI3Y2I3MzE2MjdkYTY2N2Mu
LjlmNTc4ZThhYmM1NDE2MDAzOTQxODU4YmFhZmIzMWM4OGU3MDc3ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCisjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWU1MjEwNzA5YTdmNTQxNmE5ODJh
N2M3NWMwYzMzNjFjMmQwMWNlOC4uM2JmY2Y1NzFmNGE4N2EzMWViZjkwNWQ2OGQ0YjUyZDZkOGE1
NWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaApAQCAtMjAzLDcgKzIwMyw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5
cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAg
ICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKLQogfQogCiBpbmxpbmUg
SlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZW9mVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZU
eXBlLmNwcAppbmRleCBkYjE2MmI3ZjRmNGNlMjNmYjg4MDU2ZGRmNDFjNDhkZTMwZDU2NGNkLi5h
YTNmZmE3YzM4MmUxMDVkNWRhZTRjMWE0ODM2MGQ0MGVmOGJiYzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcApAQCAtNTQsNiArNTQsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZW9mVHlwZSB0eXBlKQogICAgIGNh
c2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgIG91dC5wcmludCgiZnVuY3Rpb24iKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50OgorICAgICAgICBv
dXQucHJpbnQoImJpZ2ludCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4MTIxOTJhNWE2MmViNjZiYzYxYjI4MDhiNmY1MzVh
NGVkOC4uOTY0ODVkMDJkMjQxYzZkYjc2MmNlODEwNmZmMjg1M2E2YzU5NzBiNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaApAQCAtMzEsNiArMzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBlb2ZUeXBlIHsKICAgICBVbmRlZmluZWQs
CisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAgTnVtYmVyLAogICAgIFN0cmluZywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiMjAwODU3M2ZlMDJhNDVjZmVkMGVh
NzUxYmUyZDVkZTk3ZTg0NTlhLi41OTdkYzUzYTA1MDAxMmRhYzc5MTA5MThmYzkwNDIxOTIzOGVk
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02Myw2ICs2Myw3IEBA
CiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCkBAIC0yODAsNiArMjgxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgIGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBI
YXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU1NldEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgYmlnSW50U3RydWN0dXJlLnNldCgq
dGhpcywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKIAog
ICAgIHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0
ZVNlbnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBCdWNrZXQuc2V0KCp0aGlzLCBKU01h
cDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGI1NTRiMzUwZDQxODUxNWU0OGI2ZjhmY2MwZTg0ZWMwMTcyNGY2MWEu
LmNjNTQwYzM5ZmFjYWI5ZGYzNDEyYTY5NmI4ZGIzNzczMmQ0M2ZlOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMzg4LDYgKzM4OCw3IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHNldEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1hcEl0ZXJh
dG9yU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKIAog
ICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBTdHJv
bmc8SlNDZWxsPiBzZW50aW5lbFNldEJ1Y2tldDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNThjMWJiNjg4MTA1NjZjYmVhOTdiYTcyYWY1N2Zl
MjI3ZTRkZTM0Li5hNjQyYTgzYzgzOTJmN2JiOGNmMDJkZTVmYWQ2MmVjYzc3NDM4ZjZjIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTctMTEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBhbmQgSlNC
aWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNy0xMS0yOCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBhZGQg
YW4gb3B0aW9uIHRvIGR1bXAgdGVzdCByZXN1bHRzIHRvIGEganNvbiBmaWxlCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cwppbmRleCBkZDU3MWUxMzdiYjEyN2Q2MGY0Yjk3ZDRiNmE5MjY3ZTE3
ZjE0YjQ5Li42MDNjNGQwYzlkNGM3YzQyY2NlOTNlNGFkYjIyODI2MWJhZDFkMzc1IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTYxNiw2ICs2MTYsMTAgQEAgZGVmIHJ1bkRlZmF1
bHQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImRlZmF1bHQiLCAqKEZU
TF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVu
QmlnSW50RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmln
LWludC1lbmFibGVkIiwgIi0tdXNlQmlnSW50PXRydWUiICwgKihGVExfT1BUSU9OUyArIG9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRM
X09QVElPTlMgKyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGEyOWRiYWU0OWFkYjRmMTEyMjM3YjZhMmIzZDQxMTZlYTkwZWQ2M2UuLmQxOGRkNDg1
NmNiYzhjZjQ0NDVhZTliMmJkZTkwNTUzMDg2MjNjMTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTEt
MjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRd
W0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBhbmQgSlNCaWdJbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmlnSW50VGVzdHMueWFt
bDogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbC1saW5lLXRlcm1pbmF0
b3IuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWlu
dC1saXRlcmFscy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93U3ludGF4RXJyb3IpOgorCiAyMDE3
LTExLTI3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBKYXZh
U2NyaXB0IHJlc3QgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggbmVnYXRpdmUgaW5kZXggbGVhZHMg
dG8gYmFkIERGRyBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9i
aWdJbnRUZXN0cy55YW1sIGIvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUy
YjE3N2UyNjI2YzI1NDg4YzNhMjhkOTVkMTZlNzU0NjI1NzI1ZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFByb3ZpZGVkIHRvIHNpbXBsaWZ5IHJ1bm5p
bmcgQmlnSW50IHRlc3RzLiBUbyBiZSByZW1vdmVkIG9uY2UgQmlnSW50CisjIGFyZSBubyBsb25n
ZXIgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLgorCistLS0KKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQt
bGl0ZXJhbHMuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0gcGF0aDogc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbC1saW5lLXRlcm1pbmF0b3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGFmYjQ5OTllZTQwZGJiMDcyYmEwY2FlMGYyNzY2NGQyMGJhNGIyOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbC1saW5lLXRlcm1pbmF0b3IuanMKQEAg
LTAsMCArMSwzMyBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OworfQorCit2YXIgZDsKKworYXNzZXJ0KGV2YWwoImQ9NW5cdTAwMEEiKSA9PT0gNW4pOworYXNz
ZXJ0KGQgPT09IDVuKTsKKworYXNzZXJ0KGV2YWwoImQ9MTVuXHUwMDBEIikgPT09IDE1bik7Cith
c3NlcnQoZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2YWwoImQ9MTluXHUyMDI4OyIpID09PSAxOW4p
OworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fzc2VydChldmFsKCJkPTk1blx1MjAyOTsiKSA9PT0g
OTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEE1biIpID09
PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEQxNW4iKSA9
PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTIwMjgxOW47
IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUyMDI5
OTVuOyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxp
dGVyYWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNDgwOTBiZWNjZDk3Y2RiNDdlNDk0ZTJhMmFhYTQ5Y2Rl
M2E0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxz
LmpzCkBAIC0wLDAgKzEsMTEzIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBh
c3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNz
ZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4RXJyb3IoaW5wdXQpIHsK
KyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgU3ludGF4RXJy
b3IpOworICAgIH0KK30KKworLy8gVGVzdCAwIGNvbnZlcnNpb25zCitsZXQgbiA9IDBuOworYXNz
ZXJ0KG4gPT09IDBuKTsKKworbiA9IDAwbjsKK2Fzc2VydChuID09PSAwbik7CisKKy8vIEJpbmFy
eSByZXByZXNlbnRhdGlvbgorCituID0gMGIxMTExbjsKK2Fzc2VydChuID09PSAxNW4pOworCitu
ID0gMGIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCituID0gMGIwMTBuOworYXNzZXJ0KG4gPT09
IDJuKTsKKworbGV0IGJpbmFyeVN0cmluZyA9ICIwYjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAx
Mjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChiaW5hcnlTdHJp
bmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2
ODIxMTQ1Nm4pOworCituID0gMEIxMTExbjsKK2Fzc2VydChuID09PSAxNW4pOworCituID0gMEIx
MG47Cithc3NlcnQobiA9PT0gMm4pOworCitiaW5hcnlTdHJpbmcgPSAiMEIxIjsKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsKKworbiA9IGV2
YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5MjA5Mzg0NjM0
NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworLy8gT2N0YWwgcmVwcmVzZW50YXRpb24KKworbiA9
IDBvN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gMG8xMG47Cithc3NlcnQobiA9PT0gOG4p
OworCituID0gMG8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBvMDAwMjBuOworYXNz
ZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzduOworYXNzZXJ0KG4gPT09IDduKTsKKworbiA9IDBP
MTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4gPT09IDE2bik7
CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCisvLyBIZXhhZGVjaW1hbCByZXBy
ZXNlbnRhdGlvbgorCituID0gMHhhbjsKK2Fzc2VydChuID09PSAxMG4pOworCituID0gMHhmZm47
Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweDAwMGZmbjsKK2Fzc2VydChuID09PSAyNTVu
KTsKKworbiA9IDB4ZmFiY247Cithc3NlcnQobiA9PT0gNjQxODhuKTsKKworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMGIybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIwMm4iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjBiMW5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIw
bzg5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG8wOG4iKTsKK2Fzc2VydFRocm93U3lu
dGF4RXJyb3IoIjBvN25uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGduIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIweDBnbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhm
bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwMG5uIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIxYTBubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTBFMjBuIik7CisKK3Ry
eSB7CisgICAgZXZhbCgiLS0xMG4iKTsKKyAgICBhc3NlcnQoZmFsc2UpOworfSBjYXRjaChlKSB7
CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcik7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanMgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlNDdiN2NmN2Q3
NGY3OTE5YzRiZTUwYWQ0NGI3NTNjNjgzNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcwpAQCAtMCwwICsxLDQ0IEBACisvL0Ag
cnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydFRocm93VHlwZUVycm9yKGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1
dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBh
c3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgfQorfQorCithc3NlcnQoImEiICsg
MTAwbiwgImExMDAiKTsKK2Fzc2VydCgxMjhuICsgImJhYmEiLCAiMTI4YmFiYSIpOworCithc3Nl
cnRUaHJvd1R5cGVFcnJvcigiMTBuICsgMzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIzNiAr
IDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gKyAzMC41Iik7Cithc3NlcnRUaHJv
d1R5cGVFcnJvcigiNDQuNSArIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEw
biAtIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgLSAxNW4iKTsKK2Fzc2VydFRocm93
VHlwZUVycm9yKCIxMjBuIC0gMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0LjUgLSAx
MTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKiAzMCIpOworYXNzZXJ0VGhy
b3dUeXBlRXJyb3IoIjM2ICogMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiAqIDMw
LjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41ICogMTEyMDM0biIpOworCithc3NlcnRU
aHJvd1R5cGVFcnJvcigiMTBuIC8gMzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIzNiAvIDE1
biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gLyAzMC41Iik7Cithc3NlcnRUaHJvd1R5
cGVFcnJvcigiNDQuNSAvIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEwbiAq
KiAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICoqIDE1biIpOworYXNzZXJ0VGhyb3dU
eXBlRXJyb3IoIjEyMG4gKiogMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0LjUgKiog
MTEyMDM0biIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2Yu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUzY2Qz
MDEyNDZiOTU4ZjRjNmQ0ZGExMWFmN2NkMGE2YjQwOTJhYwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpAQCAtMCwwICsxLDEwIEBACisvL0AgcnVu
QmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Fzc2VydCh0eXBlb2Yg
MG4gPT09ICJiaWdpbnQiKTsKK2Fzc2VydCh0eXBlb2YgMW4gIT09ICJvYmplY3QiKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFk
aW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFk
aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUyMWE3NzYxNWI5YjQ1N2MxNTRiNWY1ZThiNzMxNWFlMjU0MWRh
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNl
LXRyYWlsaW5nLWxlYWRpbmcuanMKQEAgLTAsMCArMSwxMTEgQEAKKy8vQCBydW5CaWdJbnRFbmFi
bGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAgICAg
ICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBTeW50YXhFcnJvcik7CisgICAgfQorfQorCit2YXIgZDsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDBDNW4iKSA9PT0gNW4pOworYXNzZXJ0KGQgPT09IDVuKTsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDA5MTVuIikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2
YWwoImQ9XHUwMDBCMTluXHUwMDBCOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisK
K2Fzc2VydChldmFsKCJkPVx1MDAwQzExOW47IikgPT09IDExOW4pOworYXNzZXJ0KGQgPT09IDEx
OW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMjA5NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9
PT0gOTVuKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMEEwNTNuOyIpID09PSA1M24pOworYXNzZXJ0
KGQgPT09IDUzbik7CisKK2Fzc2VydChldmFsKCJkPVx1RkVGRjM5bjsiKSA9PT0gMzluKTsKK2Fz
c2VydChkID09PSAzOW4pOworCithc3NlcnQoZXZhbCgiZD01blx1MDAwQyIpID09PSA1bik7Cith
c3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD0xNW5cdTAwMDkiKSA9PT0gMTVuKTsK
K2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD0xOW5cdTAwMEI7IikgPT09IDE5
bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9MTE5blx1MDAwQzsiKSA9
PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJkPTk1blx1MDAy
MDsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiZD01M25c
dTAwQTA7IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2YWwoImQ9
MzluXHVGRUZGOyIpID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKK2Fzc2VydChldmFs
KCJcdTAwMENcdTAwMENkXHUwMDBDXHUwMDBDPVx1MDAwQ1x1MDAwQzVuXHUwMDBDO1x1MDAwQyIp
ID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiXHUwMDA5XHUwMDA5
ZFx1MDAwOVx1MDAwOT1cdTAwMDlcdTAwMDkxNW5cdTAwMDk7IikgPT09IDE1bik7Cithc3NlcnQo
ZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQlx1MDAwQmRcdTAwMEJcdTAwMEI9XHUw
MDBCXHUwMDBCMTluXHUwMDBCOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fz
c2VydChldmFsKCJcdTAwMENcdTAwMENkXHUwMDBDPVx1MDAwQ1x1MDAwQzExOW47IikgPT09IDEx
OW4pOworYXNzZXJ0KGQgPT09IDExOW4pOworCithc3NlcnQoZXZhbCgiXHUwMDIwZFx1MDAyMD1c
dTAwMjBcdTAwMjA5NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKworYXNzZXJ0
KGV2YWwoIlx1MDBBMGRcdTAwQTA9XHUwMEEwXHUwMEEwNTNuOyIpID09PSA1M24pOworYXNzZXJ0
KGQgPT09IDUzbik7CisKK2Fzc2VydChldmFsKCJcdUZFRkZkXHVGRUZGPVx1RkVGRlx1RkVGRjM5
bjsiKSA9PT0gMzluKTsKK2Fzc2VydChkID09PSAzOW4pOworCisvLyBBc3NlcnQgZXJyb3JzCisK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiXHUwMDBDMm4iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjBiXHUwMDBCMTEwMW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiXHUwMDA5
MTExMTExbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMjAxMDEwMW4iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjBiXHUwMEEwMTAxMW4iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjBiXHVGRUZGMTExMDAwbiIpOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1
MDAwQzJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAwQjQ1biIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwMDk3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjBvXHUwMDIwNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwQTAxNzc3biIp
OworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdUZFRkYxNzM2MW4iKTsKKworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMHhcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhc
dTAwMEI0NW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUwMDA5NzduIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAyMDc3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJy
b3IoIjB4XHUwMEEwMTc3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHVGRUZGMTcz
NjFuIik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjJcdTAwMENuIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCI0NVx1MDAwQm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjc3XHUw
MDA5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNzc3XHUwMDIwbiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMTc3N1x1MDBBMG4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjE3
MzYxXHVGRUZGbiIpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328091</attachid>
            <date>2017-12-01 07:53:02 -0800</date>
            <delta_ts>2017-12-02 05:32:36 -0800</delta_ts>
            <desc>Patch for test</desc>
            <filename>big-int-front-end.diff</filename>
            <type>text/plain</type>
            <size>103908</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTI5ZGJhZS4uZDE4ZGQ0OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0xMS0yOSAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1l
bnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qczogQWRkZWQuCisg
ICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1N5bnRheEVycm9y
KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC10eXBlLW9mLmpz
OiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtd2hp
dGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAoYXNzZXJ0VGhyb3dTeW50YXhFcnJvcik6CisKIDIwMTctMTEtMjcgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEphdmFTY3JpcHQgcmVzdCBmdW5j
dGlvbiBwYXJhbWV0ZXIgd2l0aCBuZWdhdGl2ZSBpbmRleCBsZWFkcyB0byBiYWQgREZHIGFic3Ry
YWN0IGludGVycHJldGF0aW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwg
Yi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTJiMTc3ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFt
bApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJbnQgdGVzdHMuIFRvIGJlIHJl
bW92ZWQgb25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhpbmQgYSBmZWF0dXJlIGZsYWcu
CisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFscy5qcworICBjbWQ6IHJ1bkJp
Z0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCisgIGNtZDog
cnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxp
dGVyYWwtbGluZS10ZXJtaW5hdG9yLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFs
LWxpbmUtdGVybWluYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
YWZiNDk5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFs
LWxpbmUtdGVybWluYXRvci5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcnVuQmlnSW50RW5hYmxl
ZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD01
blx1MDAwQSIpID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD0x
NW5cdTAwMEQiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgi
ZD0xOW5cdTIwMjg7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2
YWwoImQ9OTVuXHUyMDI5OyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2Vy
dChldmFsKCJkPVx1MDAwQTVuIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2Vy
dChldmFsKCJkPVx1MDAwRDE1biIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fz
c2VydChldmFsKCJkPVx1MjAyODE5bjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOwor
Cithc3NlcnQoZXZhbCgiZD1cdTIwMjk5NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVu
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFscy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmM0ODA5MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtbGl0ZXJhbHMuanMKQEAgLTAsMCArMSwxMTMgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVk
CisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAgICAgICBh
c3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFu
Y2VvZiBTeW50YXhFcnJvcik7CisgICAgfQorfQorCisvLyBUZXN0IDAgY29udmVyc2lvbnMKK2xl
dCBuID0gMG47Cithc3NlcnQobiA9PT0gMG4pOworCituID0gMDBuOworYXNzZXJ0KG4gPT09IDBu
KTsKKworLy8gQmluYXJ5IHJlcHJlc2VudGF0aW9uCisKK24gPSAwYjExMTFuOworYXNzZXJ0KG4g
PT09IDE1bik7CisKK24gPSAwYjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK24gPSAwYjAxMG47
Cithc3NlcnQobiA9PT0gMm4pOworCitsZXQgYmluYXJ5U3RyaW5nID0gIjBiMSI7Citmb3IgKGxl
dCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBl
dmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYz
NDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKK24gPSAwQjExMTFuOworYXNzZXJ0KG4gPT09IDE1
bik7CisKK24gPSAwQjEwbjsKK2Fzc2VydChuID09PSAybik7CisKK2JpbmFyeVN0cmluZyA9ICIw
QjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0g
IjAiOworCituID0gZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4
MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCisvLyBPY3RhbCByZXByZXNl
bnRhdGlvbgorCituID0gMG83bjsKK2Fzc2VydChuID09PSA3bik7CisKK24gPSAwbzEwbjsKK2Fz
c2VydChuID09PSA4bik7CisKK24gPSAwbzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0g
MG8wMDAyMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPN247Cithc3NlcnQobiA9PT0g
N24pOworCituID0gME8xMG47Cithc3NlcnQobiA9PT0gOG4pOworCituID0gME8yMG47Cithc3Nl
cnQobiA9PT0gMTZuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKKy8vIEhl
eGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAweGFuOworYXNzZXJ0KG4gPT09IDEwbik7
CisKK24gPSAweGZmbjsKK2Fzc2VydChuID09PSAyNTVuKTsKKworbiA9IDB4MDAwZmZuOworYXNz
ZXJ0KG4gPT09IDI1NW4pOworCituID0gMHhmYWJjbjsKK2Fzc2VydChuID09PSA2NDE4OG4pOwor
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIwYjAybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIxbm4iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjBvODluIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzA4biIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG83bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjB4Z24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4MGduIik7Cithc3NlcnRUaHJvd1N5
bnRheEVycm9yKCIweGZubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTAwbm4iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjFhMG5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIx
MEUyMG4iKTsKKwordHJ5IHsKKyAgICBldmFsKCItLTEwbiIpOworICAgIGFzc2VydChmYWxzZSk7
Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1lcnJvci5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGU0N2I3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzCkBAIC0wLDAgKzEsNDQgQEAK
Ky8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFh
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0VGhyb3dUeXBlRXJyb3IoaW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFs
KGlucHV0KTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICB9Cit9CisKK2Fzc2VydCgi
YSIgKyAxMDBuLCAiYTEwMCIpOworYXNzZXJ0KDEyOG4gKyAiYmFiYSIsICIxMjhiYWJhIik7CisK
K2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKyAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3Io
IjM2ICsgMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiArIDMwLjUiKTsKK2Fzc2Vy
dFRocm93VHlwZUVycm9yKCI0NC41ICsgMTEyMDM0biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJv
cigiMTBuIC0gMzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIzNiAtIDE1biIpOworYXNzZXJ0
VGhyb3dUeXBlRXJyb3IoIjEyMG4gLSAzMC41Iik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQu
NSAtIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEwbiAqIDMwIik7Cithc3Nl
cnRUaHJvd1R5cGVFcnJvcigiMzYgKiAxNW4iKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMjBu
ICogMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0LjUgKiAxMTIwMzRuIik7CisKK2Fz
c2VydFRocm93VHlwZUVycm9yKCIxMG4gLyAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2
IC8gMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiAvIDMwLjUiKTsKK2Fzc2VydFRo
cm93VHlwZUVycm9yKCI0NC41IC8gMTEyMDM0biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJvcigi
MTBuICoqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgKiogMTVuIik7Cithc3NlcnRU
aHJvd1R5cGVFcnJvcigiMTIwbiAqKiAzMC41Iik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQu
NSAqKiAxMTIwMzRuIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTNjZDMwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJ
bnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworYXNzZXJ0KHR5cGVvZiAwbiA9
PT0gImJpZ2ludCIpOworYXNzZXJ0KHR5cGVvZiAxbiAhPT0gIm9iamVjdCIpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxYTc3NgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxpbmctbGVh
ZGluZy5qcwpAQCAtMCwwICsxLDExMSBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlucHV0
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChmYWxz
ZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRh
eEVycm9yKTsKKyAgICB9Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEM1biIp
ID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMDkxNW4i
KSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEIx
OW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2Vy
dChldmFsKCJkPVx1MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCith
c3NlcnQoZXZhbCgiZD1cdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsK
KworYXNzZXJ0KGV2YWwoImQ9XHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5
bik7CisKK2Fzc2VydChldmFsKCJkPTVuXHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1
bik7CisKK2Fzc2VydChldmFsKCJkPTE1blx1MDAwOSIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09
IDE1bik7CisKK2Fzc2VydChldmFsKCJkPTE5blx1MDAwQjsiKSA9PT0gMTluKTsKK2Fzc2VydChk
ID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD0xMTluXHUwMDBDOyIpID09PSAxMTluKTsKK2Fz
c2VydChkID09PSAxMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUwMDIwOyIpID09PSA5NW4p
OworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPTUzblx1MDBBMDsiKSA9PT0g
NTNuKTsKK2Fzc2VydChkID09PSA1M24pOworCithc3NlcnQoZXZhbCgiZD0zOW5cdUZFRkY7Iikg
PT09IDM5bik7Cithc3NlcnQoZCA9PT0gMzluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAw
Q2RcdTAwMENcdTAwMEM9XHUwMDBDXHUwMDBDNW5cdTAwMEM7XHUwMDBDIikgPT09IDVuKTsKK2Fz
c2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJcdTAwMDlcdTAwMDlkXHUwMDA5XHUwMDA5
PVx1MDAwOVx1MDAwOTE1blx1MDAwOTsiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOwor
Cithc3NlcnQoZXZhbCgiXHUwMDBCXHUwMDBCZFx1MDAwQlx1MDAwQj1cdTAwMEJcdTAwMEIxOW5c
dTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoIlx1
MDAwQ1x1MDAwQ2RcdTAwMEM9XHUwMDBDXHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQo
ZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJcdTAwMjBkXHUwMDIwPVx1MDAyMFx1MDAyMDk1
bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiXHUwMEEw
ZFx1MDBBMD1cdTAwQTBcdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsK
KworYXNzZXJ0KGV2YWwoIlx1RkVGRmRcdUZFRkY9XHVGRUZGXHVGRUZGMzluOyIpID09PSAzOW4p
OworYXNzZXJ0KGQgPT09IDM5bik7CisKKy8vIEFzc2VydCBlcnJvcnMKKworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMGJcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAw
MEIxMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMDkxMTExMTFuIik7Cith
c3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1MDAyMDEwMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcigiMGJcdTAwQTAxMDExbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdUZF
RkYxMTEwMDBuIik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBDMm4iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBCNDVuIik7Cithc3NlcnRUaHJvd1N5bnRheEVy
cm9yKCIwb1x1MDAwOTc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwMjA3Nzdu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDBBMDE3NzduIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwb1x1RkVGRjE3MzYxbiIpOworCithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIweFx1MDAwQzJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQjQ1biIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwMDk3N24iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjB4XHUwMDIwNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwQTAx
Nzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdUZFRkYxNzM2MW4iKTsKKworYXNz
ZXJ0VGhyb3dTeW50YXhFcnJvcigiMlx1MDAwQ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjQ1XHUwMDBCbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNzdcdTAwMDluIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCI3NzdcdTAwMjBuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIxNzc3XHUwMEEwbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTczNjFcdUZFRkZuIik7
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDljMmY5MTAuLjkzYmMyNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxNy0xMS0yOSAgQ2FpbyBMaW1h
ICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBs
ZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIEJpZ0ludCBwcmltaXRpdmUgb24KKyAgICAgICAgSmF2YVNjcmlwdENvcmUuIFdl
IGFyZSBpbnRyb2R1Y2luZyBCaWdJbnQgcHJpbWl0aXZlIGFuZAorICAgICAgICBpbXBsZW1lbnRp
bmcgaXQgb24gSlNCaWdJbnQgYXMgYSBzdWJjbGFzcyBvZiBKU0NlbGwgd2l0aCBbW0JpZ0ludERh
dGFdXQorICAgICAgICBmaWVsZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgYXMg
aW5saW5lIHN0b3JhZ2Ugb2YgSlNCaWdJbnQgdG8KKyAgICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9u
IHBlcmZvcm1hbmNlIGR1ZSB0byBjYWNoZSBsb2NhbGl0eS4gVGhlCisgICAgICAgIGltcGxlbWVu
dGF0aW9uIGFsbG93cyA2NCBvciAzMiBiaXR3aXNlIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4KKyAg
ICAgICAgSlNCaWdJbnQgYWxzbyBoYXMgbV9zaWduIHRvIHN0b3JlIHRoZSBzaWduIG9mIFtbQmln
SW50RGF0YV1dIGFuZAorICAgICAgICBtX2xlbmd0aCB0aGF0IGtlZXBzIHRyYWNrIG9mIEJpZ0lu
dCBsZW5ndGguCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBmb2xsb3dpbmcgdGhlIFY4
IG9uZS4gSlNCaWdJbnQ6Om1fZGF0YSBhcmUgbWFuaXB1bGF0ZWQKKyAgICAgICAgYnkgSlNCaWdJ
bnQ6OnNldERpZ2l0KGluZGV4LCB2YWx1ZSkgYW5kIEpTQmlnSW50OjpkaWdpdChpbmRleCkgb3Bl
cmF0aW9ucy4KKyAgICAgICAgV2UgYWxzbyBoYXZlIHNvbWUgb3BlcmF0aW9ucyB0byBzdXBwb3J0
IGFyaXRobWV0aWNzIG92ZXIgZGlnaXRzLgorCisgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBu
b3RpY2UgdGhhdCBvbiB0aGlzIHJlcHJlc2VudGF0aW9uLAorICAgICAgICBKU0JpZ0ludDo6ZGF0
YVN0b3JhZ2UoKVswXSByZXByZXNlbnRzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdCBhbmQK
KyAgICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKClbbV9sZW5ndGggLSAxXSByZXByZXNlbnRz
IHRoZSBtb3N0IHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRy
b2R1Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAg
ICAgICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxz
IG9uIEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUg
dGVzdHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhp
bmQgYSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxl
ZCBieSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6Ompz
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdz
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFy
c2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAg
IChKU0M6OkxleGVyPFQ+OjpwYXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xl
eGVyLmg6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6QmlnSW50Tm9kZTo6QmlnSW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChK
U0M6OkJpZ0ludE5vZGU6OnZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0
VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjphZGRSZXN1bHRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6
YmlnSW50VHlwZSk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmZvckFkZCk6CisgICAgICAg
IChKU0M6OlJlc3VsdFR5cGU6OmZvckxvZ2ljYWxPcCk6CisgICAgICAgICogcGFyc2VyL1N5bnRh
eENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQmlnSW50KToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpKU0JpZ0ludCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmdPbmVEaWdpdCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpwYXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZyk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50Ojppc1plcm8pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5w
bGFjZU11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0QWRkKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0U3ViKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OmRpZ2l0TXVsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0UG93KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmRpZ2l0RGl2KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmludGVy
bmFsTXVsdGlwbHlBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludCk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnJpZ2h0VHJpbSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKiBydW50aW1l
L0pTQmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0U2lnbik6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpzaWduIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6b2Zmc2V0T2ZEYXRhKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRhdGFTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OnNldERpZ2l0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNpemVGb3IpOgorICAgICAgICAo
SlNDOjphc0JpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5j
cHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAgKEpTQzo6Y2x6NjQpOgorICAg
ICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1BhcnNlSW50Lmg6CisgICAgICAgICogcnVudGltZS9T
bWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjp0eXBlU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFBy
aW1pdGl2ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0xMS0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENsZWFudXAgSW5zcGVjdG9y
IGNsYXNzZXMgYmUgbW9yZSBjb25zaXN0ZW50IGFib3V0IHVzaW5nIGZhc3QgbWFsbG9jIC8gbm9u
Y29weWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjkyNjU5NS4uMzUzZjA0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5Miw3ICs3OTIsNyBAQAogCQky
QUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3Jp
Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVC
QTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsgfTsKLQkJ
MzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyog
UGFyc2VJbnQuaCAqLzsgfTsKKwkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhE
MTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVp
bHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3ODFEMkNG
NkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxz
X3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTI5LDYgKzExMjksNyBAQAogCQk4NjcwNEI4ODEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0Iy
QjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5RUJD
QjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyog
QVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZE
REVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyog
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zNjQzLDYgKzM2NDQsOCBAQAogCQk4Njg4MEYxQjE0MzI4QkI5MDBC
MDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7
IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCaWdJbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlnSW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJl
c3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdWx0VHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1NTY0NTFCMDA0NDUxNTcg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBMb3dMZXZlbElu
dGVycHJldGVyLmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcgLyogTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbGluZUVuZGluZyA9IDA7IG5h
bWUgPSBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0ODUs
NiArNjQ4OCw4IEBACiAJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5oICovLAogCQkJCThCQzA2NDg3MUUxQTU4M0YwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb24uY3BwICovLAogCQkJCThCQzA2NDg4MUUxQTU4NDAwMEIyQjhDQSAvKiBKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCAqLywKKwkJCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYg
LyogSlNCaWdJbnQuY3BwICovLAorCQkJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0Jp
Z0ludC5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rp
b24uaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICov
LApAQCAtODc1MCw2ICs4NzU1LDcgQEAKIAkJCQk4QkMwNjQ4OTFFMUFCQTY0MDBCMkI4Q0EgLyog
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxODBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBEMTdENzBF
OEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY4
OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxs
YmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBmMDM2NTZlLi44MTMwZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03
NjMsNiArNzYzLDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogcnVu
dGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmlnSW50LmNwcAog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50
aW1lL0pTQ2FsbGVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCAwYWZmNGIwLi42ZmM0ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJ
Qy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDYzZTM5OGQuLjk3ODRmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTc4Myw2
ICsxNzg0LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlP
cChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBk
c3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkg
JiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKKyAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7
CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyY0luZGV4KTsKKyAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGRzdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0
IikgewogICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKICAgICAgICAgICAgICAgICBl
bWl0T3Bjb2RlKG9wX2lzX29iamVjdF9vcl9udWxsKTsKQEAgLTMxMjUsNiArMzEzNCwyNSBAQCB1
bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRCdWZmZXIodW5zaWduZWQgbGVu
Z3RoKQogICAgIHJldHVybiBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnRCdWZmZXIobGVuZ3RoKTsK
IH0KIAorSlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDhfdCByYWRpeCkKK3sKKyAgICBCaWdJbnRNYXBF
bnRyeSBlbnRyeUtleSA9IEJpZ0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1wbCgpLCByYWRpeCk7
CisgICAgYXV0byBpdCA9IG1fYmlnSW50TWFwLmZpbmQoZW50cnlLZXkpOworICAgIGlmIChpdCAh
PSBtX2JpZ0ludE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAKKyAg
ICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgKnZt
KCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4KTsKKyAgICAvLyBGSVhNRTogW0VTTmV4dF0g
RW5hYmxlcyBhIHdheSB0byB0aHJvdyBhbiBlcnJvciBvbiBCeXRlQ29kZUdlbmVyYXRvciBzdGVw
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDEzOQor
ICAgIFJFTEVBU0VfQVNTRVJUKGJpZ0ludEluTWFwKTsKKyAgICBhZGRDb25zdGFudFZhbHVlKGJp
Z0ludEluTWFwKTsKKworICAgIGF1dG8gYWRkZWRFbnRyeSA9IG1fYmlnSW50TWFwLmFkZChlbnRy
eUtleSwgYmlnSW50SW5NYXApOworICAgIEFTU0VSVChhZGRlZEVudHJ5LmlzTmV3RW50cnkpOwor
CisgICAgcmV0dXJuIGFkZGVkRW50cnkuaXRlcmF0b3ItPnZhbHVlOworfQorCiBKU1N0cmluZyog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCiB7CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFk
ZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDJiMjQyNjQuLmI4NWY2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNp
bmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMDAsMTAgKzEwMDIsMjYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVDYWxsZWVTYXZlU3BhY2UoKTsKICAgICAgICAg
dm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxk
b3VibGUsIEpTVmFsdWU+IE51bWJlck1hcDsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1
ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclN0
cmluZ01hcDsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5
PiwgUmVnaXN0ZXJJRCo+IFRlbXBsYXRlUmVnaXN0cnlLZXlNYXA7Ci0gICAgICAgIAorICAgICAg
ICB1c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIHVp
bnQ4X3Q+OworICAgICAgICBzdHJ1Y3QgQmlnSW50RW50cnlIYXNoIHsKKyAgICAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKEJpZ0ludE1hcEVudHJ5IGtleSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4ga2V5LmZpcnN0LT5leGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgp
ICsgV1RGOjppbnRIYXNoKGtleS5zZWNvbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChCaWdJbnRNYXBFbnRyeSBhLCBCaWdJbnRN
YXBFbnRyeSBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhLmZpcnN0
ID09IGIuZmlyc3QgJiYgYS5zZWNvbmQgPT0gYi5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBOdW1iZXJN
YXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJT
dHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlm
aWVyUmVwSGFzaD47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFw
PEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCosIEJpZ0ludEVudHJ5SGFzaD47CisgICAgICAgIHVz
aW5nIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgPSBIYXNoTWFwPFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5
S2V5PiwgUmVnaXN0ZXJJRCo+OworCiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwoKSBh
bmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgogICAgICAg
ICAvLyBleHBlY3RlZCBmdW5jdGlvbnMgaGF2ZSBpZGVudGljYWwgYmVoYXZpb3IgZm9yIGJvdGgg
Y2FsbCBhbmQgY29uc3RydWN0CiAgICAgICAgIC8vIChpLmUuICJPYmplY3QoKSIgaXMgaWRlbnRp
Y2FsIHRvICJuZXcgT2JqZWN0KCkiKS4KQEAgLTEwODgsNiArMTEwNiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyogYWRkU3RyaW5nQ29uc3RhbnQo
Y29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU1ZhbHVlIGFkZEJpZ0ludENvbnN0YW50KGNv
bnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogYWRk
VGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmKTsK
IAogICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtMTE4
Nyw2ICsxMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxF
bmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiwgdW5zaWduZWQsIEVuY29kZWRKU1ZhbHVl
V2l0aFJlcHJlc2VudGF0aW9uSGFzaCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25I
YXNoVHJhaXRzPiBKU1ZhbHVlTWFwOwogICAgICAgICBKU1ZhbHVlTWFwIG1fanNWYWx1ZU1hcDsK
ICAgICAgICAgSWRlbnRpZmllclN0cmluZ01hcCBtX3N0cmluZ01hcDsKKyAgICAgICAgSWRlbnRp
ZmllckJpZ0ludE1hcCBtX2JpZ0ludE1hcDsKICAgICAgICAgVGVtcGxhdGVSZWdpc3RyeUtleU1h
cCBtX3RlbXBsYXRlUmVnaXN0cnlLZXlNYXA7CiAKICAgICAgICAgU3RhdGljUHJvcGVydHlBbmFs
eXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgeyAmbV9pbnN0cnVjdGlvbnMgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApp
bmRleCAyMzVhYTZiLi43ZjNkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjIsNiArMTIyLDExIEBAIEpTVmFs
dWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25z
dAogICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5nQ29uc3RhbnQobV92YWx1ZSk7CiB9CiAK
K0pTVmFsdWUgQmlnSW50Tm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
KSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmF0b3IuYWRkQmlnSW50Q29uc3RhbnQobV92YWx1
ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1i
ZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCog
TnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA4Yjc4ZTAwLi43ZDBkM2Y1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGlubGluZSBUb1RoaXNSZXN1
bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0
VmFsdWUmCiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZh
bHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkg
PT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKKyAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwog
ICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5
cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM1ZTg0YTUuLmRj
Mjk0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6
CisgICAgY2FzZSBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFt
ZSwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFkODY5ZjIuLjRjZjhjNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKFN0
cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gMHgxMjAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDQ4MDAw
MDsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJp
dGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKQEAgLTE3Nyw3
ICsxNzcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAg
QVNTRVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyMjAw
MDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDg4MDAwMDsKICAgICAgICAgVU5VU0VEX1BB
UkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBh
cml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6
OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MjQwMDAwOworICAgICAgICB1aW50MzJf
dCBiaXRzID0gMHg5MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
Vk0mIHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50
MzJfdCBiaXRzID0gMHgxNDAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDUwMDAwMDsK
ICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxMy4uM2FkMzg4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIzMiw2ICsyMzIs
MTIgQEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMoKTsKICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KKyAgICAK
KyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCwgdWludDhfdCByYWRpeCkKKyAgICB7
CisgICAgICAgIGluY0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBCaWdJbnROb2RlKGxvY2F0aW9uLCAqYmlnSW50LCByYWRpeCk7CisgICAgfQogCiAgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAppbmRleCA2ZWU2YzVkLi43NDAzY2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTE1MDAsNyArMTUwMSw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQ
YXJzZVJlc3VsdCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+Ojpw
YXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+IExleGVyPFQ+OjpwYXJzZUhleCgpCiB7CiAgICAgLy8gT3B0
aW1pemF0aW9uOiBtb3N0IGhleGFkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAg
IHVpbnQzMl90IGhleFZhbHVlID0gMDsKQEAgLTE1MTIsMTAgKzE1MTMsOCBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAg
IC0tbWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxlIChpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50
KSAmJiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0gICAgaWYgKG1heGltdW1EaWdpdHMgPj0gMCkg
ewotICAgICAgICByZXR1cm5WYWx1ZSA9IGhleFZhbHVlOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0cyA+PSAwICYmIG1fY3VycmVudCAhPSAnbicp
KQorICAgICAgICByZXR1cm4gaGV4VmFsdWU7CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGluIHRo
ZSBoZXhWYWx1ZSBidWZmZXIuCiAgICAgLy8gVGhlIHZhbHVlcyBhcmUgc2hpZnRlZCBvdXQgYW5k
IHBsYWNlZCBpbnRvIHRoZSBtX2J1ZmZlcjggdmVjdG9yLgpAQCAtMTUzMywxMSArMTUzMiwxNCBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFs
dWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUlu
dE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2KTsKKyAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisg
ICAgICAgIHJldHVybiBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjgu
c2l6ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0
YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
QUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZh
bHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpCiB7CiAgICAgLy8gT3B0aW1pemF0
aW9uOiBtb3N0IGJpbmFyeSB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBi
aW5hcnlWYWx1ZSA9IDA7CkBAIC0xNTU0LDEwICsxNTU2LDggQEAgQUxXQVlTX0lOTElORSBib29s
IExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRp
Z2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0
ID49IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAw
KSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBk
aWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihiaW5hcnlWYWx1ZSk7CiAK
ICAgICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAg
ICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNTY3LDE3ICsxNTY3LDE3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAg
ICAgICAgc2hpZnQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkp
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0g
J24nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0
IElkZW50aWZpZXIqPj4obWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4
LnNpemUoKSkpOwogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVy
OC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwotICAgIHJldHVybiB0cnVlOworICAgIGlm
IChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlm
aWVyKj4+KHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgMikpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+
OjpwYXJzZU9jdGFsKCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3Qgb2N0YWwgdmFsdWVz
IGZpdCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3Qgb2N0YWxWYWx1ZSA9IDA7CkBAIC0xNTk0
LDEwICsxNTk0LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRv
dWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJ
SU9jdGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJ
SURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9
IG9jdGFsVmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoTElLRUxZ
KCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAn
bicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3Qg
SWRlbnRpZmllcio+PihvY3RhbFZhbHVlKTsKKwogCiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1E
aWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsK
QEAgLTE2MDcsMTcgKzE2MDYsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJz
ZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0g
ICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
MDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlm
aWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVyblZh
bHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgp
LCA4KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihwYXJzZUludE92ZXJmbG93KG1f
YnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3Vi
bGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91
YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKQogewogICAg
IC8vIE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgog
ICAgIHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7CkBAIC0xNjM4LDEwICsxNjM3LDggQEAgQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1
ZSkKICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlzQVNDSUlEaWdpdCht
X2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1f
Y3VycmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYm
ICFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSAmJiBtX2N1cnJlbnQg
IT0gJ24nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUs
IGNvbnN0IElkZW50aWZpZXIqPj4oZGVjaW1hbFZhbHVlKTsKIAogICAgICAgICBmb3IgKGludCBp
ID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgICAgcmVjb3Jk
OChkaWdpdHNbaV0pOwpAQCAtMTY1MSw4ICsxNjQ4LDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHJlY29y
ZDgobV9jdXJyZW50KTsKICAgICAgICAgc2hpZnQoKTsKICAgICB9CisgICAgCisgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
PihtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0yMTAwLDEwICsyMTAwLDMwIEBAIHN0YXJ0OgogICAgICAgICAg
ICAgdG9rZW4gPSBET1Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBn
b3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7CisgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgdG9rZW4gPSBET1VCTEU7CisgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSkgeworICAgICAgICAgICAgaWYg
KCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVy
IGV4cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/
IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNf
TElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAg
ICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICBpZiAodG9rZW4gPT0g
SU5URUdFUikKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tl
bih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVu
dFN0YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFT
Q0lJTGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmlj
IGxpdGVyYWwiKTsKKyAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9O
VU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRP
SzsKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbV9i
dWZmZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJaZXJv
OgogICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICd4
JykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICd4
JykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7CiAgICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGhleGFkZWNp
bWFsIGRpZ2l0cyBhZnRlciAnMHgnIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1J
TkFURURfSEVYX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMTMsMTcgKzIxMzMsMjcgQEAgc3RhcnQ6
CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBwcmVmaXguCiAgICAgICAgICAgICBz
aGlmdCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsK
KyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUhleCgpOworICAgICAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihwYXJzZU51bWJlclJlc3Vs
dCkpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRv
dWJsZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZp
ZXIqPihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRp
eCA9IDE2OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1f
Y3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVjaW1hbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVy
Iik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfSEVYX05VTUJFUl9FUlJP
UlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQp
KQorICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoKG1fY3VycmVudCB8
IDB4MjApID09ICdiJykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCht
X2N1cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUJpbmFyeURpZ2l0KHBl
ZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIk5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyIpOwogICAgICAgICAgICAgICAgIHRva2Vu
ID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTMzLDE4ICsyMTYz
LDI4IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnYicgcHJlZml4Lgog
ICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VCaW5hcnkodG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFy
c2VCaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpCisgICAgICAgICAg
ICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlTnVtYmVyUmVzdWx0ID8gV1RGOjpn
ZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpIDogMDsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25z
dCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRl
bnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50
aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVN
QkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNo
cmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCht
X2N1cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlPY3Rh
bERpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRlciAnMG8nIik7CiAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjE1NCwx
MyArMjE5NCwyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHBy
ZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0
ID0gcGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VOdW1iZXJSZXN1bHQgPyBX
VEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkgOiAwOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hp
ZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0
PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAg
IHRva2VuRGF0YS0+cmFkaXggPSA4OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAo
aXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBp
ZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxf
TlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9r
ZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2Vu
ICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2Vy
TGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4
LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcyLDM0ICsy
MjIyLDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAg
fQogICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAg
ICAgaWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAg
IGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7CisgICAgICAgICAgICBpZiAo
cGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJz
ZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
ID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICBjYXNlIENoYXJhY3Rlck51bWJlcjoKICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBJTlRF
R0VSICYmIHRva2VuICE9IERPVUJMRSkpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VEZWNpbWFs
KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRF
R0VSOwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAg
ICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VEZWNpbWFsKCk7CisgICAgICAgICAgICBp
ZiAocGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpw
YXJzZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAg
ICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNl
TnVtYmVyUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChXVEY6OmdldDxjb25z
dCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAg
IHRva2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRl
Y2ltYWxQb2ludCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAn
ZScpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJ
bmRpY2F0b3IoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9y
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFU
RURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJS
T1JUT0s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAg
ICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElk
ZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPnJhZGl4ID0gMTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVu
dCwgJ2UnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVy
RXhwb25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9u
ZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRF
bmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHJldHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAg
ICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZl
cjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0
aDsKLSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUo
bV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJl
bnQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGQ4NDVlMmUuLjE5
NzdkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE3MywxMiArMTcz
LDEzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBB
TFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiwg
Ym9vbCBzdHJpY3RNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+
IE5FVkVSX0lOTElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9r
ZW5EYXRhKiwgYm9vbCBzdHJpY3RNb2RlKTsKIAorICAgIGVudW0gY2xhc3MgTnVtYmVyUGFyc2VS
ZXN1bHQgeyBOdW1iZXIsIEJpZ0ludCwgRmFpbHVyZSB9OwogICAgIHRlbXBsYXRlIDxib29sIHNo
b3VsZEJ1aWxkU3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJzZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBB
TFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlQ29tcGxleEVzY2FwZShib29sIHN0
cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogICAgIEFMV0FZU19JTkxJTkUgU3Ry
aW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJp
bmdzQnVpbGRNb2RlKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiBy
ZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5KGRvdWJsZSYg
cmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU9jdGFsKGRvdWJsZSYg
cmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2ltYWwoZG91Ymxl
JiByZXR1cm5WYWx1ZSk7CisgICAgQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJsZSwgY29uc3Qg
SWRlbnRpZmllcio+IHBhcnNlSGV4KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IHBhcnNlQmluYXJ5KCk7CisgICAg
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlm
aWVyKj4+IHBhcnNlT2N0YWwoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VEZWNpbWFsKCk7CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCk7CiAgICAg
QUxXQVlTX0lOTElORSBib29sIHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhY2RhYzZjLi5i
YmNkYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaApAQCAtOTIsNiArOTIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAorICAgIGlubGluZSBCaWdJbnROb2RlOjpCaWdJbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlLCB1aW50OF90IHJhZGl4KQorICAg
ICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6YmlnSW50VHlwZSgpKQor
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7
CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDog
Q29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAy
YTZkZGQyLi40ZDIzYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0x
NjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlz
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlz
QmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlz
T2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMy
OSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1
ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhf
dCBtX3JhZGl4OworICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NS4uODQ4Yzk3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEy
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29s
dmVBbmRVc2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50
U3RyaW5nOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKKyAgICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQo
bG9jYXRpb24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2Ug
U1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXgg
NTFmZDRhN2EuLmMyMDU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIEJB
Q0tRVU9URSwKICAgICBJTlRFR0VSLAogICAgIERPVUJMRSwKKyAgICBCSUdJTlQsCiAgICAgSURF
TlQsCiAgICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLApAQCAtMjE4LDYgKzIxOSwxMCBAQCB1bmlv
biBKU1Rva2VuRGF0YSB7CiAgICAgICAgIGJvb2wgZXNjYXBlZDsKICAgICB9OwogICAgIHN0cnVj
dCB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludFN0cmluZzsKKyAgICAgICAgdWlu
dDhfdCByYWRpeDsKKyAgICB9OworICAgIHN0cnVjdCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIGNvb2tlZDsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogcmF3OwogICAgICAgICBib29s
IGlzVGFpbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXgg
NGY2NDcxYi4uMDNjYWUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9SZXN1bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmgKQEAgLTMxLDE4ICszMSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgc3RydWN0IE9wZXJhbmRUeXBlczsKIAotICAgICAgICB0eXBlZGVmIHVp
bnQ4X3QgVHlwZTsKKyAgICAgICAgdXNpbmcgVHlwZSA9IHVpbnQ4X3Q7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBUeXBlIFR5cGVJbnQzMiA9IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5
cGVNYXliZU51bWJlciA9IDB4MDI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXli
ZVN0cmluZyA9IDB4MDQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bGwg
ICA9IDB4MDg7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZUJvb2wgICA9IDB4
MTA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4MjA7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZUJpZ0ludCA9IDB4MjA7CisgICAgICAg
IHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4NDA7CiAKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFR5cGUgVHlwZUJpdHMgPSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJp
bmcgfCBUeXBlTWF5YmVOdWxsIHwgVHlwZU1heWJlQm9vbCB8IFR5cGVNYXliZU90aGVyOworICAg
ICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVN
YXliZVN0cmluZyB8IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJlQmln
SW50IHwgVHlwZU1heWJlT3RoZXI7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBpbnQgbnVtQml0c05lZWRlZCA9IDY7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0
c05lZWRlZCA9IDc7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51
bUJpdHNOZWVkZWQpIC0gMSkpID09IFR5cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNv
cnJlY3RuZXNzLiIpOwogCiAgICAgICAgIGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQpA
QCAtNzAsNiArNzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKG1f
Yml0cyAmIFR5cGVCaXRzKSA9PSBUeXBlTWF5YmVCb29sOwogICAgICAgICB9CiAKKyAgICAgICAg
Ym9vbCBkZWZpbml0ZWx5SXNCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gKG1fYml0cyAmIFR5cGVCaXRzKSA9PSBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0K
KwogICAgICAgICBib29sIG1pZ2h0QmVOdW1iZXIoKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlTnVtYmVyOwpAQCAtODAsNiArODYsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gIW1pZ2h0QmVOdW1iZXIoKTsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgYm9vbCBtaWdodEJlQmlnSW50KCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFR5cGVNYXliZUJpZ0ludDsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgaXNOb3RCaWdJbnQoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gIW1pZ2h0QmVCaWdJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgbnVsbFR5cGUoKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVOdWxsKTsKQEAgLTEwNSwxMSArMTIxLDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1h
eWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgYWRkUmVzdWx0VHlwZSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8
IFR5cGVNYXliZUJpZ0ludCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHN0cmluZ1R5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVz
dWx0VHlwZShUeXBlTWF5YmVTdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBz
dGF0aWMgUmVzdWx0VHlwZSBiaWdJbnRUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlQmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgc3RhdGljIFJlc3VsdFR5cGUgdW5rbm93blR5cGUoKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlQml0cyk7CkBAIC0xMjEsNyArMTQ3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAg
ICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzU3RyaW5nKCkgfHwgb3AyLmRlZmluaXRlbHlJc1N0
cmluZygpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RyaW5nT3JOdW1iZXJUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmlu
aXRlbHlJc0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYmlnSW50VHlwZSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdFR5
cGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVubGlrZSBpbiBDLCBhIGxvZ2ljYWwgb3Ag
cHJvZHVjZXMgdGhlIHZhbHVlIG9mIHRoZQpAQCAtMTM0LDYgKzE2Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBp
ZiAob3AxLmRlZmluaXRlbHlJc1N0cmluZygpICYmIG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9w
MS5kZWZpbml0ZWx5SXNCaWdJbnQoKSAmJiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJpZ0ludFR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiB1bmtu
b3duVHlwZSgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKaW5kZXggOGRiMzVjNy4uNTM5YzQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4
MDAwMDAwMDsKICAgICBlbnVtIDogaW50IHsgTm9uZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZl
RXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhw
ciwKKyAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERv
dWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxs
RXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBG
dW5jdGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhw
ciwgRG90RXhwciwgQ2FsbEV4cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHBy
LCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRG91YmxlRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERv
dWJsZUV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIEJpZ0ludEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciop
IHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFu
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVy
biBOdWxsRXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggMTkzYzkxZS4uZDY0NzY2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMCw2ICszMCw3
IEBACiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBc
CiAgICAgbWFjcm8oQllURVNfUEVSX0VMRU1FTlQpIFwKKyAgICBtYWNybyhCaWdJbnQpIFwKICAg
ICBtYWNybyhCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhDcmVk
ZW50aWFsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2YWQyMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMCwwICsx
LDYzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogUGFy
dHMgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93OgorICoKKyAqIENvcHlyaWdodCAyMDE3IHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorICoKKyAqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTQgdGhlIERhcnQgcHJvamVjdCBhdXRob3JzLiAgUGxlYXNlIHNlZSB0aGUgQVVUSE9S
UyBmaWxlIFsxXQorICogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEKKyAqIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzJdLgorICoKKyAqIFsxXSBodHRw
czovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9BVVRIT1JTCisgKiBbMl0g
aHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0ZXIvTElDRU5TRQorICoK
KyAqIENvcHlyaWdodCAyMDA5IFRoZSBHbyBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKKyAq
IGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbM10uCisgKgor
ICogWzNdIGh0dHBzOi8vZ29sYW5nLm9yZy9MSUNFTlNFCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZlY3Rvci5oPgorCisjZGVmaW5l
IFNUQVRJQ19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQgYXNzdW1l
cyAiICNjb25kKQorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQmlnSW50
OjpzX2luZm8gPQorICAgIHsgIkpTQmlnSW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0JpZ0ludCkgfTsKKwordm9pZCBKU0JpZ0ludDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQmln
SW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6Omlu
aXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSkKK3sKKyAgICBzZXRTaWduKGZhbHNlKTsKKyAg
ICBpZiAoemVyb0luaXRpYWxpemUpIHsKKyAgICAgICAgdm9pZCogZGF0YSA9IHN0YXRpY19jYXN0
PHZvaWQqPihkYXRhU3RvcmFnZSgpKTsKKyAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGxlbmd0aCgp
ICogRGlnaXRTaXplKTsKKyAgICB9Cit9CisKK1N0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtKQoreworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChl
eGVjLCB2bSwgMCk7CisgICAgemVyb0JpZ0ludC0+c2V0U2lnbihmYWxzZSk7CisgICAgcmV0dXJu
IHplcm9CaWdJbnQ7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6YWxsb2NhdGlvblNpemUoaW50IGxl
bmd0aCkKK3sKKyAgICBzaXplX3Qgc2l6ZVdpdGhQYWRkaW5nID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihzaXplX3QpPihzaXplb2YoSlNCaWdJbnQpKTsKKyAgICByZXR1cm4gc2l6
ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKK30KKworSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBpbnQgbGVu
Z3RoKQoreworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0JpZ0ludD4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUobGVuZ3RoKSkpIEpTQmlnSW50KHZt
LCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgYmlnSW50LT5maW5pc2hD
cmVhdGlvbihleGVjLCB2bSk7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwordm9pZCBKU0JpZ0lu
dDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoRXhlY1N0
YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3Rf
Y2FzdDxKU0JpZ0ludCo+KHRoaXMpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmln
SW50Ojp0b1N0cmluZ09uZURpZ2l0KCkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIGlmIChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKKyAgICAg
ICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7CisgICAgICAgIGlmIChyRGlnaXQgPD0gOSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOworICAgIH0KKyAg
ICByZXR1cm4geyB9OworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgpCit7CisgICAgaWYg
KHMuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgcy5jaGFyYWN0
ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworICAgIHJldHVybiBwYXJzZUlu
dChleGVjLCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNl
KTsKK30KKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGludCBy
YWRpeCkKK3sKKyAgICBpZiAodGhpcy0+aXNaZXJvKCkpCisgICAgICAgIHJldHVybiBleGVjLT52
bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKKworICAgIHJl
dHVybiB0b1N0cmluZ0dlbmVyaWMoZXhlYywgdGhpcywgcmFkaXgpOworfQorCitib29sIEpTQmln
SW50Ojppc1plcm8oKQoreworICAgIEFTU0VSVChsZW5ndGgoKSB8fCAhc2lnbigpKTsKKyAgICBy
ZXR1cm4gbGVuZ3RoKCkgPT0gMDsKK30KKworLy8gTXVsdGlwbGllcyB7dGhpc30gd2l0aCB7ZmFj
dG9yfSBhbmQgYWRkcyB7c3VtbWFuZH0gdG8gdGhlIHJlc3VsdC4KK3ZvaWQgSlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCh1aW50cHRyX3QgZmFjdG9yLCB1aW50cHRyX3Qgc3VtbWFuZCkKK3sK
KyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihmYWN0b3IpID09IHNpemVvZihEaWdpdCkpOworICAg
IFNUQVRJQ19BU1NFUlQoc2l6ZW9mKHN1bW1hbmQpID09IHNpemVvZihEaWdpdCkpOworCisgICAg
aW50ZXJuYWxNdWx0aXBseUFkZCh0aGlzLCBmYWN0b3IsIHN1bW1hbmQsIGxlbmd0aCgpLCB0aGlz
KTsKK30KKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lUIDEK
K3R5cGVkZWYgdWludDY0X3QgVHdvRGlnaXQ7CisjZWxpZiBIQVZFKElOVDEyOF9UKQorI2RlZmlu
ZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2Vsc2UK
KyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMAorI2VuZGlmCisKKy8vIHtjYXJyeX0gbXVzdCBwb2lu
dCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQK
Ky8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdp
dEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpCit7CisjaWYgSEFWRV9UV09fRElH
SVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgKyBzdGF0
aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgY2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0Qml0czsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGln
aXQgcmVzdWx0ID0gYSArIGI7CisKKyAgICBpZiAocmVzdWx0IDwgYSkKKyAgICAgICAgY2Fycnkg
Kz0gMTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKy8vIHtib3Jyb3d9
IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGlu
Y3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0Jp
Z0ludDo6ZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGJvcnJvdykKK3sKKyNpZiBI
QVZFX1RXT19ESUdJVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0
PihhKSAtIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICBib3Jyb3cgKz0gKHJlc3VsdCA+
PiBEaWdpdEJpdHMpICYgMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJl
c3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgLSBiOworICAgIGlmIChyZXN1bHQg
PiBhKQorICAgICAgICBib3Jyb3cgKz0gMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RGlnaXQ+KHJlc3VsdCk7CisjZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUgbG93IGhhbGYgb2Yg
dGhlIHJlc3VsdC4gSGlnaCBoYWxmIGlzIGluIHtoaWdofS4KK0pTQmlnSW50OjpEaWdpdCBKU0Jp
Z0ludDo6ZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGhpZ2gpCit7CisjaWYgSEFW
RV9UV09fRElHSVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4o
YSkgKiBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgaGlnaCA9IHJlc3VsdCA+PiBEaWdp
dEJpdHM7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQor
ICAgIC8vIE11bHRpcGx5IGluIGhhbGYtcG9pbnRlci1zaXplZCBjaHVua3MuCisgICAgLy8gRm9y
IGlucHV0cyBbQUggQUxdKltCSCBCTF0sIHRoZSByZXN1bHQgaXM6CisgICAgLy8KKyAgICAvLyAg
ICAgICAgICAgIFtBTCpCTF0gIC8vIHJMb3cKKyAgICAvLyAgICArICAgIFtBTCpCSF0gICAgIC8v
IHJNaWQxCisgICAgLy8gICAgKyAgICBbQUgqQkxdICAgICAvLyByTWlkMgorICAgIC8vICAgICsg
W0FIKkJIXSAgICAgICAgLy8gckhpZ2gKKyAgICAvLyAgICA9IFtSNCBSMyBSMiBSMV0gIC8vIGhp
Z2ggPSBbUjQgUjNdLCBsb3cgPSBbUjIgUjFdCisgICAgLy8KKyAgICAvLyBXaGVyZSBvZiBjb3Vy
c2Ugd2UgbXVzdCBiZSBjYXJlZnVsIHdpdGggY2FycmllcyBiZXR3ZWVuIHRoZSBjb2x1bW5zLgor
ICAgIERpZ2l0IGFMb3cgPSBhICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEg
Pj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCBiTG93ID0gYiAmIEhhbGZEaWdpdE1hc2s7Cisg
ICAgRGlnaXQgYkhpZ2ggPSBiID4+IEhhbGZEaWdpdEJpdHM7CisgICAgCisgICAgRGlnaXQgckxv
dyA9IGFMb3cgKiBiTG93OworICAgIERpZ2l0IHJNaWQxID0gYUxvdyAqIGJIaWdoOworICAgIERp
Z2l0IHJNaWQyID0gYUhpZ2ggKiBiTG93OworICAgIERpZ2l0IHJIaWdoID0gYUhpZ2ggKiBiSGln
aDsKKyAgICAKKyAgICBEaWdpdCBjYXJyeSA9IDA7CisgICAgRGlnaXQgbG93ID0gZGlnaXRBZGQo
ckxvdywgck1pZDEgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRk
KGxvdywgck1pZDIgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworCisgICAgaGlnaCA9IChyTWlk
MSA+PiBIYWxmRGlnaXRCaXRzKSArIChyTWlkMiA+PiBIYWxmRGlnaXRCaXRzKSArIHJIaWdoICsg
Y2Fycnk7CisKKyAgICByZXR1cm4gbG93OworI2VuZGlmCit9CisKKy8vIFJhaXNlcyB7YmFzZX0g
dG8gdGhlIHBvd2VyIG9mIHtleHBvbmVudH0uIERvZXMgbm90IGNoZWNrIGZvciBvdmVyZmxvdy4K
K0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRQb3coRGlnaXQgYmFzZSwgRGlnaXQgZXhw
b25lbnQpCit7CisgICAgRGlnaXQgcmVzdWx0ID0gMXVsbDsKKyAgICB3aGlsZSAoZXhwb25lbnQg
PiAwKSB7CisgICAgICAgIGlmIChleHBvbmVudCAmIDEpCisgICAgICAgICAgICByZXN1bHQgKj0g
YmFzZTsKKworICAgICAgICBleHBvbmVudCA+Pj0gMTsKKyAgICAgICAgYmFzZSAqPSBiYXNlOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFJldHVybnMgdGhlIHF1b3RpZW50
LgorLy8gcXVvdGllbnQgPSAoaGlnaCA8PCBEaWdpdEJpdHMgKyBsb3cgLSByZW1haW5kZXIpIC8g
ZGl2aXNvcgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdERpdihEaWdpdCBoaWdoLCBE
aWdpdCBsb3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAgQVNTRVJU
KGhpZ2ggPCBkaXZpc29yKTsKKyNpZiBDUFUoWDg2XzY0KSAmJiBDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9fYXNtX18oImRp
dnEgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0gd2lsbCBiZSBp
biByYXgsIHtyZW19IGluIHJkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwgIj1kIihyZW0p
CisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIHJkeCwge2xvd30gaW50byByYXgs
IGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Igc3RhY2sgc2xv
dC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJtIihkaXZpc29y
KSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQ
VShYODYpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAg
ICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8g
T3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAg
ICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hp
Z2h9IGludG8gZWR4LCB7bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAg
IC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEi
KGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICByZW1haW5kZXIgPSByZW07Cisg
ICAgcmV0dXJuIHF1b3RpZW50OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgRGlnaXQga0hhbGZE
aWdpdEJhc2UgPSAxdWxsIDw8IEhhbGZEaWdpdEJpdHM7CisgICAgLy8gQWRhcHRlZCBmcm9tIFdh
cnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgcC4gMTUyLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
aW50IHMgPSBjbHo2NChkaXZpc29yKTsKKyNlbHNlCisgICAgaW50IHMgPSBjbHozMihkaXZpc29y
KTsKKyNlbmRpZgorICAgIGRpdmlzb3IgPDw9IHM7CisgICAgCisgICAgRGlnaXQgdm4xID0gZGl2
aXNvciA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHZuMCA9IGRpdmlzb3IgJiBIYWxmRGln
aXRNYXNrOworCisgICAgLy8ge3N9IGNhbiBiZSAwLiAibG93ID4+IERpZ2l0Qml0cyA9PSBsb3ci
IG9uIHg4Niwgc28gd2UgIiYiIGl0IHdpdGgKKyAgICAvLyB7c196ZXJvX21hc2t9IHdoaWNoIGlz
IDAgaWYgcyA9PSAwIGFuZCBhbGwgMS1iaXRzIG90aGVyd2lzZS4KKyAgICBTVEFUSUNfQVNTRVJU
KHNpemVvZihpbnRwdHJfdCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAgRGlnaXQgc1plcm9NYXNr
ID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PGludHB0cl90PigtcykgPj4gKERpZ2l0
Qml0cyAtIDEpKTsKKyAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwgcykgfCAoKGxvdyA+PiAoRGln
aXRCaXRzIC0gcykpICYgc1plcm9NYXNrKTsKKyAgICBEaWdpdCB1bjEwID0gbG93IDw8IHM7Cisg
ICAgRGlnaXQgdW4xID0gdW4xMCA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHVuMCA9IHVu
MTAgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IHExID0gdW4zMiAvIHZuMTsKKyAgICBEaWdp
dCByaGF0ID0gdW4zMiAtIHExICogdm4xOworCisgICAgd2hpbGUgKHExID49IGtIYWxmRGlnaXRC
YXNlIHx8IHExICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4xKSB7CisgICAgICAg
IHExLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRp
Z2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIERpZ2l0IHVuMjEgPSB1
bjMyICoga0hhbGZEaWdpdEJhc2UgKyB1bjEgLSBxMSAqIGRpdmlzb3I7CisgICAgRGlnaXQgcTAg
PSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAgKiB2bjE7CisKKyAgICB3aGlsZSAo
cTAgPj0ga0hhbGZEaWdpdEJhc2UgfHwgcTAgKiB2bjAgPiByaGF0ICoga0hhbGZEaWdpdEJhc2Ug
KyB1bjApIHsKKyAgICAgICAgcTAtLTsKKyAgICAgICAgcmhhdCArPSB2bjE7CisgICAgICAgIGlm
IChyaGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmVtYWluZGVyID0gKHVuMjEgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMCAtIHEwICogZGl2aXNv
cikgPj4gczsKKyAgICByZXR1cm4gcTEgKiBrSGFsZkRpZ2l0QmFzZSArIHEwOworI2VuZGlmCit9
CisKKy8vIE11bHRpcGxpZXMge3NvdXJjZX0gd2l0aCB7ZmFjdG9yfSBhbmQgYWRkcyB7c3VtbWFu
ZH0gdG8gdGhlIHJlc3VsdC4KKy8vIHtyZXN1bHR9IGFuZCB7c291cmNlfSBtYXkgYmUgdGhlIHNh
bWUgQmlnSW50IGZvciBpbnBsYWNlIG1vZGlmaWNhdGlvbi4KK3ZvaWQgSlNCaWdJbnQ6OmludGVy
bmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1t
YW5kLCBpbnQgbiwgSlNCaWdJbnQqIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoc291cmNlLT5sZW5n
dGgoKSA+PSBuKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA+PSBuKTsKKworICAgIERp
Z2l0IGNhcnJ5ID0gc3VtbWFuZDsKKyAgICBEaWdpdCBoaWdoID0gMDsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBEaWdpdCBjdXJyZW50ID0gc291cmNlLT5kaWdp
dChpKTsKKyAgICAgICAgRGlnaXQgbmV3Q2FycnkgPSAwOworCisgICAgICAgIC8vIENvbXB1dGUg
dGhpcyByb3VuZCdzIG11bHRpcGxpY2F0aW9uLgorICAgICAgICBEaWdpdCBuZXdIaWdoID0gMDsK
KyAgICAgICAgY3VycmVudCA9IGRpZ2l0TXVsKGN1cnJlbnQsIGZhY3RvciwgbmV3SGlnaCk7CisK
KyAgICAgICAgLy8gQWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJyZW50
ID0gZGlnaXRBZGQoY3VycmVudCwgaGlnaCwgbmV3Q2FycnkpOworICAgICAgICBjdXJyZW50ID0g
ZGlnaXRBZGQoY3VycmVudCwgY2FycnksIG5ld0NhcnJ5KTsKKworICAgICAgICAvLyBTdG9yZSBy
ZXN1bHQgYW5kIHByZXBhcmUgZm9yIG5leHQgcm91bmQuCisgICAgICAgIHJlc3VsdC0+c2V0RGln
aXQoaSwgY3VycmVudCk7CisgICAgICAgIGNhcnJ5ID0gbmV3Q2Fycnk7CisgICAgICAgIGhpZ2gg
PSBuZXdIaWdoOworICAgIH0KKworICAgIGlmIChyZXN1bHQtPmxlbmd0aCgpID4gbikgeworICAg
ICAgICByZXN1bHQtPnNldERpZ2l0KG4rKywgY2FycnkgKyBoaWdoKTsKKworICAgICAgICAvLyBD
dXJyZW50IGNhbGxlcnMgZG9uJ3QgcGFzcyBpbiBzdWNoIGxhcmdlIHJlc3VsdHMsIGJ1dCBsZXQn
cyBiZSByb2J1c3QuCisgICAgICAgIHdoaWxlIChuIDwgcmVzdWx0LT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC0+c2V0RGlnaXQobisrLCAwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIShjYXJyeSArIGhpZ2gpKTsKK30KKworYm9vbCBKU0JpZ0ludDo6ZXF1YWxU
b0JpZ0ludChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCit7CisgICAgaWYgKHgtPnNpZ24oKSAh
PSB5LT5zaWduKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh4LT5sZW5ndGgo
KSAhPSB5LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICh4LT5kaWdpdChpKSAh
PSB5LT5kaWdpdChpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLy8gRGl2aWRlcyB7eH0gYnkge2Rpdmlzb3J9LCByZXR1cm5pbmcg
dGhlIHJlc3VsdCBpbiB7cXVvdGllbnR9IGFuZCB7cmVtYWluZGVyfS4KKy8vIE1hdGhlbWF0aWNh
bGx5LCB0aGUgY29udHJhY3QgaXM6CisvLyBxdW90aWVudCA9ICh4IC0gcmVtYWluZGVyKSAvIGRp
dmlzb3IsIHdpdGggMCA8PSByZW1haW5kZXIgPCBkaXZpc29yLgorLy8gSWYge3F1b3RpZW50fSBp
cyBhbiBlbXB0eSBoYW5kbGUsIGFuIGFwcHJvcHJpYXRlbHkgc2l6ZWQgQmlnSW50IHdpbGwgYmUK
Ky8vIGFsbG9jYXRlZCBmb3IgaXQ7IG90aGVyd2lzZSB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRo
YXQgaXQgaXMgYmlnIGVub3VnaC4KKy8vIHtxdW90aWVudH0gY2FuIGJlIHRoZSBzYW1lIGFzIHt4
fSBmb3IgYW4gaW4tcGxhY2UgZGl2aXNpb24uIHtxdW90aWVudH0gY2FuCisvLyBhbHNvIGJlIG51
bGxwdHIgaWYgdGhlIGNhbGxlciBpcyBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJlbWFpbmRlci4K
K3ZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2U21hbGwoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRl
cikKK3sKKyAgICBBU1NFUlQoZGl2aXNvcik7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOworICAgIHJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRp
dmlzb3IgPT0gMSkgeworICAgICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAg
ICAgICpxdW90aWVudCA9IHg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVu
Z3RoID0geC0+bGVuZ3RoKCk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAg
ICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbmd0aChleGVjLCB2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIERpZ2l0IHEg
PSBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOwor
ICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQor
ICAgICAgICAgICAgZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVt
YWluZGVyKTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVt
YmVyIG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFy
cmF5CisvLyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdl
bmVyYXRlIHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHBy
aW50KE1hdGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWlu
dDhfdCBNYXhCaXRzUGVyQ2hhcltdID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3
NSwgIDgzLCAgOTAsICA5NiwgLy8gMC4uOAorICAgIDEwMiwgMTA3LCAxMTEsIDExNSwgMTE5LCAx
MjIsIDEyNiwgMTI4LCAgICAgLy8gOS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwg
MTQzLCAxNDUsIDE0NywgICAgIC8vIDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2
LCAxNTgsIDE1OSwgMTYwLCAgICAgLy8gMjUuLjMyCisgICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQg
Qml0c1BlckNoYXJUYWJsZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNo
YXJUYWJsZU11bHRpcGxpZXIgPSAxdSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKKy8vIENv
bXB1dGUgKGFuIG92ZXJhcHByb3hpbWF0aW9uIG9mKSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRp
bmcgc3RyaW5nOgorLy8gRGl2aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJl
cHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KK3VpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVN
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQgbGFz
dERpZ2l0LCBib29sIHNpZ24pCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpbnQgbGVhZGlu
Z1plcm9zID0gY2x6NjQobGFzdERpZ2l0KTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9
IGNsejMyKGxhc3REaWdpdCk7CisjZW5kaWYKKyAgICBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3Ro
ICogRGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Yg
Yml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMK
KyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgdWlu
dDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZv
ciBlc3RpbWF0aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5k
IHdvcmsgd2l0aAorICAgIC8vIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0
ZXIgY2FuIHJlcHJlc2VudC4KKyAgICB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1Bl
ckNoYXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdp
dGggdWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IG1heGltdW1DaGFy
YWN0ZXJzUmVxdWlyZWQgPSBiaXRMZW5ndGg7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJl
ZCAqPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAg
IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIG1h
eGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgbWF4aW11bUNo
YXJhY3RlcnNSZXF1aXJlZCArPSBzaWduOworICAgIAorICAgIHJldHVybiBtYXhpbXVtQ2hhcmFj
dGVyc1JlcXVpcmVkOworfQorCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgpCit7CisgICAgU3RyaW5nVmVjdG9y
PExDaGFyPiByZXN1bHRTdHJpbmc7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8
PSAzNik7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+
bGVuZ3RoKCk7CisgICAgYm9vbCBzaWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhC
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICB1aW50NjRfdCBtYXhpbXVt
Q2hhcmFjdGVyc1JlcXVpcmVkID0gY2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChs
ZW5ndGgsIHJhZGl4LCB4LT5kaWdpdChsZW5ndGggLSAxKSwgc2lnbik7CisKKyAgICBpZiAobWF4
aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJ
bXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworICAgIH0KKworICAgIERpZ2l0IGxh
c3REaWdpdDsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRp
Z2l0KDApOworICAgIGVsc2UgeworICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAq
IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERp
Z2l0IGNodW5rRGl2aXNvciA9IGRpZ2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAg
ICAvLyBCeSBjb25zdHJ1Y3Rpb24gb2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVu
IG92ZXJmbG93LgorICAgICAgICBBU1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5v
blplcm9EaWdpdCA9IGxlbmd0aCAtIDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJv
RGlnaXQpKTsKKworICAgICAgICAvLyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0lu
dCB0aGF0IHdlIGhhdmVuJ3QgbG9va2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNv
bmZ1c2VkIHdpdGggInJlbWFpbmRlciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0
cjsKKworICAgICAgICAvLyBJbiB0aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFs
bG9jYXRpbmcgYSBuZXcgQmlnSW50IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7
IGZyb20gdGhlbiBvbiBkaXZpZGUgdGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50
KiogZGl2aWRlbmQgPSAmeDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7
CisgICAgICAgICAgICBhYnNvbHV0ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZp
c29yLCAmcmVzdCwgY2h1bmspOworICAgICAgICAgICAgQVNTRVJUKHJlc3QpOworCisgICAgICAg
ICAgICBkaXZpZGVuZCA9ICZyZXN0OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
aHVua0NoYXJzOyBpKyspIHsKKyAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKHJh
ZGl4RGlnaXRzW2NodW5rICUgcmFkaXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRp
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghY2h1bmspOworCisgICAgICAg
ICAgICBpZiAoIXJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpCisgICAgICAgICAgICAgICAgbm9u
WmVyb0RpZ2l0LS07CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBuZXZlciBjbGVhciBtb3JlIHRo
YW4gb25lIGRpZ2l0IHBlciBpdGVyYXRpb24sIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGNodW5r
RGl2aXNvciBpcyBzbWFsbGVyIHRoYW4gbWF4IGRpZ2l0IHZhbHVlLgorICAgICAgICAgICAgQVNT
RVJUKHJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworICAgICAgICB9IHdoaWxlIChub25aZXJv
RGlnaXQgPiAwKTsKKworICAgICAgICBsYXN0RGlnaXQgPSByZXN0LT5kaWdpdCgwKTsKKyAgICB9
CisKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbbGFz
dERpZ2l0ICUgcmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgIH0gd2hp
bGUgKGxhc3REaWdpdCA+IDApOworICAgIEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpKTsKKyAg
ICBBU1NFUlQocmVzdWx0U3RyaW5nLnNpemUoKSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGlt
dW1DaGFyYWN0ZXJzUmVxdWlyZWQpKTsKKworICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9lcy4K
KyAgICBpbnQgbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyA9IHJlc3VsdFN0cmluZy5zaXplKCk7Cisg
ICAgd2hpbGUgKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMgID4gMSAmJiByZXN1bHRTdHJpbmdbbmV3
U2l6ZU5vTGVhZGluZ1plcm9lcyAtIDFdID09ICcwJykKKyAgICAgICAgbmV3U2l6ZU5vTGVhZGlu
Z1plcm9lcy0tOworCisgICAgcmVzdWx0U3RyaW5nLnNocmluayhuZXdTaXplTm9MZWFkaW5nWmVy
b2VzKTsKKworICAgIGlmIChzaWduKQorICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKCctJyk7
CisKKyAgICBzdGQ6OnJldmVyc2UocmVzdWx0U3RyaW5nLmJlZ2luKCksIHJlc3VsdFN0cmluZy5l
bmQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoV1RGTW92ZShyZXN1bHRTdHJp
bmcpKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRyaW0oRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0pCit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gdGhpczsKKwor
ICAgIGludCBub25aZXJvSW5kZXggPSBtX2xlbmd0aCAtIDE7CisgICAgd2hpbGUgKG5vblplcm9J
bmRleCA+PSAwICYmICFkaWdpdChub25aZXJvSW5kZXgpKQorICAgICAgICBub25aZXJvSW5kZXgt
LTsKKworICAgIGlmIChub25aZXJvSW5kZXggPT0gbV9sZW5ndGggLSAxKQorICAgICAgICByZXR1
cm4gdGhpczsKKworICAgIGludCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOworICAgIEpT
QmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChleGVjLCB2bSwgbmV3TGVu
Z3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0cmltbWVkQmlnSW50KTsKKyAgICBEaWdpdCogZGF0
YSA9IHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9yYWdlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBuZXdMZW5ndGg7IGkrKykKKyAgICAgICAgZGF0YVtpXSA9IGRpZ2l0KGkpOworCisgICAgdHJp
bW1lZEJpZ0ludC0+c2V0U2lnbih0aGlzLT5zaWduKCkpOworCisgICAgcmV0dXJuIHRyaW1tZWRC
aWdJbnQ7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJjb3VudCkKK3sKKyAgICBBU1NFUlQoMiA8
PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKGNoYXJjb3VudCA+PSAwKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHNpemVfdCBi
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICBzaXplX3QgY2hhcnMgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7CisgICAgY29uc3QgaW50IHJvdW5kdXAgPSBC
aXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7CisgICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91bmR1cCkgLyBiaXRzUGVyQ2hhcikgewor
ICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJDaGFyICogY2hhcnM7CisKKyAgICAgICAg
Ly8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3VuZGluZyB1cC4KKyAgICAgICAgYml0c01p
biA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1BlckNoYXJUYWJsZVNoaWZ0OworICAgICAg
ICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KE1heEludCkpIHsKKyAgICAgICAg
ICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCisgICAgICAgICAgICBp
bnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0c01pbikgKyBEaWdpdEJpdHMgLSAxKSAv
IERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPD0gTWF4TGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3Ro
KGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhlYykKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c2l6ZV90IEpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU0Jp
Z0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNpemVfdCBi
dWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNpemU7Cisg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0ZWRTaXpl
OworfQorCitkb3VibGUgSlNCaWdJbnQ6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJDb252ZXJ0aW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
IikpOworICAgIHJldHVybiAwLjA7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmdldFByaW1pdGl2ZU51
bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNv
bnN0Cit7CisgICAgcmVzdWx0ID0gdGhpczsKKyAgICBudW1iZXIgPSB0b051bWJlcihleGVjKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zNmJjYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDIxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlBhcnNlSW50
LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQmlnSW50
IDogcHVibGljIEpTQ2VsbCB7CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKworcHVibGljOgor
ICAgIEpTQmlnSW50KFZNJiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCk7CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoYm9vbCB6ZXJvSW5pdGlhbGl6ZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGlt
YXRlZFNpemUoSlNDZWxsKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKGlu
dCBsZW5ndGgpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVplcm8oRXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlV2l0aExlbmd0aChFeGVjU3RhdGUqLCBWTSYsIGludCBsZW5ndGgpOworCisgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
Vk0mKTsKKworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2ln
biA9IHNpZ247IH0KKyAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKwor
ICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAg
ICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDhfdD4gdG9TdHJpbmdPbmVEaWdpdCgpOworCisgICAgc3RhdGljIEpTQmlnSW50
KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOwor
ICAgIAorICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqLCBpbnQgcmFkaXgpOworICAgIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KTsKKworICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0
ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0OworICAgIGRvdWJsZSB0
b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdXNpbmcgRGln
aXQgPSB1aW50cHRyX3Q7CisgICAgc3RhdGljIGNvbnN0IGludCBCaXRzUGVyQnl0ZSA9IDg7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBEaWdpdFNpemUgPSBzaXplb2YoRGlnaXQpOworICAgIHN0YXRp
YyBjb25zdCBpbnQgRGlnaXRCaXRzID0gRGlnaXRTaXplICogQml0c1BlckJ5dGU7CisgICAgc3Rh
dGljIGNvbnN0IGludCBIYWxmRGlnaXRCaXRzID0gRGlnaXRCaXRzIC8gMjsKKyAgICBzdGF0aWMg
Y29uc3QgRGlnaXQgSGFsZkRpZ2l0TWFzayA9ICgxdWxsIDw8IEhhbGZEaWdpdEJpdHMpIC0gMTsK
KyAgICBzdGF0aWMgY29uc3QgaW50IE1heEludCA9IDB4N0ZGRkZGRkY7CisgICAgCisgICAgLy8g
VGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMgd291bGQgYmUKKyAgICAvLyBNYXhJbnQgLyBEaWdpdEJpdHMuIEhvd2V2ZXIsIHdlIHVzZSBh
IGxvd2VyIGxpbWl0IGZvciBub3csIGJlY2F1c2UKKyAgICAvLyByYWlzaW5nIGl0IGxhdGVyIGlz
IGVhc2llciB0aGFuIGxvd2VyaW5nIGl0LgorICAgIC8vIFN1cHBvcnQgdXAgdG8gMSBtaWxsaW9u
IGJpdHMuCisgICAgc3RhdGljIGNvbnN0IGludCBNYXhMZW5ndGggPSAxMDI0ICogMTAyNCAvIChz
aXplb2Yodm9pZCopICogQml0c1BlckJ5dGUpOworICAgIAorICAgIHN0YXRpYyB1aW50NjRfdCBj
YWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5ndGgsIGludCByYWRpeCwg
RGlnaXQgbGFzdERpZ2l0LCBib29sIHNpZ24pOworICAgIAorICAgIHN0YXRpYyB2b2lkIGFic29s
dXRlRGl2U21hbGwoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmln
SW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOworICAgIHN0YXRpYyB2b2lkIGludGVy
bmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1t
YW5kLCBpbnQsIEpTQmlnSW50KiByZXN1bHQpOworCisgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBo
ZWxwZXJzLgorICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdp
dCYgY2FycnkpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBE
aWdpdCYgYm9ycm93KTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQg
YiwgRGlnaXQmIGhpZ2gpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdERpdihEaWdpdCBoaWdoLCBE
aWdpdCBsb3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpOworICAgIHN0YXRpYyBE
aWdpdCBkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCk7CisKKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqLCBKU0JpZ0ludCosIGludCByYWRpeCk7
CisKKyAgICBib29sIGlzWmVybygpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgorICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJhZGl4LCBi
b29sIGFsbG93RW1wdHlTdHJpbmcgPSB0cnVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0
aCA+PSAwKTsKKyAgICAgICAgaW50IHAgPSBzdGFydEluZGV4OworCisgICAgICAgIGlmICghYWxs
b3dFbXB0eVN0cmluZyAmJiBzdGFydEluZGV4ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKKyAgICAgICAg
d2hpbGUgKHAgPCBsZW5ndGggJiYgZGF0YVtwXSA9PSAnMCcpCisgICAgICAgICAgICArK3A7CisK
KyAgICAgICAgaW50IGVuZEluZGV4ID0gbGVuZ3RoIC0gMTsKKyAgICAgICAgLy8gUmVtb3Zpbmcg
dHJhaWxpbmcgc3BhY2VzCisgICAgICAgIHdoaWxlIChlbmRJbmRleCA+PSBwICYmIGlzU3RyV2hp
dGVTcGFjZShkYXRhW2VuZEluZGV4XSkpCisgICAgICAgICAgICAtLWVuZEluZGV4OworCisgICAg
ICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKKworICAgICAgICBpZiAocCA9PSBsZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisKKyAgICAgICAgaW50IGxp
bWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7CisgICAgICAgIGludCBsaW1p
dGEgPSAnYScgKyAocmFkaXggLSAxMCk7CisgICAgICAgIGludCBsaW1pdEEgPSAnQScgKyAocmFk
aXggLSAxMCk7CisKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGV4ZWMs
IHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplKHRydWUpOwor
CisgICAgICAgIGZvciAoaW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgeworICAgICAg
ICAgICAgdWludDMyX3QgZGlnaXQ7CisgICAgICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYg
ZGF0YVtpXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7
CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRh
KQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOworICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8IGxpbWl0QSkKKyAgICAgICAg
ICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlw
bHlBZGQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihyYWRpeCksIHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oZGlnaXQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwID09IGxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVjLCB2bSk7CisKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihF
eGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJjb3VudCk7CisKKyAgICBKU0JpZ0lu
dCogcmlnaHRUcmltKEV4ZWNTdGF0ZSosIFZNJik7CisKKyAgICB2b2lkIGlucGxhY2VNdWx0aXBs
eUFkZChEaWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKyAgICAKKyAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mRGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mPHNpemVvZihEaWdpdCk+KHNpemVvZihKU0JpZ0ludCkpOworICAgIH0KKyAgICAK
KyAgICBEaWdpdCogZGF0YVN0b3JhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxEaWdpdCo+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkRhdGEoKSk7
CisgICAgfQorCisgICAgRGlnaXQgZGlnaXQoaW50IG4pCisgICAgeworICAgICAgICBBU1NFUlQo
biA+PSAwICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIERpZ2l0KiBkYXRhUHRyID0gZGF0YVN0
b3JhZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRhdGFQdHJbbl07CisgICAgfQorCisgICAgdm9pZCBz
ZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobiA+PSAw
ICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIERpZ2l0KiBkaWdpdFB0ciA9IGRhdGFTdG9yYWdl
KCk7CisgICAgICAgIGRpZ2l0UHRyW25dID0gdmFsdWU7CisgICAgfQorICAgIAorICAgIHN0YXRp
YyBpbnQgc2l6ZUZvcihpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxlbmd0aCAq
IERpZ2l0U2l6ZTsKKyAgICB9CisKKyAgICBpbnQgbV9sZW5ndGg7CisgICAgYm9vbCBtX3NpZ247
Cit9OworCitpbmxpbmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCit7CisgICAg
QVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAgICByZXR1cm4ganNDYXN0PEpT
QmlnSW50Kj4odmFsdWUuYXNDZWxsKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggZDAzMDQ1Mi4u
MGM3M2RmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0Jp
Z0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTczLDYgKzc0LDcgQEAgZG91YmxlIEpT
VmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICBy
ZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1RydWUoKSkKICAgICAg
ICAgcmV0dXJuIDEuMDsKKwogICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gUE5hTiA6IDA7IC8v
IG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgogfQogCkBAIC0xMzAsNiArMTMyLDkg
QEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAg
ICAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3Rv
dHlwZSgpOworICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmln
SW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFpc0JpZ0ludCgpKTsKICAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgICAgICBy
ZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zeW1ib2xQcm90b3R5cGUoKTsKICAg
ICB9CkBAIC0zNzYsNiArMzgxLDEzIEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyCiAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0
IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOwogICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwog
ICAgIH0KKyAgICBpZiAoaXNCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0g
YXNCaWdJbnQoKnRoaXMpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IGRpZ2l0ID0g
YmlnSW50LT50b1N0cmluZ09uZURpZ2l0KCk7CisgICAgICAgIGlmIChkaWdpdCkKKyAgICAgICAg
ICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdpdCAr
ICcwJyk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBiaWdJbnQtPnRv
U3RyaW5nKGV4ZWMsIDEwKSk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0cmluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYzI0ZWE1
YmIuLjlmMzlhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FueUludCgpIGNvbnN0
OwogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7
CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsK
ICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKaW5kZXggYTI3ZjZhMS4uNTYyOTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKQEAgLTU3OCw2ICs1NzksMTEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJp
bmcoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAoreworICAg
IHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKK30KKwogaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBh
c0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTEwMjAsNiArMTAyNiw4IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxs
KCktPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMs
IGFzU3RyaW5nKHYyKSk7CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkK
KyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KGFzQmlnSW50KHYxLmFzQ2Vs
bCgpKSwgYXNCaWdJbnQodjIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZTguLjFk
YWEzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3Ry
aW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBj
ZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsK
IAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEpTQ2VsbDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmll
ciwgSlNWYWx1ZQogCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgp
KSB7CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxs
LT5pc0JpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3Vs
ZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KQEAgLTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhl
YywgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVy
cmVkVHlwZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBl
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9Qcmlt
aXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE2NCw2ICsxNjYsOCBAQCBib29s
IEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1i
ZXIsIEpTVmFsdWUmIHZhbHVlKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwog
ICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3lt
Ym9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKKyAg
ICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmln
SW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJpbWl0aXZl
TnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwogfQogCkBAIC0xNzMsNiArMTc3LDggQEAgZG91
YmxlIEpTQ2VsbDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CiAg
ICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1i
b2wqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJlcihleGVj
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1i
ZXIoZXhlYyk7CiB9CiAKQEAgLTE4MSw2ICsxODcsOSBAQCBKU09iamVjdCogSlNDZWxsOjp0b09i
amVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
bwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChleGVj
LCBnbG9iYWxPYmplY3QpOworICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVu
dCBKU0JpZ0ludCwgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM1OQorICAgIFJFTEVB
U0VfQVNTRVJUKCFpc0JpZ0ludCgpKTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9i
YWxPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA5
ZmMwYzliLi43MWY5OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtMTEyLDYgKzExMiw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0
aGUgdHlwZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgp
IGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDU3MGYwOTQuLjk4MzZiMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAg
LTIwMSw2ICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6
OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJpZ0ludFR5cGU7Cit9
CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBt
X3R5cGUgPT0gU3ltYm9sVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgK
aW5kZXggODUzNTZkMy4uNTc3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxs
VHlwZSwKICAgICBTdHJpbmdUeXBlLAogICAgIFN5bWJvbFR5cGUsCisgICAgQmlnSW50VHlwZSwK
IAogICAgIEN1c3RvbUdldHRlclNldHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCBlOGYzMTZj
Li4wZmRjN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5o
CkBAIC02Niw2ICs2NiwyNSBAQCBpbmxpbmUgaW50IGNsejMyKHVpbnQzMl90IG51bWJlcikKICNl
bmRpZgogfQogCitpbmxpbmUgaW50IGNsejY0KHVpbnQ2NF90IG51bWJlcikKK3sKKyNpZiBDT01Q
SUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgaW50IHplcm9Db3VudCA9IDY0OworICAgIGlmIChudW1i
ZXIpCisgICAgICAgIHplcm9Db3VudCA9IF9fYnVpbHRpbl9jbHpsbChudW1iZXIpOworICAgIHJl
dHVybiB6ZXJvQ291bnQ7CisjZWxzZQorICAgIGludCB6ZXJvQ291bnQgPSAwOworICAgIGZvciAo
aW50IGkgPSA2MzsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKCEobnVtYmVyID4+IGkpKQor
ICAgICAgICAgICAgemVyb0NvdW50Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gemVyb0NvdW50OworI2VuZGlmCit9CisKIC8vIFRoaXMgaW4g
dGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVD
TUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRv
IFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KIC8vIG9mIHRoZSByZXN1bHRp
bmcgYml0LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1w
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcAppbmRleCA1NTBiOGY3Li5hNjNkMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCiAjaW5jbHVkZSAiVWludDE2
V2l0aEZyYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgpAQCAtMTM5LDkgKzE0MCw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
Z2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShFeGVjU3RhdGUqIGV4ZWMsIGludCBsb3csIGluCiAv
LyBmbyBhbnkgbnVtYmVyIG9mIGRpZ2l0cyBhbiBJRUVFIG51bWJlciBtYXkgcmVxdWlyZSB0byBy
ZXByZXNlbnQuCiB0eXBlZGVmIGNoYXIgUmFkaXhCdWZmZXJbMjE4MF07CiAKLS8vIE1hcHBpbmcg
ZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVudGlmeWluZyB0aGlzIHZhbHVlLCBmb3Ig
cmFkaXggMi4uMzYuCi1zdGF0aWMgY29uc3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAxMjM0NTY3
ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0KIHN0YXRpYyBpbmxpbmUgY2hhciogaW50
NTJUb1N0cmluZ1dpdGhSYWRpeChjaGFyKiBzdGFydE9mUmVzdWx0U3RyaW5nLCBpbnQ2NF90IGlu
dDUyVmFsdWUsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggNmQx
MDU1OC4uOTdjZmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5jcHAKQEAgLTgyLDYgKzgyLDggQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAg
cmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKICAgICBpZiAodi5pc1N5bWJv
bCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnN5bWJvbFN0cmluZygpOworICAg
IGlmICh2LmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MuYmlnaW50
U3RyaW5nKCk7CiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3Qodik7CiAgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2Jq
ZWN0cyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkCkBAIC0xMTIsNyArMTE0LDcgQEAgYm9vbCBqc0lz
T2JqZWN0VHlwZU9yTnVsbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQogICAgICAg
ICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlw
ZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlKQor
ICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUg
PT0gQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9i
amVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCA3OGU3N2FkLi5mYmEzMjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00NzgsNiArNDc4
LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlQXN5bmNJdGVyYXRpb24gPSBmYWxzZTsKICAgICB2
KGJvb2wsIHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
d2Ugd2lsbCBzdG9yZSBjb250ZXh0IGluIGZhc3QgVExTLiBJZiBmYWxzZSwgd2Ugd2lsbCBwaW4g
aXQgdG8gYSByZWdpc3Rlci4iKSBcCiAgICAgdihib29sLCB1c2VDYWxsSUNzRm9yV2ViQXNzZW1i
bHlUb0pTQ2FsbHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIENhbGxMaW5r
SW5mbyB0byBpbmxpbmUgY2FjaGUgV2FzbSB0byBKUyBjYWxscy4iKSBcCiAgICAgdihib29sLCB1
c2VPYmplY3RSZXN0U3ByZWFkLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJs
ZSBPYmplY3QgUmVzdC9TcHJlYWQgZmVhdHVyZS4iKSBcCisgICAgdihib29sLCB1c2VCaWdJbnQs
IGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4i
KSBcCiAgICAgdihib29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1h
bCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9m
aWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWlt
IHRvIGJlIHVuZGVjaWRlZC4iKVwKICAgICB2KGJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVj
dCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1BhcnNlSW50LmgKaW5kZXggZTQ3OTVlYy4uZjMxMDE1OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCkBAIC0yMjYsNCArMjI2LDcgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRp
b24oU3RyaW5nVmlldykKICAgICByZXR1cm4gY2FsbGJhY2sodmlld1dpdGhTdHJpbmcudmlldyk7
CiB9CiAKKy8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVudGlmeWlu
ZyB0aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCitjb25zdCBjaGFyIHJhZGl4RGlnaXRzW10g
PSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmlu
ZGV4IDg1ZDRjYjEuLjg4NTBjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCkBAIC00MCw2ICs0MCw3IEBACiAgICAgbWFjcm8odW5kZWZpbmVkKSBc
CiAgICAgbWFjcm8oc3RyaW5nKSBcCiAgICAgbWFjcm8oc3ltYm9sKSBcCisgICAgbWFjcm8oYmln
aW50KSBcCiAgICAgbWFjcm8odHJ1ZSkKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMDMsNiArMTA0
LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdFN0cmluZygpOwogICAgICAg
ICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
U3RyaW5nKCk7CisgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50OgorICAgICAgICAgICAg
cmV0dXJuIGJpZ2ludFN0cmluZygpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggNDA3NWZkNy4uOWY1NzhlOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKKyNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCBhZTUyMTA3Li4zYmZjZjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0y
MDMsNyArMjAzLDYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFBy
aW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwotCiB9CiAKIGlubGluZSBKU1ZhbHVlIFN0cnVj
dHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCmluZGV4
IGRiMTYyYjcuLmFhM2ZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVvZlR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVvZlR5cGUuY3BwCkBAIC01NCw2ICs1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBUeXBlb2ZUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlb2ZUeXBlOjpGdW5jdGlv
bjoKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgIG91dC5wcmludCgiYmlnaW50Iik7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAppbmRleCAz
MzJmYTgxLi45NjQ4NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlb2ZUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9m
VHlwZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIFR5
cGVvZlR5cGUgewogICAgIFVuZGVmaW5lZCwKKyAgICBCaWdJbnQsCiAgICAgQm9vbGVhbiwKICAg
ICBOdW1iZXIsCiAgICAgU3RyaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IGIyMDA4NTcuLjU5N2RjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkpT
QVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQmln
SW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTI4MCw2ICsyODEsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzZXRJdGVyYXRvclN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBtYXBJdGVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTTWFw
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBiaWdJ
bnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogCiAgICAgc2VudGluZWxTZXRCdWNrZXQuc2V0KCp0aGlzLCBKU1NldDo6
QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKICAgICBzZW50aW5lbE1hcEJ1Y2tl
dC5zZXQoKnRoaXMsIEpTTWFwOjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYjU1NGIzNS4uY2M1NDBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zODgsNiArMzg4LDcgQEAgcHVibGljOgogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gc2V0SXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
bWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmlnSW50U3RydWN0
dXJlOwogCiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwog
ICAgIFN0cm9uZzxKU0NlbGw+IHNlbnRpbmVsU2V0QnVja2V0OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE1OGMxYmIuLmE2NDJhODMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxNy0xMS0yOSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0Jp
Z0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTExLTI4ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGFkZCBh
biBvcHRpb24gdG8gZHVtcCB0ZXN0IHJlc3VsdHMgdG8gYSBqc29uIGZpbGUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCmluZGV4IGRkNTcxZTEuLjYwM2M0ZDAgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwxMCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMg
KyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFi
bGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJs
ZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3Bl
Y2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyAr
IE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>328228</attachid>
            <date>2017-12-02 05:16:25 -0800</date>
            <delta_ts>2017-12-02 05:16:25 -0800</delta_ts>
            <desc>Benchmarks</desc>
            <filename>benchmarks.txt</filename>
            <type>text/plain</type>
            <size>100054</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIFRhaWxCZW5jaCwgTWljcm9iZW5jaG1hcmtzLCBhbmQgU2l4U3BlZWQgb24g
Q2Fpb3MtTWFjQm9vay1Qcm8gKE1hY0Jvb2tQcm8xMiwxKS4KClZNcyB0ZXN0ZWQ6CiJiYXNlbGlu
ZSIgYXQgL1VzZXJzL2NhaW9saW1hL29wZW5fcHJvamVjdHMvV2ViS2l0L1dlYktpdEJhc2VsaW5l
QnVpbGQvUmVsZWFzZS9qc2MKImNoYW5nZXMiIGF0IC9Vc2Vycy9jYWlvbGltYS9vcGVuX3Byb2pl
Y3RzL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL2pzYwoKQ29sbGVjdGVkIDcgc2FtcGxlcyBw
ZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDcgVk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFyay4gRW1p
dHRlZCBhIGNhbGwgdG8gZ2MoKSBiZXR3ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMuClVzZWQgMSBi
ZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBWTSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBVc2VkIHRo
ZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRpbWUoKSBmdW5jdGlvbiB0byBnZXQgbWljcm9zZWNvbmQt
bGV2ZWwKdGltaW5nLiBSZXBvcnRpbmcgYmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3aXRoIDk1
JSBjb25maWRlbmNlIGludGVydmFscyBpbiBtaWxsaXNlY29uZHMuCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAg
ICAgICAgICAgIGNoYW5nZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApT
dW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuODk1MCstMC40MTgxICAgICAgICAgICAgNS44NDc0Ky0wLjMzNTAgICAgICAgIAog
ICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjUy
NTYrLTAuMjExMiAgICAgPyAgICAgIDUuNTY4NistMC4xNzIxICAgICAgICA/CiAgIDNkLXJheXRy
YWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzcwOCstMC44MjM2
ICAgICAgICAgICAgNi4zMjA2Ky0wLjY5OTYgICAgICAgIAogICBhY2Nlc3MtYmluYXJ5LXRyZWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg1OTErLTAuMDk4NyAgICAgPyAgICAg
IDIuOTI1NCstMC4xMjQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzMnggc2xvd2VyCiAgIGFjY2Vz
cy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTE0MistMC45
NDU5ICAgICA/ICAgICAgOS40OTQwKy01LjIxNjEgICAgICAgID8gbWlnaHQgYmUgMS4yNjM1eCBz
bG93ZXIKICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4wNzkwKy0wLjA1MzggICAgID8gICAgICAzLjEzNzcrLTAuMTg4NCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxOTF4IHNsb3dlcgogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjE3MTErLTAuMTcxNyAgICAgPyAgICAgIDQuMTkzMCstMC4xOTAz
ICAgICAgICA/CiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEuNjI0MSstMC4yMjQ4ICAgICAgICAgICAgMS41OTQzKy0wLjA4MjcgICAgICAgICAg
bWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4wMjM4Ky0wLjQxNTUgICAgICAgICAgICAzLjc2MjQrLTAu
NDEzMCAgICAgICAgICBtaWdodCBiZSAxLjA2OTV4IGZhc3RlcgogICBiaXRvcHMtYml0d2lzZS1h
bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYxMDgrLTAuMDI1NiAgICAgPyAg
ICAgIDIuNjM2MistMC4wNDcxICAgICAgICA/CiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTU3OSstMC42MjYyICAgICAgICAgICAgNC4zMTMz
Ky0wLjU1MzIgICAgICAgICAgbWlnaHQgYmUgMS4wNTY3eCBmYXN0ZXIKICAgY29udHJvbGZsb3ct
cmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zOTczKy0wLjA4MDUgICAg
ID8gICAgICAzLjUzOTgrLTAuMTYwMSAgICAgICAgPyBtaWdodCBiZSAxLjA0MTl4IHNsb3dlcgog
ICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjEz
OTMrLTAuMTkxNiAgICAgPyAgICAgIDUuMjUxMCstMC4zMDk2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIxN3ggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNTAzNistMC4xNDYzICAgICAgICAgICAgMy40ODc0Ky0wLjE2MjkgICAgICAg
IAogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjkzNTMrLTAuNTAxMSAgICAgICAgICAgIDMuNjkxMystMC4xNjYzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY2MXggZmFzdGVyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAuNjA1OSstMS4zMzQ3ICAgICAgICAgICAxMC4zMDU2Ky0xLjMxOTMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjkxeCBmYXN0ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zNTA5Ky0wLjMyNDUgICAgICAgICAgICA2LjIy
NzArLTAuMjA0OCAgICAgICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3RlcgogICBtYXRoLWNvcmRp
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjYwMTIrLTAuMDkxNSAg
ICAgICAgICAgIDMuNTUxMystMC4wOTkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MHggZmFzdGVy
CiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
MzQ5MistMC4xMTEzICAgICA/ICAgICAgNC4zOTQzKy0wLjE4NDkgICAgICAgID8gbWlnaHQgYmUg
MS4wMTA0eCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi40MzA2Ky0wLjA1NTggICAgICAgICAgICAyLjQxOTkrLTAuMDg3NCAgICAg
ICAgCiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDguMTE2OSstMC4xNzY2ICAgICAgICAgICAgOC4xMDMwKy0wLjI0MjkgICAgICAgIAogICBzdHJp
bmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjYyNDMrLTAu
MDQ5MiAgICAgPyAgICAgIDYuMTY0NCstMS4xMTU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk2MHgg
c2xvd2VyCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuMDg3MistMC4xMzYzICAgICA/ICAgICAgNy40MDgwKy0wLjY4MjQgICAgICAgID8gbWln
aHQgYmUgMS4wNDUzeCBzbG93ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMS4wNTEwKy0wLjg1NjkgICAgICAgICAgIDEwLjQ2NTgrLTAuNTc1
NSAgICAgICAgICBtaWdodCBiZSAxLjA1NTl4IGZhc3RlcgogICBzdHJpbmctdW5wYWNrLWNvZGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjY3MDIrLTAuNjc1NSAgICAgPyAgICAg
MjQuMzA4MSstMS4wOTUyICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3MHggc2xvd2VyCiAgIHN0cmlu
Zy12YWxpZGF0ZS1pbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjk1NSstMC4w
OTgxICAgICA/ICAgICAgNi45NjkxKy0wLjMyMjkgICAgICAgID8gbWlnaHQgYmUgMS4wNDA5eCBz
bG93ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUuOTE1MCstMC4wNTgxICAgICA/ICAgICAgNi4wMDMwKy0wLjE3OTcgICAgICAgID8gbWln
aHQgYmUgMS4wMTQ5eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgY2hhbmdlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkxvbmdTcGlkZXI6CiAgIDNkLWN1
YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MTQuNjAyNSstMTgu
NjY1MSAgICA/ICAgIDk0Mi4xNjY4Ky0xMTguMzgyMSAgICAgID8gbWlnaHQgYmUgMS4wMzAxeCBz
bG93ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDY0Ny40MTM2Ky0xMDMuNTQ5MiAgID8gICAgNzAzLjkxMzkrLTE5OS40NDUzICAgICAgPyBtaWdo
dCBiZSAxLjA4NzN4IHNsb3dlcgogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTYyLjM0MTArLTkuNDMwMiAgICAgPyAgICA1NjYuMzUzNistMTEuOTY1
MSAgICAgICA/CiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDExNzAuODQzMistMjEuNTYxMSAgICA/ICAgMTM0Ni43MjYxKy00NzkuMzkwMiAgICAgID8g
bWlnaHQgYmUgMS4xNTAyeCBzbG93ZXIKICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwNC4xNTI0Ky0xNS4xMDI3ICAgICAgICAgMjk3LjczOTMrLTYu
MTA0NSAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBhY2Nlc3MtbmJvZHkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTY3LjYxMDErLTE0LjQyODcgICAgPyAg
ICA1NjguNzcxOSstMTkuMjc4NCAgICAgICA/CiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MjAuOTU2NCstMjAuMzM1MiAgICAgICAgIDUxOS43MzQ3
Ky0xOS42OTkyICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQwLjk2OTkrLTEuNjUyNCAgICAgPyAgICAgNDEuODQyNistMi40NTU2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIxM3ggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDguMTk3NCstNi4wMDQwICAgICA/ICAgIDExMi42
ODUxKy02Ljk3MDkgICAgICAgID8gbWlnaHQgYmUgMS4wNDE1eCBzbG93ZXIKICAgYml0b3BzLW5z
aWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2NC4yMjI2Ky0yMC4yMDA5
ICAgID8gICAgNTcyLjQ5ODMrLTIxLjkwNDkgICAgICAgPyBtaWdodCBiZSAxLjAxNDd4IHNsb3dl
cgogICBjb250cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQ3
LjQ2ODIrLTE5LjU3ODYgICAgPyAgICA1NTUuMjE5MSstMTcuMzc1MiAgICAgICA/IG1pZ2h0IGJl
IDEuMDE0Mnggc2xvd2VyCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2NTkuMDczOSstMTEuNjEzNCAgICA/ICAgIDY2My42MDczKy0xNS40MjU3ICAg
ICAgID8KICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDczMi45MzQzKy0xOC4wOTE4ICAgID8gICAgNzUwLjYwMTcrLTIxLjcwOTMgICAgICAgPyBtaWdo
dCBiZSAxLjAyNDF4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNzg4Ljg5NzErLTIwLjkzNjIgICAgPyAgICA4MTYuMzQwMSstOTYuMjI4
NyAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OHggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTUuMDY0NSstMTYuODI0NiAgICAgICAgIDQx
MC4yNDI5Ky0xMS4xMDQzICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAgZGF0ZS1m
b3JtYXQteHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzMi41NjQ2Ky0zNjgu
OTQxNyAgICAgICAgNjk2Ljg0NzYrLTMuNjY2MiAgICAgICAgICBtaWdodCBiZSAxLjE5NDh4IGZh
c3RlcgogICBoYXNoLW1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjAwLjU5MDErLTUuMjkzNyAgICAgICAgICAxOTkuMjI2MistMTEuMDY0NyAgICAgICAKICAgbWF0
aC1jb3JkaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyOS4yMDE1Ky0x
NS4zMzE5ICAgICAgICAgNTIzLjY3NzgrLTE0LjIxODYgICAgICAgICBtaWdodCBiZSAxLjAxMDV4
IGZhc3RlcgogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjg4LjM5ODgrLTYuODQ4MSAgICAgPyAgICAyOTYuOTE2NistNy42MDAwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDI5NXggc2xvd2VyCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0OTkuMDEyMystOS45NTUyICAgICA/ICAgIDUwNC4zMjk3Ky0xNS4y
NTM5ICAgICAgID8gbWlnaHQgYmUgMS4wMTA3eCBzbG93ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyNC4zNTUzKy0xMC40Mjg4ICAgICAgICAg
NTIxLjI1MzgrLTEyLjk3MDMgICAgICAgCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MTQuODY0MistMTQuNDk5NiAgICAgICAgIDQxNC4xMzQwKy0x
MS41NjgwICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTk3Ljk5MzgrLTMuOTgyNCAgICAgICAgICAxOTYuMDQyMistNC4wNjUyICAgICAg
ICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MzAuNTMxMystNS45NTk1ICAgICA/ICAgIDQzNC4yNDk1Ky02LjkxNTYgICAgICAgID8gbWlnaHQg
YmUgMS4wMDg2eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgY2hhbmdlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClY4U3BpZGVyOgogICBjcnlwdG8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjgxMjQrLTAuNTE5MiAg
ICAgPyAgICAgNDguMDU3MCstMS4zNDgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2Vy
CiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODcu
MDg4NistMy44NzY4ICAgICAgICAgICA4MS42MTM2Ky01LjY3NDYgICAgICAgICAgbWlnaHQgYmUg
MS4wNjcxeCBmYXN0ZXIKICAgZWFybGV5LWJveWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0OC42NTUxKy0xLjEyNDMgICAgICAgICAgIDQ3LjcxMDQrLTEuNjUxOCAgICAg
ICAgICBtaWdodCBiZSAxLjAxOTh4IGZhc3RlcgogICByYXl0cmFjZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjkzNjcrLTIuNzE5OSAgICAgPyAgICAgMzkuNjQ2
NistMi4wOTE0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4Mnggc2xvd2VyCiAgIHJlZ2V4cCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODYuODYwOSstMzIuOTY5MyAg
ICAgICAgICA2OC4xODE0Ky0xLjY2NDEgICAgICAgICAgbWlnaHQgYmUgMS4yNzQweCBmYXN0ZXIK
ICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2My4z
NjMwKy0xLjYwMzEgICAgICAgICAgIDYyLjQ5MjgrLTQuNjExNyAgICAgICAgICBtaWdodCBiZSAx
LjAxMzl4IGZhc3RlcgogICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQ1LjIwNTArLTEuMTMwMiAgICAgPyAgICAgNDYuMDM1NystMS4xNzkzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE4NHggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDU2LjQyMjcrLTIuNDY2MCAgICAgICAgICAgNTQuNTg1
NystMC42Mjc0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzN3ggZmFzdGVyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAg
ICAgICAgICAgICAgIGNoYW5nZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApPY3RhbmU6CiAgIGVuY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4xODAwNystMC4wMDU0MyAgICA/ICAgICAwLjIzMzE3Ky0wLjEyNDY0ICAgICAgID8g
bWlnaHQgYmUgMS4yOTQ5eCBzbG93ZXIKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjE3MzcxKy0wLjEwMjYxICAgID8gICAgIDMuMjA0NDUrLTAu
MDc1OTQgICAgICAgPwogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgIDAuMTUwNTMrLTAuMDA3MjUgICAgICAgICAgMC4xNDY5OSstMC4wMDU0MyAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI0MHggZmFzdGVyCiAgIGVhcmxleSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzI2MystMC4wMDc2MSAgICAgICAgICAwLjMzMTU4
Ky0wLjAwNTM4ICAgICAgIAogICBib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuODg1MjArLTAuMTE3MTEgICAgICAgICAgNS44MjY2MCstMC4xMjE4OSAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEwMXggZmFzdGVyCiAgIG5hdmllci1zdG9rZXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICAgNS4wOTIwNystMC4xNDIxNiAgICA/ICAgICA1LjEw
NDU0Ky0wLjE1MTg2ICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAwLjg5ODg4Ky0wLjAyNzAyICAgID8gICAgIDAuOTAwNTArLTAuMDIy
MDIgICAgICAgPwogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgy
ICAgICAgIDAuMTEyMzIrLTAuMDAzMDEgICAgPyAgICAgMC4xMjk0MCstMC4wNDQxMCAgICAgICA/
IG1pZ2h0IGJlIDEuMTUyMXggc2xvd2VyCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDIgICAgICAgMC40Mzk0OCstMC4wMTQ3MSAgICA/ICAgICAwLjQ0NzE2Ky0w
LjAxODE2ICAgICAgID8gbWlnaHQgYmUgMS4wMTc1eCBzbG93ZXIKICAgcmVnZXhwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDIyLjIxNTU2Ky0wLjgzMzI3ICAgICAg
ICAgMjEuOTU5OTkrLTAuODA3NTAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4IGZhc3RlcgogICBw
ZGZqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgNTEuNzM1OTEr
LTAuODQ0NDMgICAgPyAgICA1MS43NTEzMCstMS4yMDIzNCAgICAgICA/CiAgIG1hbmRyZWVsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDEwMC4yMjE5OCstNzQuMDI3ODUg
ICAgICAgIDYwLjM1MDMwKy0xLjM5NjY1ICAgICAgICAgbWlnaHQgYmUgMS42NjA3eCBmYXN0ZXIK
ICAgZ2JlbXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDQyLjY4
NDQzKy0wLjcyNjY2ICAgICAgICAgNDIuMTgxMjgrLTEuNDk0NDEgICAgICAgICBtaWdodCBiZSAx
LjAxMTl4IGZhc3RlcgogICBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNTc2NzYrLTAuMDE1MjcgICAgICAgICAgMC41NzYyNystMC4wMTI3NyAgICAg
ICAKICAganF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
Ljk4MTYxKy0wLjE4MzgwICAgICAgICAgIDcuOTY3MTIrLTAuMTQ1MzEgICAgICAgCiAgIGJveDJk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAxMC45Nzg4MistMC4z
NzQwNCAgICAgICAgIDEwLjk2NDY2Ky0wLjIxMjU2ICAgICAgIAogICB6bGliICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAzODQuODM4NjMrLTExLjQzMTIzICAgICAg
IDM3OS43MjU2MCstOC41MjkwNiAgICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIHR5
cGVzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDkzMC4xODE4OCst
MjUuNzczNDQgICAgICAgOTIzLjYxNDU0Ky0xNC43OTQ0MSAgICAgIAoKICAgPGdlb21ldHJpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQwMDUwKy0wLjI2MTA4ICAg
ICAgICAgIDYuMzE5OTcrLTAuMTYwMjIgICAgICAgICBtaWdodCBiZSAxLjAxMjd4IGZhc3RlcgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZWxpbmUgICAgICAgICAgICAgICAgICBjaGFuZ2VzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEyMS43MjYrLTMuNjA5ICAgICAgPyAgICAgMTUxLjg5OCstODQu
NTAwICAgICAgICA/IG1pZ2h0IGJlIDEuMjQ3OXggc2xvd2VyCiAgIGF1ZGlvLWJlYXQtZGV0ZWN0
aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLjc2NSstMC4zMTEgICAgICA/ICAg
ICAgNDMuMjgxKy0wLjQ5MSAgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgYXVk
aW8tZGZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjYuNzMzKy01
LjkzMSAgICAgID8gICAgIDEyOC4wOTQrLTMuODk0ICAgICAgICAgPyBtaWdodCBiZSAxLjAxMDd4
IHNsb3dlcgogICBhdWRpby1mZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMS4xMzgrLTEuMDU1ICAgICAgICAgICAgIDMwLjc0NystMC41MjYgICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEyN3ggZmFzdGVyCiAgIGF1ZGlvLW9zY2lsbGF0b3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUyLjIxNCstMS44NjAgICAgICA/ICAgICAgNTIuNjIxKy0xLjY5
OCAgICAgICAgID8KICAgaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjUuNTk5Ky0xLjA4MSAgICAgID8gICAgICA2Ni42ODYrLTIuNzE2ICAgICAgICAg
PyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3MS4wOTUrLTMuNzIzICAgICAgPyAgICAgIDcyLjA4Mist
My44NjAgICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2VyCiAgIGltYWdpbmctZ2F1c3Np
YW4tYmx1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzLjkzOSstNi4xMTAgICAgICAg
ICAgICAgNzkuMzU4Ky00LjE3MiAgICAgICAgICAgbWlnaHQgYmUgMS4wNTc3eCBmYXN0ZXIKICAg
anNvbi1wYXJzZS1maW5hbmNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIuMTQz
Ky0xLjM4MiAgICAgID8gICAgICA0My41MzQrLTEuODAyICAgICAgICAgPyBtaWdodCBiZSAxLjAz
MzB4IHNsb3dlcgogICBqc29uLXN0cmluZ2lmeS10aW5kZXJib3ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNC41MDErLTEuNjAwICAgICAgPyAgICAgIDI0LjU1MSstMS40MTEgICAgICAgICA/
CiAgIHN0YW5mb3JkLWNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0
LjY3NCstMi45NjkgICAgICAgICAgICAgNDMuMjIwKy0xLjQ5NiAgICAgICAgICAgbWlnaHQgYmUg
MS4wMzM2eCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWNjbSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzcuODYwKy0xLjgzMiAgICAgID8gICAgICA0MS4wNTgrLTcuNDU1ICAgICAg
ICAgPyBtaWdodCBiZSAxLjA4NDV4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8tcGJrZGYyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3NC4wMzUrLTIuNTg0ICAgICAgPyAgICAgIDkzLjk0
MCstNDguMjg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMjY4OXggc2xvd2VyCiAgIHN0YW5mb3JkLWNy
eXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAgICAgICAgIDI0LjQwNystMS4yNDUgICAg
ICAgICAgICAgMjMuODczKy0wLjI4NyAgICAgICAgICAgbWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIK
CiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYw
LjIwMistMS4zNDIgICAgICA/ICAgICAgNjMuOTI1Ky03LjExNCAgICAgICAgID8gbWlnaHQgYmUg
MS4wNjE4eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgY2hhbmdlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClRhaWxCZW5jaDoKICAgbi1ib2R5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkxMC4xMDk3Ky0xNy43ODIzICAg
ID8gICAgOTIxLjU3NzErLTE3Ljc0MDcgICAgICAgPyBtaWdodCBiZSAxLjAxMjZ4IHNsb3dlcgog
ICBtZXJnZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQyLjk1
MDMrLTE3LjEyNjMgICAgPyAgICA3NjIuNTQ5MSstMTY3LjUyNDIgICAgICA/IG1pZ2h0IGJlIDEu
MTg2MHggc2xvd2VyCiAgIG1lcmdlLXNvcnQtY3BzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNzYuOTYzNSstMi42MzA0ICAgICA/ICAgICA3Ny41MzMwKy0xLjc5MDIgICAgICAg
ID8KICAgYmYtaW50ZXJwcmV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQx
MC4xMTg4Ky02MC4wMTY2ICAgICAgICAgMzk5LjU0OTErLTIwLjE2NTAgICAgICAgICBtaWdodCBi
ZSAxLjAyNjV4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDM2Ny45Mjc0Ky0xMi43NjYwICAgID8gICAgMzgyLjUxOTgrLTIyLjI1NzMg
ICAgICAgPyBtaWdodCBiZSAxLjAzOTd4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAg
ICBjaGFuZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTWljcm9iZW5j
aG1hcmtzOgogICBhYmMtZm9yd2FyZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI4Ljk4NjArLTIuMzk0MiAgICAgPyAgICAgMzEuMzY5NSstNS4xMDAxICAgICAgICA/IG1p
Z2h0IGJlIDEuMDgyMnggc2xvd2VyCiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAg
ICAgICAgICAgICAgICAgICAgMzkuMjk2NCstNC40MTg4ICAgICAgICAgICAzNS44NDE3Ky0xLjA4
NjkgICAgICAgICAgbWlnaHQgYmUgMS4wOTY0eCBmYXN0ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2Fy
ZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAyNy45MzU2Ky0wLjc3NzkgICAgID8gICAg
IDM3LjcxMjUrLTE2LjQ2NzAgICAgICAgPyBtaWdodCBiZSAxLjM1MDB4IHNsb3dlcgogICBhYmMt
c2ltcGxlLWZvcndhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjQxNzcrLTEu
NjI0NSAgICAgPyAgICAgMjguNjUxMistMS40NDA2ICAgICAgICA/CiAgIGFiYy1za2lwcHktbG9v
cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMjA0NistMS4zMzI2ICAgICAg
ICAgICAyNC44Nzc0Ky0xLjM1MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMTMyeCBmYXN0ZXIKICAg
YWJzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xNTkw
Ky0wLjA0MTIgICAgID8gICAgICAzLjE3NDIrLTAuMTI4OSAgICAgICAgPwogICBhZGFwdC10by1k
b3VibGUtZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjgwMDQrLTIuMTA3MSAg
ICAgICAgICAgMTUuODIzMystMC43NjI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYxN3ggZmFzdGVy
CiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgIDEu
Mzk3MSstMC4yMTE4ICAgICAgICAgICAgMS4yODMyKy0wLjAzNzAgICAgICAgICAgbWlnaHQgYmUg
MS4wODg4eCBmYXN0ZXIKICAgYWxsb2NhdGUtYmlnLW9iamVjdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy41MzU0Ky0xLjAxNTUgICAgICAgICAgICAzLjA0MzYrLTAuMDYwOSAgICAg
ICAgICBtaWdodCBiZSAxLjE2MTZ4IGZhc3RlcgogICBhcHBseS1ub3QtYXBwbHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjUzNTErLTAuMDQ5MCAgICAgPyAgICAgIDUuNjkz
MystMC4yMzgxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4Nnggc2xvd2VyCiAgIGFyZ3VtZW50cy1u
YW1lZC1hbmQtcmVmbGVjdGl2ZSAgICAgICAgICAgICAgICAgICAgIDcuNzAzMCstMC4xMzI2ICAg
ICA/ICAgICAgNy43MzYzKy0wLjExNjggICAgICAgID8KICAgYXJndW1lbnRzLW91dC1vZi1ib3Vu
ZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4xMjAwKy0wLjUwNjQgICAgID8gICAgIDEy
LjIyNzMrLTAuNDI3NSAgICAgICAgPwogICBhcmd1bWVudHMtc3RyaWN0LW1vZGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ2LjY3MjYrLTAuNTkyNiAgICAgPyAgICAgNDYuNjc1OSstMC40
MDU5ICAgICAgICA/CiAgIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuNjE2MSstMC4yMTgwICAgICAgICAgICAgNi40NjExKy0wLjE2ODcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjQweCBmYXN0ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS4yNjU0Ky0wLjAzMTkgICAgICAgICAgICAxLjIzOTcr
LTAuMDI2MyAgICAgICAgICBtaWdodCBiZSAxLjAyMDd4IGZhc3RlcgogICBhcnJheS1hY2Nlc3Mt
cG9seW1vcnBoaWMtc3RydWN0dXJlICAgICAgICAgICAgICAgICA0LjU1MDQrLTAuMDcyMiAgICAg
ICAgICAgIDQuNTEwNistMC4xMDcyICAgICAgICAKICAgYXJyYXktbm9uYXJyYXktcG9seW1vcmhw
aWMtYWNjZXNzICAgICAgICAgICAgICAgICAyMy4xMTA0Ky0wLjc3MDMgICAgICAgICAgIDIyLjU0
NjcrLTAuMzAzNSAgICAgICAgICBtaWdodCBiZSAxLjAyNTB4IGZhc3RlcgogICBhcnJheS1wcm90
b3R5cGUtZXZlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjkwMzUrLTAuNzE4NyAg
ICAgPyAgICAgMzQuNzQ2MystMi4wODk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0OXggc2xvd2Vy
CiAgIGFycmF5LXByb3RvdHlwZS1mb3JFYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMu
MzAwNSstMC40MDI4ICAgICAgICAgICAzMy4wMjI2Ky0wLjc2MDEgICAgICAgIAogICBhcnJheS1w
cm90b3R5cGUtbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjk2MTQrLTUuMzY0
OCAgICAgPyAgICAgNTEuODg1NistMjguNjY5NCAgICAgICA/IG1pZ2h0IGJlIDEuMjM2NXggc2xv
d2VyCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzkuNTcyNistMC42MDcxICAgICA/ICAgICA0MC4wNDg4Ky0wLjgzMTggICAgICAgID8gbWlnaHQg
YmUgMS4wMTIweCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAgICAg
ICAgICAgICAgICAgICAzOS41NzYwKy0xLjgzMjkgICAgICAgICAgIDM4LjMxODYrLTEuOTcwOCAg
ICAgICAgICBtaWdodCBiZSAxLjAzMjh4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtc29tZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2LjQ2NTQrLTUuNDgzOSAgICAgICAgICAgMzMu
NTU5MistMS4xMzk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg2NnggZmFzdGVyCiAgIGFycmF5LXB1
c2gtMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjYuNTMwNystMy4xMzcy
ICAgICA/ICAgIDEyOC4xOTMzKy0yLjgxNzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTMxeCBzbG93
ZXIKICAgYXJyYXktcHVzaC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
MC4xODkzKy01LjQ5MjUgICAgICAgICAgMTA4LjExNjgrLTIuMTY0NCAgICAgICAgICBtaWdodCBi
ZSAxLjAxOTJ4IGZhc3RlcgogICBhcnJheS1wdXNoLTIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTM1LjAzMjMrLTU0LjgyMTAgICAgICAgICAxMTUuNDQwNistMy4xMDEyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMTY5N3ggZmFzdGVyCiAgIGFycmF5LXB1c2gtMyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMjYuMDk0NCstNTAuMzUzNSAgICAgICAgIDIwNi44
NTY3Ky01LjkyNjAgICAgICAgICAgbWlnaHQgYmUgMS4wOTMweCBmYXN0ZXIKICAgYXJyYXktc3Bs
aWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy4xMzU3Ky0xLjkyMTkg
ICAgID8gICAgIDI3LjE1ODYrLTEuNTM1NSAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1h
ZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ4ODMrLTAuMjA2OCAgICAgICAgICAg
IDQuNDAxNystMC4yNDI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5N3ggZmFzdGVyCiAgIGFycmF5
LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAgICAgICAgICAgIDMuOTIwOSstMC4x
NDk1ICAgICA/ICAgICAgNC4wNDU1Ky0wLjA5NzAgICAgICAgID8gbWlnaHQgYmUgMS4wMzE4eCBz
bG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4yNzQwKy0wLjMxNzcgICAgID8gICAgICA1LjUxODkrLTAuMzQ0NCAgICAgICAgPyBtaWdo
dCBiZSAxLjA0NjR4IHNsb3dlcgogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjc0NzQrLTAuMTIyOSAgICAgPyAgICAgIDMuODEyOCstMC4xMDY1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NXggc2xvd2VyCiAgIGFycmF5LXdpdGgtaW50MzItYWRk
LXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMzkwNSstMi43NTU3ICAgICAgICAgICAg
Ni41OTM5Ky0wLjM0MTggICAgICAgICAgbWlnaHQgYmUgMS4xMjA4eCBmYXN0ZXIKICAgYXJyYXkt
d2l0aC1pbnQzMi1vci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgMy44OTc5Ky0wLjA3
MTAgICAgID8gICAgICA0LjAwNzMrLTAuMTE3NyAgICAgICAgPyBtaWdodCBiZSAxLjAyODF4IHNs
b3dlcgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODMuOTM2
MistNTIuNzU0MSAgICAgICAgICA2Mi4wMjQ1Ky0yLjc3NTEgICAgICAgICAgbWlnaHQgYmUgMS4z
NTMzeCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAg
ICAgICAgICAyMC4zOTA2Ky0wLjkwMjcgICAgICAgICAgIDIwLjI1NDcrLTAuMjc0MyAgICAgICAg
CiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDQu
MzExNystMC4wOTQ1ICAgICA/ICAgICAgNC42MjAwKy0wLjMzNDQgICAgICAgID8gbWlnaHQgYmUg
MS4wNzE1eCBzbG93ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmct
bGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2Mi44MDAwKy0wLjc3NjQgICAgICAgICAgIDYxLjYzMzcrLTEuNDg4OCAgICAgICAgICBt
aWdodCBiZSAxLjAxODl4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9u
Zy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyOC45NDIyKy0wLjU2OTAgICAgID8gICAgIDI5LjQwNTMrLTAuNjQwOSAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNjB4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXkt
YWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDIwLjA5NDcrLTAuNDUyNCAgICAgICAgICAgMjAu
MDAwMystMC4yNzU4ICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jICAgICAg
ICAgICAgICAgICAgICAgICAxOS40NzY1Ky0xLjEyNzEgICAgICAgICAgIDE4LjgxOTYrLTAuNDIy
OSAgICAgICAgICBtaWdodCBiZSAxLjAzNDl4IGZhc3RlcgogICBhcnJvd2Z1bmNpdG9uLWRpcmVj
dC1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAxLjM1MTArLTAuMDU5NiAgICAgICAgICAg
IDEuMzQzNistMC4wNDExICAgICAgICAKICAgYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1l
bnRzICAgICAgICAgICAgICAgICAgMC45MjI1Ky0wLjA3MTIgICAgID8gICAgICAwLjkzNzkrLTAu
MDM4MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjd4IHNsb3dlcgogICBhcnJvd2Z1bmN0aW9uLWNh
bGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAgIDE2LjczODMrLTAuODcyNSAgICAgICAg
ICAgMTYuMzg4MCstMC4zNDg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxNHggZmFzdGVyCiAgIGFy
cm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QgICAgICAgICAgICAgICAgIDguMzgxNSst
MC43NjQ1ICAgICA/ICAgICAgOC40OTcyKy0wLjk3NzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTM4
eCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uICAgICAgICAgICAgICAg
ICAgICAxNC4yOTQzKy0wLjM3OTYgICAgICAgICAgIDE0LjA4NTgrLTAuMTg1MCAgICAgICAgICBt
aWdodCBiZSAxLjAxNDh4IGZhc3RlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjM3NDIrLTUuMDkxMSAgICAgICAgICAgIDkuMjkzMSstMC4y
MzM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMjIzOXggZmFzdGVyCiAgIGFzbWpzX2Jvb2xfYnVnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjIwMistMC4wNzQ4ICAgICA/ICAg
ICAgNi43MDk5Ky0wLjEzMzggICAgICAgID8gbWlnaHQgYmUgMS4wMTM2eCBzbG93ZXIKICAgYXNz
aWduLWN1c3RvbS1zZXR0ZXItcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAxNC40MDI3Ky0w
Ljc0OTMgICAgID8gICAgIDE1LjMxODYrLTEuMjI2NCAgICAgICAgPyBtaWdodCBiZSAxLjA2MzZ4
IHNsb3dlcgogICBhc3NpZ24tY3VzdG9tLXNldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMwLjAwMzIrLTEuNzQzOCAgICAgICAgICAgMjkuOTQzMCstMS4zNTgxICAgICAgICAKICAg
YmFzaWMtc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44NTc1
Ky0wLjYyNzEgICAgID8gICAgICA5LjA3OTIrLTAuODEyNCAgICAgICAgPyBtaWdodCBiZSAxLjAy
NTB4IHNsb3dlcgogICBiaWctaW50LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjYxOTArLTMuMTA0OSAgICAgICAgICAgIDQuMjA4MCstMC4xNTY0ICAgICAgICAg
IG1pZ2h0IGJlIDEuMzM1M3ggZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wtb3It
dW5kZWZpbmVkICAgICAgICAgICAzOTIuMzEzOCstOC45MTQxICAgICAgICAgIDM4Ny44OTg5Ky0x
MS43OTU5ICAgICAgICAgbWlnaHQgYmUgMS4wMTE0eCBmYXN0ZXIKICAgYmlnc3dpdGNoLWluZGly
ZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAgICA4OC41NzA4Ky04LjE3ODIgICAgICAg
ICAgIDg1LjkzMjkrLTIuMjgwMiAgICAgICAgICBtaWdodCBiZSAxLjAzMDd4IGZhc3RlcgogICBi
aWdzd2l0Y2gtaW5kaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4LjQwMzAr
LTQ0LjcyMzAgICAgICAgICAgNTAuMjc3NSstMC42NjA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMzYw
NXggZmFzdGVyCiAgIGJpZ3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjYuODExMSstMC4yMTI5ICAgICA/ICAgICAyNi44NDYwKy0wLjQ3MzAgICAgICAgID8K
ICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42
ODYxKy0wLjAxNjggICAgID8gICAgICAzLjc0MDcrLTAuMDkwMSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNDh4IHNsb3dlcgogICBib3VuZC1mdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEyLjc2NjArLTAuNDc2MSAgICAgICAgICAgMTIuNDA5MSstMC4zNTg1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI4OHggZmFzdGVyCiAgIGJvdW5kLWZ1bmN0aW9uLWNvbnN0cnVjdGlv
bi1wZXJmb3JtYW5jZSAgICAgICAgICAgODkuNTU4NCstMS42MDM1ICAgICA/ICAgICA5Mi44ODg1
Ky0yLjQ4NzkgICAgICAgID8gbWlnaHQgYmUgMS4wMzcyeCBzbG93ZXIKICAgYnJhbmNoLWZvbGQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zNDgxKy0wLjMxMzUgICAg
ICAgICAgICA1LjIxMTErLTAuMjMwNiAgICAgICAgICBtaWdodCBiZSAxLjAyNjN4IGZhc3Rlcgog
ICBicmFuY2gtb24tc3RyaW5nLWFzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIDEzLjY0
MDMrLTEuMTQ1NSAgICAgPyAgICAgMTMuODY5MystMC42NDgzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE2OHggc2xvd2VyCiAgIGJ1Zy0xNTM0MzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuMzM3NistMS40ODkyICAgICAgICAgICAgMy44Mzc4Ky0wLjM0MTEgICAgICAg
ICAgbWlnaHQgYmUgMS4xMzAyeCBmYXN0ZXIKICAgYnVpbGQtbGFyZ2Utb2JqZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0My4wNTk1Ky0wLjk3NDIgICAgID8gICAgIDUyLjg0NjMr
LTE5LjQ2MDYgICAgICAgPyBtaWdodCBiZSAxLjIyNzN4IHNsb3dlcgogICBieS12YWwtZ2VuZXJp
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjgyNzErLTAuMTQ1NCAgICAg
PyAgICAgIDIuODQwNSstMC4yNDY0ICAgICAgICA/CiAgIGNhbGwtb3Itbm90LWNhbGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuMTgyOSstMS4wODA2ICAgICAgICAgICAzNi43
MzI4Ky0xLjI4MjMgICAgICAgICAgbWlnaHQgYmUgMS4wMTIzeCBmYXN0ZXIKICAgY2FsbC1zcHJl
YWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS42ODg5Ky05LjI3Mjcg
ICAgICAgICAgIDMxLjI3MDMrLTEuMTg0NyAgICAgICAgICBtaWdodCBiZSAxLjE0MTN4IGZhc3Rl
cgogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMx
LjIzNjkrLTEuNjk4OSAgICAgICAgICAgMzAuMDEzOCstMS4wNjkzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQwOHggZmFzdGVyCiAgIGNhbGwtdXNpbmctc3ByZWFkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAuOTQ2NSstMC42NTM1ICAgICA/ICAgICAxMC45ODAxKy0wLjc3NDEgICAg
ICAgID8KICAgY2FwdHVyZWQtYXNzaWdubWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC42MjkyKy0wLjAxOTcgICAgID8gICAgICAwLjYzNjQrLTAuMDI1NCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTZ4IHNsb3dlcgogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1Ljg1MTIrLTAuMTM4NyAgICAgICAgICAgIDUuODQ4MistMC4xMjky
ICAgICAgICAKICAgY2VsbC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy41MDQ4Ky0wLjEwOTUgICAgID8gICAgICAzLjYwODQrLTAuMjY5MSAgICAgICAgPyBt
aWdodCBiZSAxLjAyOTZ4IHNsb3dlcgogICBjZmctc2ltcGxpZnkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjYxMTUrLTAuMDg4MCAgICAgICAgICAgIDMuNTUyMystMC4w
NDQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIGNoYWluLWdldHRlci1hY2Nl
c3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNjEyNistMC40NTAyICAgICA/ICAg
ICAxMy44MzA5Ky0xLjE4NDEgICAgICAgID8gbWlnaHQgYmUgMS4wMTYweCBzbG93ZXIKICAgY21w
ZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC43MDkyKy0w
LjMxNjggICAgID8gICAgIDExLjEyOTkrLTAuOTI0OCAgICAgICAgPyBtaWdodCBiZSAxLjAzOTN4
IHNsb3dlcgogICBjb25jYXQtYXBwZW5kLW9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjI0NjErLTAuNjcyOSAgICAgPyAgICAgMTAuNjA5MCstMC45NzI4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM1NHggc2xvd2VyCiAgIGNvbnN0YW50LXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuNDIzMistMC4xNjgxICAgICA/ICAgICAgNS43MzgzKy0wLjcz
MTEgICAgICAgID8gbWlnaHQgYmUgMS4wNTgxeCBzbG93ZXIKICAgY29udGlndW91cy1hcnJheS10
by1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAzNC42NjAzKy0xLjQ5MTUgICAgICAgICAg
IDM0LjUwODQrLTAuMjY5MyAgICAgICAgCiAgIGNyZWF0ZS1sb3RzLW9mLWZ1bmN0aW9ucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkuNDc5MSstMC41NDI5ICAgICA/ICAgICAgOS40ODc3Ky0w
LjU3OTcgICAgICAgID8KICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy4xMTU1Ky0wLjE0NjggICAgID8gICAgICAzLjQ2NDgrLTAuODU0NSAgICAg
ICAgPyBtaWdodCBiZSAxLjExMjF4IHNsb3dlcgogICBjc2UtbmV3LWFycmF5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM1MzQrLTAuNDYyMiAgICAgPyAgICAgIDQuNjg5
OCstMi42ODI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMzk4NXggc2xvd2VyCiAgIGN1c3RvbS1zZXR0
ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAuODc1NSstMC4xNjM5ICAg
ICAgICAgICAgMC43OTU4Ky0wLjAyMjcgICAgICAgICAgbWlnaHQgYmUgMS4xMDAxeCBmYXN0ZXIK
ICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICA3OS4z
Mzg3Ky0yOS4wNDc4ICAgICAgICAgIDY2Ljg4NDArLTEuODcwNSAgICAgICAgICBtaWdodCBiZSAx
LjE4NjJ4IGZhc3RlcgogICBkZWxheS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9kZSAgICAg
ICAgICAgICAgICA4LjM3ODQrLTAuNzQ4MyAgICAgICAgICAgIDguMjg0MistMC41MjUzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDExNHggZmFzdGVyCiAgIGRlbHRhLWJsdWUtdHJ5LWNhdGNoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNjkuMTQ2NystMi41NDk2ICAgICAgICAgICA2Ny4xMTM0
Ky0yLjA2NjkgICAgICAgICAgbWlnaHQgYmUgMS4wMzAzeCBmYXN0ZXIKICAgZGVsdGFibHVlLWZv
ci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1My4zMDI0Ky0xLjk4MDEgICAg
ICAgICAgIDUxLjAyNjgrLTIuNzkyMyAgICAgICAgICBtaWdodCBiZSAxLjA0NDZ4IGZhc3Rlcgog
ICBkZWx0YWJsdWUtdmFyYXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjY4
NTkrLTEuMTExMSAgICAgPyAgICAgMjkuNTkyOCstNi42NDcwICAgICAgICA/IG1pZ2h0IGJlIDEu
MjQ5NHggc2xvd2VyCiAgIGRlc3RydWN0dXJpbmctYXJndW1lbnRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDMuODcwOCstMS44NzM1ICAgICA/ICAgICA0NC4yNDk0Ky0yLjI1OTAgICAgICAg
ID8KICAgZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24gICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43
OTc5Ky0wLjA1NTIgICAgICAgICAgICAwLjc4MTArLTAuMDQwNiAgICAgICAgICBtaWdodCBiZSAx
LjAyMTZ4IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Ljc0NjkrLTAuNjQzNSAgICAgICAgICAgIDUuNTM1MCstMC4yNTgxICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM4M3ggZmFzdGVyCiAgIGRmZy1pbnRlcm5hbC1mdW5jdGlvbi1jYWxs
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuOTgzNystMC4wNDcyICAgICAgICAgICAgMC45NzU5
Ky0wLjAxMzMgICAgICAgIAogICBkZmctaW50ZXJuYWwtZnVuY3Rpb24tY29uc3RydWN0ICAgICAg
ICAgICAgICAgICAgICAwLjk3MjYrLTAuMDA4MiAgICAgPyAgICAgIDEuMjcwMCstMC42OTg2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMzA1OHggc2xvd2VyCiAgIGRmZy1pbnRlcm5hbC1mdW5jdGlvbi1u
b3QtaGFuZGxlZC1jYWxsICAgICAgICAgICAgIDcuOTEzOCstMC4xNTc5ICAgICA/ICAgICAgNy45
NzIyKy0wLjMwODAgICAgICAgID8KICAgZGZnLWludGVybmFsLWZ1bmN0aW9uLW5vdC1oYW5kbGVk
LWNvbnN0cnVjdCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjY0MTArLTAuMDQ5MyAgICAgPyAgICAgIDIuMzUxMistMS43MzI3ICAgICAg
ICA/IG1pZ2h0IGJlIDEuNDMyOHggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtZ2V0Ynl2YWwg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzE1NSstMC4wOTk2ICAgICAgICAgICAgMS4zMDk0
Ky0wLjA1NjMgICAgICAgIAogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjQ4MTgrLTAuMjI5NiAgICAgPyAgICAgIDcuNjU2OCstMC4yNTQyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIzNHggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJp
ZGRlbi1sZW5ndGggICAgICAgICAgICAgICAgIDcuNTU2NCstMC4zMTk5ICAgICA/ICAgICAgNy44
OTc3Ky0wLjU4ODkgICAgICAgID8gbWlnaHQgYmUgMS4wNDUyeCBzbG93ZXIKICAgZGlyZWN0LWFy
Z3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjkzOTUrLTAuNDE2NCAgICAgICAg
ICAgIDguMjQzOCstMC4zNjI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg0NHggZmFzdGVyCiAgIGRp
cmVjdC1jYWxsLWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAgICAgICAgNzcuNzU1Myst
My4yOTUyICAgICAgICAgICA3NC40MzUyKy0xLjc5MDUgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ2
eCBmYXN0ZXIKICAgZGlyZWN0LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3MS4yMDQ2Ky0yLjM3MTMgICAgID8gICAgIDc0Ljk2ODkrLTkuMjY3MiAgICAgICAgPyBt
aWdodCBiZSAxLjA1Mjl4IHNsb3dlcgogICBkaXJlY3QtY29uc3RydWN0LWFyaXR5LW1pc21hdGNo
ICAgICAgICAgICAgICAgICAgMTE5LjA2OTcrLTMuMjg1OCAgICAgICAgICAxMTguNjg0NystMy4z
ODYxICAgICAgICAKICAgZGlyZWN0LWNvbnN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyNS40OTM0Ky02NC40NDk5ICAgICAgICAgMTAxLjMzMTcrLTIuMjY0NSAgICAgICAg
ICBtaWdodCBiZSAxLjIzODR4IGZhc3RlcgogICBkaXJlY3QtdGFpbC1jYWxsLWFyaXR5LW1pc21h
dGNoICAgICAgICAgICAgICAgICAgIDgxLjczMzcrLTEuNjM5NCAgICAgPyAgICAgODMuMTUzMSst
Mi40NDk3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NHggc2xvd2VyCiAgIGRpcmVjdC10YWlsLWNh
bGwtaW5saW5lZC1jYWxsZXItYXJpdHktbWlzbWF0Y2ggICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ny4wOTQzKy0yLjk2NzYgICAgICAgICAg
IDc2LjQ5NDMrLTEuMzE5MiAgICAgICAgCiAgIGRpcmVjdC10YWlsLWNhbGwtaW5saW5lZC1jYWxs
ZXIgICAgICAgICAgICAgICAgICAgNzIuNzA4NCstOC4xNjA1ICAgICAgICAgICA2OC4zMTM2Ky0y
LjA0MzQgICAgICAgICAgbWlnaHQgYmUgMS4wNjQzeCBmYXN0ZXIKICAgZGlyZWN0LXRhaWwtY2Fs
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3My4xMTc2Ky0yLjI3NTIgICAgID8g
ICAgIDczLjIyOTkrLTEuOTI0MSAgICAgICAgPwogICBkaXYtYm9vbGVhbi1kb3VibGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg4ODMrLTAuMDIxNSAgICAgPyAgICAgIDUuMDc1
MCstMC4zMjg0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4Mnggc2xvd2VyCiAgIGRpdi1ib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNTgwNystMC4wOTI0ICAg
ICA/ICAgICAgOC42MTcxKy0wLjEyMTAgICAgICAgID8KICAgZG9udC1jb25mdXNlLXN0cnVjdHVy
ZXMtZnJvbS1kaWZmZXJlbnQtZXhlY3V0YWJsZS1hcy1wb2x5LXByb3RvICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjAuMjA3MystMy4yMzE3
ICAgICAgICAgICA1OC4xMTQ3Ky0yLjU1MTMgICAgICAgICAgbWlnaHQgYmUgMS4wMzYweCBmYXN0
ZXIKICAgZG91YmxlLWFycmF5LXRvLXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
OC4xMjczKy0yLjY1NTUgICAgID8gICAgIDc4LjcxOTYrLTIuMjAwMCAgICAgICAgPwogICBkb3Vi
bGUtZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICA2LjEyMjMrLTAu
MTM0MCAgICAgPyAgICAgIDYuMTkxOCstMC4yMTMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3gg
c2xvd2VyCiAgIGRvdWJsZS1wb2xsdXRpb24tZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuODY4NistMC4wOTQ0ICAgICAgICAgICAgNy44NTU3Ky0wLjA1NDYgICAgICAgIAogICBk
b3VibGUtcG9sbHV0aW9uLXB1dGJ5b2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICA0LjUxMjkr
LTAuMjE2NCAgICAgPyAgICAgIDUuNDMzMCstMi4zNzQyICAgICAgICA/IG1pZ2h0IGJlIDEuMjAz
OXggc2xvd2VyCiAgIGRvdWJsZS1yZWFsLXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjcuNDA1OCstMS40NDQ4ICAgICA/ICAgICAyNy45MTE3Ky0xLjA1MjggICAgICAgID8g
bWlnaHQgYmUgMS4wMTg1eCBzbG93ZXIKICAgZG91YmxlLXRvLWludDMyLXR5cGVkLWFycmF5LW5v
LWlubGluZSAgICAgICAgICAgICAgMy4zOTE2Ky0wLjA3NTkgICAgID8gICAgICAzLjQ0NzgrLTAu
MDg1MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjV4IHNsb3dlcgogICBkb3VibGUtdG8taW50MzIt
dHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAzLjEzODMrLTAuMjgxOSAgICAgPyAg
ICAgIDMuMjM5MCstMC4zMTk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyMXggc2xvd2VyCiAgIGRv
dWJsZS10by1pbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDkuNzIzNist
NS4xMjE0ICAgICAgICAgIDE0OC4yMzkyKy01LjkzMTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTAw
eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAg
ICAgICAgNC4xNjMzKy0xLjA3ODQgICAgICAgICAgICAzLjUwOTUrLTAuMDU3OCAgICAgICAgICBt
aWdodCBiZSAxLjE4NjN4IGZhc3RlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAzLjIwNzkrLTAuMTUxMyAgICAgICAgICAgIDMuMDUzOSstMC4w
NzM1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwNXggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmpl
Y3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNzMyMSstMC41MzM0ICAgICA/ICAg
ICAyNS45NDg0Ky0zLjgxMTkgICAgICAgID8gbWlnaHQgYmUgMS4wNDkyeCBzbG93ZXIKICAgZWxp
ZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAyNC44ODU4Ky0z
LjA5MDQgICAgID8gICAgIDI4LjIwNjUrLTYuMDEzNiAgICAgICAgPyBtaWdodCBiZSAxLjEzMzR4
IHNsb3dlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAg
ICAgIDIxLjM3MjYrLTAuNDgzMiAgICAgICAgICAgMjAuODk5OCstMC4yNTE3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyNnggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjIuNzQyMystMC4zMDc2ICAgICAgICAgICAyMi43MjA3Ky0xLjEw
OTUgICAgICAgIAogICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjAzNjMrLTAuMTAwMiAgICAgPyAgICAgIDcuMTUxMistMC4yOTA0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE2M3ggc2xvd2VyCiAgIGVtc2NyaXB0ZW4tY3ViZTJoYXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjguNzYzMystMC44OTg5ICAgICA/ICAgICAyOS40MDQzKy0x
Ljk3ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMjIzeCBzbG93ZXIKICAgZXZhbC1jYWNoZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi42MjU3Ky0xLjM2NDEgICAgID8g
ICAgIDIyLjYzNDgrLTAuNjQ5OSAgICAgICAgPwogICBldmFsLWNvZGUtZnRsLXJlZW50cnkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM0Ljc1NzMrLTEuMzUxOCAgICAgPyAgICAgMzYuMTEz
MSstMS42ODIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5MHggc2xvd2VyCiAgIGV2YWwtY29kZS1m
dGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuMjg2MSstMi4yODAzICAg
ICAgICAgICA1My4wNDc5Ky0xLjc2NzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBmYXN0ZXIK
ICAgZXZhbC1jb21wdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC40
ODk0Ky0xLjM5MjkgICAgID8gICAgIDMwLjgzNjMrLTEuNTk0NyAgICAgICAgPyBtaWdodCBiZSAx
LjAxMTR4IHNsb3dlcgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUtYXJncyAgICAgICAgICAgICAg
ICAgICAgICAgIDI4Ljc4NjgrLTEuMTQ1MiAgICAgPyAgICAgMjguOTgyNistMC43NzcyICAgICAg
ICA/CiAgIGV2YWwtbm90LWV2YWwtY29tcHV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzAuNzc4NCstMy43MjExICAgICAgICAgICAyOS4yNjU1Ky0xLjQyNzYgICAgICAgICAgbWlnaHQg
YmUgMS4wNTE3eCBmYXN0ZXIKICAgZXhpdC1sZW5ndGgtb24tcGxhaW4tb2JqZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAxNS4xMDIxKy01LjA5MTggICAgICAgICAgIDEyLjczNzArLTAuNDIxNiAg
ICAgICAgICBtaWdodCBiZSAxLjE4NTd4IGZhc3RlcgogICBleHRlcm5hbC1hcmd1bWVudHMtZ2V0
Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAxLjQ2MDArLTAuMDkxNyAgICAgICAgICAgIDEu
NDQ1NSstMC4wNDY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMHggZmFzdGVyCiAgIGV4dGVybmFs
LWFyZ3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDIuNDUzOSstMC4wNjE5
ICAgICA/ICAgICAgMi40NjU5Ky0wLjExMzIgICAgICAgID8KICAgZmFrZS1pdGVyYXRvcnMtdGhh
dC10aHJvdy13aGVuLWZpbmlzaGVkICAgICAgICAgIDEwMC41MDk1Ky01LjMwMDEgICAgID8gICAg
MTAwLjgwMjUrLTQuMTcwOSAgICAgICAgPwogICBmaXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZh
ci1pbmRleCAgICAgICAgICAgICAgICAyLjE5MTMrLTAuMjc0MCAgICAgICAgICAgIDIuMDg1NCst
MC4wNDI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwOHggZmFzdGVyCiAgIGZpeGVkLXR5cGVkLWFy
cmF5LXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNzAwMSstMC4wNTk4ICAgICA/
ICAgICAgMi40MDEzKy0xLjQ3NDYgICAgICAgID8gbWlnaHQgYmUgMS40MTI1eCBzbG93ZXIKICAg
RmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yMDky
Ky0wLjI5MzAgICAgICAgICAgICA2LjEzMTcrLTAuMTM4OSAgICAgICAgICBtaWdodCBiZSAxLjAx
MjZ4IGZhc3RlcgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAg
ICAgICAgIDUwLjE2MjQrLTMuMTQ2MCAgICAgPyAgICAgNTIuNDExNistMS4xNjIyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDQ0OHggc2xvd2VyCiAgIEZsb2F0NjRBcnJheS1hbGxvYy1sb25nLWxpdmVk
ICAgICAgICAgICAgICAgICAgICAgODguOTQzNCstMS41ODI0ICAgICAgICAgICA4Ni41OTg5Ky0y
LjUzNDIgICAgICAgICAgbWlnaHQgYmUgMS4wMjcxeCBmYXN0ZXIKICAgRmxvYXQ2NEFycmF5LXRv
LUludDE2QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICA1OS43NjY3Ky0wLjYwNzMgICAgID8g
ICAgIDU5LjkxMTMrLTEuMzE0MyAgICAgICAgPwogICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjM5MjErLTAuNTg0OSAgICAgPyAgICAgMTUuODA4
MystMC43NzIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3MHggc2xvd2VyCiAgIGZvbGQtZ2V0LWJ5
LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42NjYzKy0xLjUwMzQgICAgICAg
ICAgIDExLjk3ODIrLTEuNzI1NiAgICAgICAgICBtaWdodCBiZSAxLjA1NzR4IGZhc3RlcgogICBm
b2xkLWdldC1ieS1pZC10by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEyLjYxNzMr
LTUuMDg4OSAgICAgICAgICAgMTAuMzA5OCstMS45Mzk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMjIz
OHggZmFzdGVyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0ICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcu
NjQ1MystMS4zMDQwICAgICAgICAgICAgNy40MjI5Ky0xLjA4NjcgICAgICAgICAgbWlnaHQgYmUg
MS4wMzAweCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLXBvbHktZ2V0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5LjQyNDArLTQuOTgwMCAgICAgICAgICAgIDguOTI1NystMS43ODQxICAgICAgICAg
IG1pZ2h0IGJlIDEuMDU1OHggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1w
b2x5LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMC43MTQwKy0yLjUyNzMgICAgICAgICAgICA5LjY0OTArLTIuMTk1
OSAgICAgICAgICBtaWdodCBiZSAxLjExMDR4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1v
ZmZzZXQtdG8tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjA1NzcrLTIuMTc4NiAgICAgICAgICAgIDYuNjc2MSst
MS43MjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMjA3MHggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0
LWJ5LW9mZnNldC10by1yZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0LWJ5LW9mZnNldCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjAyMzUr
LTEuNzE5MSAgICAgICAgICAgMTAuOTI0MSstMS4wODMzICAgICAgICAKICAgZm9sZC1wdXQtYnkt
aWQtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgICAgICAgICAgICAxMS42NzQ5Ky0xLjcwOTMgICAg
ID8gICAgIDEyLjA0NjUrLTEuMzgzOCAgICAgICAgPyBtaWdodCBiZSAxLjAzMTh4IHNsb3dlcgog
ICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjY3
NjUrLTEuNzA0NyAgICAgICAgICAgMTIuMjc0NSstMi4wMjI3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMyN3ggZmFzdGVyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0aS1wdXQt
Ynktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTIuOTY3MSstMS40NzA5ICAgICAgICAgICAxMi4xMjA2Ky0xLjU4NzIgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjk4eCBmYXN0ZXIKICAgZm9sZC1wdXQtc3RydWN0dXJlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi43ODA5Ky0yLjA1OTMgICAgID8gICAgICA4LjU5Nzkr
LTEuNjM1NSAgICAgICAgPyBtaWdodCBiZSAxLjI2ODB4IHNsb3dlcgogICBmb3Itb2YtYXJyYXkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjE4MTkrLTEuMDkyNCAgICAg
ICAgICAgMjAuOTIxNystMC43Mjk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNHggZmFzdGVyCiAg
IGZvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAgICAgICAgMTAuMDc4
MistMC42OTczICAgICA/ICAgICAxMC4wOTM5Ky0wLjc5ODkgICAgICAgID8KICAgZm9yLW9mLWl0
ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgNS41MTYwKy0wLjgyMDMg
ICAgICAgICAgICA1LjM0NjErLTAuMjcxMSAgICAgICAgICBtaWdodCBiZSAxLjAzMTh4IGZhc3Rl
cgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICA0
Ljk4NjYrLTAuMTY0NSAgICAgICAgICAgIDQuOTc4NCstMC4xNjU5ICAgICAgICAKICAgZnJlZXpl
LWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4xNTA5Ky0wLjQx
ODAgICAgICAgICAgIDE2LjA5NjQrLTAuNjk1NCAgICAgICAgCiAgIGZyb3VuZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNDU2MistMC4zNjU0ICAgICAgICAg
ICAxMi4wMTk3Ky0wLjA4MTkgICAgICAgICAgbWlnaHQgYmUgMS4wMzYzeCBmYXN0ZXIKICAgZnRs
LWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAgICAgICAgICAgIDEwMi40NjQ0Ky00
LjA4MzMgICAgID8gICAgMTExLjA4OTUrLTIxLjI5NTYgICAgICAgPyBtaWdodCBiZSAxLjA4NDJ4
IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI4LjQzMjUrLTEuMTI1OSAgICAgICAgICAgMjcuNzQ4MSstMS4zMTU4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI0N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRhbmQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNjUuMTAwMistNC43MTY1ICAgICA/ICAgIDE2Ni4wNjEwKy04LjY3
NDAgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLWJpdG9yICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2Mi41NzgwKy00Ljk1MTQgICAgID8gICAgMTY1LjMxMTUrLTQuODQ1MyAgICAgICAg
PyBtaWdodCBiZSAxLjAxNjh4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtYml0eG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTY2LjY0MDErLTcuMDA1NyAgICAgPyAgICAxNjYuODAxMSst
NC44MjUwICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1sc2hpZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxOTkuMTU2NSstNi4wNzA2ICAgICAgICAgIDE5Ni4wNDM2Ky02LjUzOTMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTU5eCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIwMC4zMDY4Ky00LjgxNjIgICAgICAgICAgMTk2LjU4
NzIrLTcuNTI3MyAgICAgICAgICBtaWdodCBiZSAxLjAxODl4IGZhc3RlcgogICBmdGwtcG9seW1v
cnBoaWMtU3RyaW5nRnJvbUNoYXJDb2RlICAgICAgICAgICAgICAgIDU2LjgwNTcrLTUuNTU5MiAg
ICAgICAgICAgNTQuMDU3NSstMy40MTUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwOHggZmFzdGVy
CiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzku
OTY0NystNC40ODE1ICAgICA/ICAgIDE4My4zNjUxKy03LjQxNDcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTg5eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIxNi40MjkzKy02LjE5MTMgICAgICAgICAgMjE0LjgxODMrLTUuNzQyNiAgICAg
ICAgCiAgIGZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTAuMTI2NistMC4zMjAyICAgICA/ICAgICAxMC4zNzU3Ky0wLjIxMDQgICAgICAgID8gbWlnaHQg
YmUgMS4wMjQ2eCBzbG93ZXIKICAgZnVuY3Rpb24tZG90LWFwcGx5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4wMDgwKy0wLjA1NzcgICAgID8gICAgICAzLjA1ODkrLTAuMDk3NCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNjl4IHNsb3dlcgogICBmdW5jdGlvbi10ZXN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU0OTIrLTAuMDg4MiAgICAgICAgICAgIDMu
NTIzNCstMC4wMzMwICAgICAgICAKICAgZnVuY3Rpb24td2l0aC1ldmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1Ni44ODgzKy0xLjUyMTggICAgICAgICAgIDUzLjg0OTArLTIuMTQ2
OCAgICAgICAgICBtaWdodCBiZSAxLjA1NjR4IGZhc3RlcgogICBnY3NlLXBvbHktZ2V0LWxlc3Mt
b2J2aW91cyAgICAgICAgICAgICAgICAgICAgICAgIDE4LjMzNjUrLTAuNTE4MiAgICAgICAgICAg
MTcuNzI1MistMC4zODAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NXggZmFzdGVyCiAgIGdjc2Ut
cG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguNzM2NystMS4w
ODQwICAgICA/ICAgICAxOS4xMDI1Ky0wLjkyMjUgICAgICAgID8gbWlnaHQgYmUgMS4wMTk1eCBz
bG93ZXIKICAgZ2NzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC45MDgyKy0wLjIzMjAgICAgICAgICAgICA0LjgyMzArLTAuMjIwMyAgICAgICAgICBtaWdo
dCBiZSAxLjAxNzd4IGZhc3RlcgogICBnZW5lcmF0b3ItY3JlYXRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjM1MTUrLTAuNDUwMiAgICAgICAgICAgIDEuMTE3NistMC4wMjM4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMjA5M3ggZmFzdGVyCiAgIGdlbmVyYXRvci1maWIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMDc4OSstMC42MTA1ICAgICA/ICAgICAy
MC40MTI5Ky0wLjcxMzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTY2eCBzbG93ZXIKICAgZ2VuZXJh
dG9yLWZ1bmN0aW9uLWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yMTkzKy0wLjI1
MTYgICAgID8gICAgICA1LjI1ODkrLTAuMjUzNCAgICAgICAgPwogICBnZW5lcmF0b3Itc3Vuc3Bp
ZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICA2LjA5OTErLTAuMTA1OSAgICAgPyAg
ICAgIDYuMTk0MSstMC4yMDUyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Nnggc2xvd2VyCiAgIGdl
bmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMgICAgICAgICAgICAgICAgICAgICAxMjYuOTI0NCst
OS4yOTIzICAgICAgICAgIDExNS4xODU4Ky0yMi4xNDIwICAgICAgICAgbWlnaHQgYmUgMS4xMDE5
eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRp
b24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMjEzOCstMC4wNzAyICAgICA/ICAgICAgMy4yNDQ4Ky0wLjExNTQgICAgICAg
ID8KICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41
ODA2Ky0wLjIyMjQgICAgID8gICAgICA1Ljk4OTArLTAuMzA4MiAgICAgICAgPyBtaWdodCBiZSAx
LjA3MzJ4IHNsb3dlcgogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAg
ICAgICAgICAgICAyLjQ0NDUrLTAuMDMwNyAgICAgPyAgICAgIDIuNDU0NystMC4wMzA5ICAgICAg
ICA/CiAgIGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAg
IDQuNzU5MystMC4yNTEyICAgICAgICAgICAgNC42MjgzKy0wLjIwMDQgICAgICAgICAgbWlnaHQg
YmUgMS4wMjgzeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXByb3RvLW9yLXNlbGYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOS42NTUzKy0wLjM2NjAgICAgID8gICAgICA5LjY3NjcrLTAuNDcyNCAg
ICAgICAgPwogICBnZXQtYnktaWQtcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjk4NTYrLTAuMTc2NCAgICAgICAgICAgIDMuOTA0MistMC4xOTEzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDIwOXggZmFzdGVyCiAgIGdldC1ieS1pZC1zZWxmLW9yLXByb3RvICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDk4MystMC41OTY1ICAgICA/ICAgICAgOS44NjIy
Ky0wLjU3ODcgICAgICAgID8gbWlnaHQgYmUgMS4wMzgzeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC1v
dXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xNDkxKy0wLjEzNjggICAg
ICAgICAgICA2LjA4OTIrLTAuMTMwNiAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmct
Ymltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zMjE2Ky0wLjg3
MTIgICAgID8gICAgICA0LjM2NDArLTEuNjkzNyAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgt
c3RyaW5nLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4wOTA3Ky0zLjEz
NTEgICAgICAgICAgICA5LjUxOTkrLTEuMjc5NSAgICAgICAgICBtaWdodCBiZSAxLjE2NTB4IGZh
c3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTU1
MCstMC4wMzA0ICAgICAgICAgICAgMi41NDkzKy0wLjAyODAgICAgICAgIAogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjgwMzcrLTEuNzU4NCAg
ICAgPyAgICAgIDguMDgxOCstMS42MTQxICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1Nnggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTMu
NDQ1OSstMS42OTIyICAgICAgICAgICAxMS4yNDU4Ky0xLjc4MjIgICAgICAgICAgbWlnaHQgYmUg
MS4xOTU2eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1xdWFkbW9ycGhpYy1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzYwNystMC40MTA5ICAgICA/ICAgICAg
NC44NTgzKy0wLjUwMjggICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBzbG93ZXIKICAgZ2V0LWJ5
LXZhbC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMy4yNzA4Ky0xLjM3
MjkgICAgICAgICAgIDEyLjgzMzcrLTEuNzkwNCAgICAgICAgICBtaWdodCBiZSAxLjAzNDF4IGZh
c3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUt
ZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuNzQyMSstMC40NjI3ICAgICA/ICAgICAgMy44NDIwKy0wLjM5
MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjY3eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5
bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjMwMCstMS4xMzk4
ICAgICA/ICAgICAxNS41NzEzKy01Ljg0NTMgICAgICAgID8gbWlnaHQgYmUgMS4yMzI5eCBzbG93
ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjgzMzAr
LTAuNjU4OCAgICAgICAgICAgIDIuNTgyNCstMC4wOTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDk3
MHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVsaW1p
bmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTIuNjM3OCstMC40NTM4ICAgICAgICAgICAxMS40NzY2Ky0wLjcyODMgICAgICAgICAg
bWlnaHQgYmUgMS4xMDEyeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1v
ci1zZWxmICAgICAgICAgICAgICAxMi4wODg1Ky0xLjkyMTggICAgID8gICAgIDEzLjMxOTIrLTMu
NjM5NiAgICAgICAgPyBtaWdodCBiZSAxLjEwMTh4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44
MjE2Ky0wLjQ0MTMgICAgICAgICAgICA0LjY1MjkrLTAuMzk2MyAgICAgICAgICBtaWdodCBiZSAx
LjAzNjJ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAg
ICAgICAgICAgIDEzLjE0NDYrLTIuMzUyNCAgICAgICAgICAgMTIuMzIxNystMi4wNzM1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDY2OHggZmFzdGVyCiAgIGdldF9ieV92YWwtSW50MzJBcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuODM1MCstMC4wNzk1ICAgICA/ICAgICAgMS44OTMz
Ky0wLjE3MDggICAgICAgID8gbWlnaHQgYmUgMS4wMzE3eCBzbG93ZXIKICAgZ2V0X2NhbGxlZV9t
b25vbW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40MjgyKy0xLjEzMzEgICAg
ICAgICAgICAzLjAxNzArLTAuMTMwMCAgICAgICAgICBtaWdodCBiZSAxLjEzNjN4IGZhc3Rlcgog
ICBnZXRfY2FsbGVlX3BvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjYy
NjgrLTAuNDI4NCAgICAgICAgICAgIDkuNTc0NSstMC42MTE0ICAgICAgICAKICAgZ2V0dGVyLW5v
LWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45ODA3Ky0wLjA5MDUg
ICAgID8gICAgICA0LjAwMDYrLTAuMTU5MCAgICAgICAgPwogICBnZXR0ZXItcHJvdG90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc5NTErLTAuMDIyNyAgICAgPyAgICAg
IDUuOTQ4MCstMC4xNjM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2NHggc2xvd2VyCiAgIGdldHRl
ci1yaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgOTguNDI0NistMi4z
NzUyICAgICAgICAgICA5Ni43NDkxKy0yLjM4NDYgICAgICAgICAgbWlnaHQgYmUgMS4wMTczeCBm
YXN0ZXIKICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwNi44MjMxKy00LjQ3MTcgICAgID8gICAgMTE1LjcwNzMrLTM4LjIyMzEgICAgICAgPyBtaWdo
dCBiZSAxLjA4MzJ4IHNsb3dlcgogICBnZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjkxNjcrLTAuNDE2NCAgICAgPyAgICAgIDUuMDIxOCstMC4yNjc1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxNHggc2xvd2VyCiAgIGdsb2JhbC1jb2RlLWZ0bCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIuMzcwMCstMS41NTc1ICAgICAgICAgICA0
MS4xNzY0Ky0wLjc5MTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjkweCBmYXN0ZXIKICAgZ2xvYmFs
LWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4yMzgwKy0xLjA1
ODEgICAgID8gICAgIDE1LjI2OTArLTAuNTM4MiAgICAgICAgPwogICBnbG9iYWwtb2JqZWN0LWFj
Y2Vzcy13aXRoLW11dGF0aW5nLXN0cnVjdHVyZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjUyNjIrLTAuMzkzMSAgICAgICAgICAgIDYu
MjQ2NystMC4xNzAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ0N3ggZmFzdGVyCiAgIGdsb2JhbC12
YXItY29uc3QtaW5mZXItZmlyZS1mcm9tLW9wdCAgICAgICAgICAgICAgIDEuMzEwMistMC4wOTUy
ICAgICAgICAgICAgMS4yMjg4Ky0wLjA3NjMgICAgICAgICAgbWlnaHQgYmUgMS4wNjYyeCBmYXN0
ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MS4wODc4Ky0wLjA1NTkgICAgICAgICAgICAxLjA3NDcrLTAuMDU2MiAgICAgICAgICBtaWdodCBi
ZSAxLjAxMjF4IGZhc3RlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrLWVxdWFsICAgICAgICAgICAg
ICAgICAgICAgICAgIDM1LjQ3MDUrLTE2LjExOTYgICAgICAgICAgMjkuNzY4MSstMi44NTExICAg
ICAgICAgIG1pZ2h0IGJlIDEuMTkxNnggZmFzdGVyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuNzM3NSstMy4wMzg2ICAgICAgICAgICAyOC4x
MDY0Ky0xLjgyMzcgICAgICAgICAgbWlnaHQgYmUgMS4xMjkyeCBmYXN0ZXIKICAgaGFzLW93bi1w
cm9wZXJ0eS1uYW1lLWNhY2hlICAgICAgICAgICAgICAgICAgICAgICA2My4yNDg3Ky0yLjU2MzUg
ICAgID8gICAgIDY1LjcxODQrLTIuMjM3NSAgICAgICAgPyBtaWdodCBiZSAxLjAzOTB4IHNsb3dl
cgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1rZXlzICAgICAgICAgICAgICAgICAgICAgIDM5
LjI4NjArLTIwLjE0NzYgICAgICAgICAgMzEuMTUyNCstMC44NDY5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMjYxMXggZmFzdGVyCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzEuMjIyMCstMC42OTg0ICAgICA/ICAgICAzMS41MjI5Ky0wLjYxNTQgICAg
ICAgID8KICAgSGFzaE1hcC1zdHJpbmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAg
ICAzNS45NjM4Ky0xLjM5MzIgICAgICAgICAgIDMzLjUzOTgrLTEuMjcyMSAgICAgICAgICBtaWdo
dCBiZSAxLjA3MjN4IGZhc3RlcgogICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjE3NTIrLTAuNDIwNCAgICAgICAgICAgIDQuODIwNSstMC4xODky
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDczNnggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3Ry
dWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMTI5NistMC4xOTAwICAgICAgICAgICAgNC4xMDM2Ky0w
LjA5ODYgICAgICAgIAogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVjdHVyZSAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjcxNTUrLTAuMTIwNCAgICAgPyAgICAgIDIuODI2NSstMC4xOTQzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQwOXggc2xvd2VyCiAgIGltcGxpY2l0LWJpZ3N3aXRjaC1pbmRpcmVj
dC1zeW1ib2wgICAgICAgICAgICAgICAgNTkuNjQyMistMC43Mjk3ICAgICA/ICAgICA1OS45NDE5
Ky0wLjk3NzIgICAgICAgID8KICAgaW11bC1kb3VibGUtb25seSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC45NzM5Ky0wLjIyNDQgICAgID8gICAgICA1Ljg0NzArLTEuNjM5NCAg
ICAgICAgPyBtaWdodCBiZSAxLjE3NTV4IHNsb3dlcgogICBpbXVsLWludC1vbmx5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQ1MzArLTAuMDg2NCAgICAgPyAgICAgIDYu
NDg4NistMC4xNDUwICAgICAgICA/CiAgIGltdWwtbWl4ZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMjQ1MCstMC4wOTAxICAgICA/ICAgICAgNS40NzYzKy0wLjI1
NTIgICAgICAgID8gbWlnaHQgYmUgMS4wNDQxeCBzbG93ZXIKICAgaW4tZm91ci1jYXNlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS43MzUzKy0xLjQwNzAgICAgICAgICAg
IDE5LjI0NTcrLTEuMjk4OCAgICAgICAgICBtaWdodCBiZSAxLjAyNTR4IGZhc3RlcgogICBpbi1v
bmUtY2FzZS1mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjI5MDMrLTEu
MjQ3MSAgICAgICAgICAgMTAuMTcxMSstMC45OTk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExN3gg
ZmFzdGVyCiAgIGluLW9uZS1jYXNlLXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuNzQ3OSstMi40NjM0ICAgICAgICAgICAxMC4xNzUyKy0xLjA3MDcgICAgICAgICAgbWln
aHQgYmUgMS4wNTYzeCBmYXN0ZXIKICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS43ODExKy0wLjMyODYgICAgID8gICAgIDEwLjM1NTMrLTAuNDI3
NCAgICAgICAgPyBtaWdodCBiZSAxLjA1ODd4IHNsb3dlcgogICBpbmRleGVkLXByb3BlcnRpZXMt
aW4tb2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICA0LjE2MDUrLTEuNDc5NCAgICAgICAgICAg
IDMuNDczMistMC4xMzU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTk3OXggZmFzdGVyCiAgIGluZmVy
LWNsb3N1cmUtY29uc3QtdGhlbi1tb3Ytbm8taW5saW5lICAgICAgICAgICAgIDQuMTE4NistMC4z
Njg5ICAgICAgICAgICAgMy45Njg0Ky0wLjI4NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMzc4eCBm
YXN0ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdiAgICAgICAgICAgICAgICAgICAg
ICAgOS44MDQzKy0wLjI1NTggICAgID8gICAgICA5LjkxOTMrLTAuMjk4MCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTd4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNj
b3BlLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjMxODMrLTAuNzU5NCAgICAgICAgICAgMTEuMDMyNSstMC4yNjIyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI1OXggZmFzdGVyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjYuNjIzMSstMS4yMDE2ICAgICAgICAgICAyNi4w
ODQ1Ky0wLjM4NjIgICAgICAgICAgbWlnaHQgYmUgMS4wMjA2eCBmYXN0ZXIKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuMDkzNistMS42NTU0ICAgICAgICAg
ICA0NS44MzkwKy0xLjYxNDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjc0eCBmYXN0ZXIKICAgaW5m
ZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAgICAgICAyNi4yNTA2Ky0w
LjMwMDMgICAgID8gICAgIDI3LjE4OTUrLTEuNjg4MSAgICAgICAgPyBtaWdodCBiZSAxLjAzNTh4
IHNsb3dlcgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAg
ICAgICAzLjQwMjcrLTAuMDQ0NSAgICAgPyAgICAgIDMuNDYwOSstMC4xNDUwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE3MXggc2xvd2VyCiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMTM4NSstMC4wODM2ICAgICAgICAgICAgMy4xMzEzKy0wLjA1
MjcgICAgICAgIAogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXRlbi12YXJzICAgICAgICAgICAg
ICAgICAgICA4LjM2NTIrLTAuNTQ2OSAgICAgICAgICAgIDguMTc0MSstMC4yMDQ0ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDIzNHggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUtdHdvLXZh
cnMgICAgICAgICAgICAgICAgICAgIDcuNzA2NystMC4xODE2ICAgICAgICAgICAgNy42OTk1Ky0w
LjEzNjkgICAgICAgIAogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3LjY5OTArLTAuMTIzOSAgICAgICAgICAgIDcuNjgwMCstMC4xOTAyICAgICAg
ICAKICAgaW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAx
NC4xNjIwKy0wLjc1MTUgICAgID8gICAgIDE0LjQ1NzYrLTEuMTQ1OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMDl4IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRzLWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjE4MzYrLTEuNzA1OCAgICAgICAgICAgIDQuMjYxMSstMC4xNjEwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMjE2NXggZmFzdGVyCiAgIGlubGluZS1hcmd1bWVudHMtYWxpYXNl
ZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgIDQuNDIzNCstMC40NTExICAgICAgICAgICAgNC4y
OTcxKy0wLjE5MjggICAgICAgICAgbWlnaHQgYmUgMS4wMjk0eCBmYXN0ZXIKICAgaW5saW5lLWFy
Z3VtZW50cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAgICAgICAgNC4zOTc3Ky0wLjUxMTQg
ICAgID8gICAgICA0LjUxNTkrLTAuMzM3NyAgICAgICAgPyBtaWdodCBiZSAxLjAyNjl4IHNsb3dl
cgogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjUyMDIrLTMuMDE0MCAgICAgICAgICAgIDMuMzU1MystMC4xMzEzICAgICAgICAgIG1pZ2h0IGJl
IDEuMzQ3MnggZmFzdGVyCiAgIGlubGluZWQtcHV0LWJ5LWlkLXRyYW5zaXRpb24gICAgICAgICAg
ICAgICAgICAgICAgMTAuMTI3NystMC40NzQyICAgICA/ICAgICAxMC4zNzQ4Ky0wLjUxMzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjQ0eCBzbG93ZXIKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgt
c3RyaW5nLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1NS44ODA3Ky0xLjIzNzcgICAgICAgICAgIDU1Ljg3MzArLTIuMjUx
OCAgICAgICAgCiAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTYu
NTk5NCstMi40NzA5ICAgICAgICAgICA1Ni40MDU4Ky0xLjEzMjggICAgICAgIAogICBpbnN0YW5j
ZW9mLWJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjMyMTUrLTAuMzE0
NCAgICAgPyAgICAgMjQuOTQxMistMS4xOTU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1NXggc2xv
d2VyCiAgIGludC1vci1vdGhlci1hYnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAg
IDkuMDI2MCstMC4xNzMyICAgICA/ICAgICAgOS41OTAxKy0wLjc2ODIgICAgICAgID8gbWlnaHQg
YmUgMS4wNjI1eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZh
bCAgICAgICAgICAgICAxNi4zOTQ3Ky0wLjY4NTYgICAgICAgICAgIDE2LjI5MDYrLTAuNjY2OSAg
ICAgICAgCiAgIGludC1vci1vdGhlci1hZGQtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAg
ICAgIDQuNjk3NystMC4xNjc3ICAgICAgICAgICAgNC42MjY3Ky0wLjA2MDggICAgICAgICAgbWln
aHQgYmUgMS4wMTUzeCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi44Mzk0Ky0wLjI0MDYgICAgID8gICAgICA3LjA5MjArLTAuODc3
MSAgICAgICAgPyBtaWdodCBiZSAxLjAzNjl4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItZGl2LXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjcyOTcrLTAuMjMxMyAgICAgPyAgICAg
IDQuODA5NystMC41MDI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2OXggc2xvd2VyCiAgIGludC1v
ci1vdGhlci1tYXgtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDUuMDAyMystMC4x
OTQyICAgICA/ICAgICAgNS44MTk3Ky0xLjgyNjYgICAgICAgID8gbWlnaHQgYmUgMS4xNjM0eCBz
bG93ZXIKICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgNS4yOTU3Ky0wLjMwNTMgICAgID8gICAgICA1LjUyMzUrLTAuNjg3NyAgICAgICAgPyBtaWdo
dCBiZSAxLjA0MzB4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA0LjY0MzkrLTAuMDkwNiAgICAgICAgICAgIDQuNTg2MystMC4wNTQ4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNnggZmFzdGVyCiAgIGludC1vci1vdGhlci1tdWwtdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDcuMDA0MystMC4xNTIxICAgICA/ICAgICAg
Ny4wNjg0Ky0wLjEyODYgICAgICAgID8KICAgaW50LW9yLW90aGVyLW5lZy10aGVuLWdldC1ieS12
YWwgICAgICAgICAgICAgICAgICAyNS44MTgxKy0wLjQ2MzQgICAgID8gICAgIDI2Ljg5NDUrLTEu
Mzc5MiAgICAgICAgPyBtaWdodCBiZSAxLjA0MTd4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbmVn
LXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE1LjM2MTArLTAuNzcwOSAgICAgICAg
ICAgMTUuMjgzNSstMC42MTg2ICAgICAgICAKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1i
eS12YWwgICAgICAgICAgICAgICAgICAgNi41ODI0Ky0wLjEyMjkgICAgICAgICAgICA2LjQ3MDIr
LTAuMTg0MyAgICAgICAgICBtaWdodCBiZSAxLjAxNzN4IGZhc3RlcgogICBpbnQtb3Itb3RoZXIt
c3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjAzOTYrLTIuODkzMSAgICAg
ICAgICAgIDQuODUyNCstMC4xMzQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMjQ0N3ggZmFzdGVyCiAg
IGludC1vdmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjg4
MistMC4xMjAxICAgICAgICAgICAgNS4xNzcwKy0wLjA2NTMgICAgICAgICAgbWlnaHQgYmUgMS4w
MjE1eCBmYXN0ZXIKICAgSW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAg
ICAgICAgICA2MS44ODcxKy0yLjI1OTUgICAgID8gICAgIDYxLjg5OTkrLTEuOTg2NiAgICAgICAg
PwogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDI2
LjMyNzIrLTIuNTUxOSAgICAgICAgICAgMjYuMDUyOCstMi4xNDczICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwNXggZmFzdGVyCiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjMuNjUwNystMS40NTY3ICAgICA/ICAgICAzMy41MDk1Ky0yMi4wMjUzICAg
ICAgID8gbWlnaHQgYmUgMS40MTY4eCBzbG93ZXIKICAgSW50MTZBcnJheS1sb2FkLWludC1tdWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zODE2Ky0wLjA5NjggICAgID8gICAgICAyLjg3
OTErLTEuMjgzMCAgICAgICAgPyBtaWdodCBiZSAxLjIwODl4IHNsb3dlcgogICBJbnQxNkFycmF5
LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDQ4LjgwMTgrLTEuMjY3NyAg
ICAgPyAgICAgNDguOTA3NSstMS4zMTk3ICAgICAgICA/CiAgIGludDMyLWFycmF5LXRvLXN0cmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMuMTM5MystMzMuNjc4NCAgICAgICAgICAz
Ny4wNjIzKy0wLjQ2NjQgICAgICAgICAgbWlnaHQgYmUgMS40MzM4eCBmYXN0ZXIKICAgSW50MzJB
cnJheS1hbGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy40ODczKy0wLjc3
MDIgICAgID8gICAgIDE3LjcyNDgrLTAuOTY5MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMzZ4IHNs
b3dlcgogICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAg
IDY5LjIzODArLTEuNTQ2MyAgICAgPyAgICAgNjkuNDQ5NCstMi4xOTkzICAgICAgICA/CiAgIElu
dDMyQXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMDcyNist
MC4yMDI5ICAgICAgICAgICAgNC45NzEwKy0wLjIxMDQgICAgICAgICAgbWlnaHQgYmUgMS4wMjA0
eCBmYXN0ZXIKICAgSW50MzJBcnJheS1JbnQ4QXJyYXktdmlldy1hbGxvYyAgICAgICAgICAgICAg
ICAgICAxMS45MDczKy0wLjQ3OTIgICAgICAgICAgIDExLjg1ODQrLTAuNDIyNiAgICAgICAgCiAg
IGludDUyLWJhY2stYW5kLWZvcnRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTc4
NystOS42Nzc3ICAgICAgICAgICAgOC42NjgyKy0wLjM0NzUgICAgICAgICAgbWlnaHQgYmUgMS42
MzU3eCBmYXN0ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNi4xNjU5Ky0wLjMwODQgICAgID8gICAgICA2LjMxNzgrLTAuMjc2MiAgICAgICAg
PyBtaWdodCBiZSAxLjAyNDZ4IHNsb3dlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAg
ICAgICAgICAgICAgICAgICAgICAgIDU3LjkzMjYrLTYuMTM3NSAgICAgICAgICAgNTIuNzI2OSst
Mi4wODE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk4N3ggZmFzdGVyCiAgIEludDhBcnJheS1sb2Fk
LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDQuMzU5MistMC4yMTE3ICAgICA/
ICAgICAgNC40MDgwKy0wLjE5NjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTEyeCBzbG93ZXIKICAg
SW50OEFycmF5LWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zNjMw
Ky0wLjEyMjMgICAgICAgICAgICA0LjMwNzgrLTAuMDczMyAgICAgICAgICBtaWdodCBiZSAxLjAx
Mjh4IGZhc3RlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDExLjQ4NDYrLTAuNjY4MyAgICAgICAgICAgMTEuMjg0MystMC42NDU0ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIGludGVnZXItbW9kdWxvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuODY2MSstMC4yNzExICAgICAgICAgICAgMi44MDYxKy0w
LjA4MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgaXMtYXJyYXktZm9yLWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zNTQ0Ky0wLjgxNjUgICAgICAg
ICAgICAzLjAxMDQrLTAuMDI3MyAgICAgICAgICBtaWdodCBiZSAxLjExNDN4IGZhc3RlcgogICBp
cy1hcnJheS1mb3ItbWl4ZWQtY2FzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYzMzYr
LTAuODA1MCAgICAgICAgICAgIDYuMDY2MystMC43MjA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDkz
NXggZmFzdGVyCiAgIGlzLWFycmF5LWZvci1ub24tYXJyYXktb2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgIDIuODU3NSstMC4yMTQyICAgICAgICAgICAgMi43ODcyKy0wLjE3NDYgICAgICAgICAg
bWlnaHQgYmUgMS4wMjUyeCBmYXN0ZXIKICAgaXMtYXJyYXktZm9yLXByb3h5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4xNTI4Ky0wLjE0MjcgICAgID8gICAgICA1LjY1MzYrLTMu
NjQxOCAgICAgICAgPyBtaWdodCBiZSAxLjM2MTR4IHNsb3dlcgogICBpcy1ib29sZWFuLWZvbGQt
dHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQyNzcrLTAuODk1MyAgICAgICAg
ICAgIDQuMDI4OCstMC4wMjc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk5MHggZmFzdGVyCiAgIGlz
LWJvb2xlYW4tZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDIyNist
MC4wMzc4ICAgICA/ICAgICAgMy4wOTkzKy0wLjE5MDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjU0
eCBzbG93ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4z
Njk1Ky0wLjgwMTUgICAgID8gICAgIDEzLjI1NjkrLTAuNTQ2NCAgICAgICAgPyBtaWdodCBiZSAx
LjA3MTd4IHNsb3dlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjI1MDkrLTAuMDk5MiAgICAgICAgICAgIDQuMjExNSstMC4wNjU3ICAgICAg
ICAKICAgaXMtZnVuY3Rpb24tZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My4wMTk2Ky0wLjAzMDIgICAgID8gICAgICAzLjA2OTArLTAuMDMwMSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNjR4IHNsb3dlcgogICBpcy1ub3QtY2VsbC1zcGVjdWxhdGlvbi1mb3ItZW1wdHktdmFs
dWUgICAgICAgICAgIDIyLjk4MDMrLTEuMzM0MyAgICAgICAgICAgMjEuNDQ1NSstMC4zNzA1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDcxNnggZmFzdGVyCiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTgwNistMC4xNTc1ICAgICAgICAgICAgNC4x
MzY5Ky0wLjExODAgICAgICAgICAgbWlnaHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgaXMtbnVtYmVy
LWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wNDI4Ky0wLjA2Mzkg
ICAgID8gICAgICAzLjIyNjUrLTAuNDMzMSAgICAgICAgPyBtaWdodCBiZSAxLjA2MDN4IHNsb3dl
cgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAz
LjA1MjIrLTAuMDQ2OSAgICAgICAgICAgIDMuMDQ1NSstMC4wNjM1ICAgICAgICAKICAgaXMtb2Jq
ZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNreSAgICAgICAgICAgICAgICAgNC4yNjUxKy0wLjA3
OTAgICAgID8gICAgICA0LjI3MTArLTAuMTM5NyAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVs
bC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICA0LjYyNzMrLTAuMTE0MCAgICAgICAg
ICAgIDQuNTY2NystMC4xMzQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzM3ggZmFzdGVyCiAgIGlz
LW9iamVjdC1vci1udWxsLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjE0MSst
MC4zODkwICAgICAgICAgICAgMy4wMjEwKy0wLjA0NzkgICAgICAgICAgbWlnaHQgYmUgMS4wNjM5
eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItZnVuY3Rpb24gICAgICAgICAg
ICAgICAgNC4yNDI0Ky0wLjA5NDggICAgID8gICAgICA0LjI3MjArLTAuMTAwOSAgICAgICAgPwog
ICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjU3MDMrLTAu
NzM5OCAgICAgPyAgICAgMTYuOTY2OSstMTAuNjI2MiAgICAgICA/IG1pZ2h0IGJlIDEuMzQ5OHgg
c2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1mdW5jdGlvbiAgICAgICAgICAgICAg
ICAgIDQuMzU4NSstMC4xNTE2ICAgICA/ICAgICAgNC44MDA4Ky0xLjE3NTggICAgICAgID8gbWln
aHQgYmUgMS4xMDE1eCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWludGVybmFs
LWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguOTQxNistMC42Nzc0ICAgICAgICAgICAgOC45MTUzKy0wLjQxOTUgICAgICAg
IAogICBpcy1zdHJpbmctZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjE5MTIrLTAuMTU4OCAgICAgPyAgICAgIDQuMjA2MSstMC4xMDk5ICAgICAgICA/CiAgIGlzLXN0
cmluZy1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDQ0NSstMC4w
Njk3ICAgICAgICAgICAgMy4wMDk3Ky0wLjA2MTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTE2eCBm
YXN0ZXIKICAgaXMtc3ltYm9sLW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi4zMzU3Ky0yLjA0MjIgICAgICAgICAgICA1LjU2NTArLTAuNjQyMSAgICAgICAgICBtaWdo
dCBiZSAxLjEzODV4IGZhc3RlcgogICBpcy1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjA2MzgrLTAuMDcxMCAgICAgPyAgICAgIDIuMDcxMCstMC4wNjkz
ICAgICAgICA/CiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuODQxMystMC4yMDY0ICAgICAgICAgICAgMy43MTQxKy0wLjEwOTEgICAgICAgICAg
bWlnaHQgYmUgMS4wMzQyeCBmYXN0ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy4wNTg5Ky0wLjA2NjMgICAgID8gICAgICAzLjA2NzYrLTAu
MDkzNCAgICAgICAgPwogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjQ2MTErLTAuMDA3NCAgICAgPyAgICAgIDAuNTczNSstMC4xODg4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMjQzN3ggc2xvd2VyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzA2OCstMC4xMjk2ICAgICAgICAgICAgNC4yMTIz
Ky0wLjA5MjAgICAgICAgICAgbWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgbGFyZ2UtaW50LW5l
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi42ODQ4Ky00LjE5MDEgICAg
ICAgICAgIDE0LjgzOTArLTEuMDM2MiAgICAgICAgICBtaWdodCBiZSAxLjEyNDR4IGZhc3Rlcgog
ICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjA5
ODIrLTAuNzkzOCAgICAgICAgICAgMTIuNTA5NystMC40MDI1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQ3MHggZmFzdGVyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzUuOTA5OSstMS4xNzAzICAgICA/ICAgICAzOC4xOTcwKy00LjUxMTkgICAgICAg
ID8gbWlnaHQgYmUgMS4wNjM3eCBzbG93ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVzLXdhdGNocG9p
bnRzICAgICAgICAgICAgICAgICAgICAyNC44NzY2Ky0wLjc2MTMgICAgID8gICAgIDI4Ljg3ODYr
LTkuODc3OSAgICAgICAgPyBtaWdodCBiZSAxLjE2MDl4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMt
b3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgIDM5LjUyMzQrLTEuMzE2OCAgICAg
PyAgICAgNDAuMjI4OSstMi43NTA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2VyCiAg
IGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMDA2
OCstMS40ODg5ICAgICAgICAgICAyMi4xMjYzKy0wLjM5MzEgICAgICAgICAgbWlnaHQgYmUgMS4w
Mzk4eCBmYXN0ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0NC40NTgyKy0xLjkwODQgICAgID8gICAgIDQ0LjY0NjQrLTEuNjgxNiAgICAgICAg
PwogICBsb2FkLXZhcmFyZ3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIDE0
LjUyMzMrLTEuMzI0NCAgICAgICAgICAgMTQuMjk2OSstMS4xNzYzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE1OHggZmFzdGVyCiAgIGxvY2FsZS1jb21wYXJlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjcuNTU1NSstOC40MDcwICAgICAgICAgICAyNC43OTQyKy0wLjc5NjIgICAg
ICAgICAgbWlnaHQgYmUgMS4xMTE0eCBmYXN0ZXIKICAgbG9naWNhbC1ub3Qtd2VpcmQtdHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41MTM1Ky0wLjE0NzEgICAgID8gICAgICAzLjU2
MDErLTAuMTMzNSAgICAgICAgPyBtaWdodCBiZSAxLjAxMzN4IHNsb3dlcgogICBsb2dpY2FsLW5v
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjMxODkrLTMuODQxNyAg
ICAgICAgICAgIDUuMTQ4NCstMC45NDgxICAgICAgICAgIG1pZ2h0IGJlIDEuMjI3M3ggZmFzdGVy
CiAgIGxvdHMtb2YtZmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEu
NDUzNSstMC40ODE1ICAgICA/ICAgICAxMS41MjQzKy0wLjQxMDkgICAgICAgID8KICAgbWFrZS1p
bmRleGVkLXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wNDY5Ky0wLjUx
NDQgICAgICAgICAgICAzLjg5MDArLTAuMjI3NCAgICAgICAgICBtaWdodCBiZSAxLjA0MDN4IGZh
c3RlcgogICBtYWtlLXJvcGUtY3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0LjIwMjkrLTAuMzM0MyAgICAgICAgICAgIDQuMTQyNCstMC4zNDUyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE0NnggZmFzdGVyCiAgIG1hbnktZm9yZWFjaC1jYWxscyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNTM0MystMC4yOTQ0ICAgICA/ICAgICAgMi41NTA1Ky0wLjEzNjEg
ICAgICAgID8KICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyNC4wMDU4Ky0wLjg1NTUgICAgID8gICAgIDI0LjU2NzUrLTEuMzE3MSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMzR4IHNsb3dlcgogICBtYXAtY29uc3RhbnQta2V5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTgxLjU4NjcrLTQuMzM4NiAgICAgPyAgICAxODQuNTcwOCstNi41
MjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2NHggc2xvd2VyCiAgIG1hcC1mb3ItZWFjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzg3MCstMC4xMDI5ICAgICA/ICAg
ICAgMi40ODA0Ky0wLjI4ODkgICAgICAgID8gbWlnaHQgYmUgMS4wMzkyeCBzbG93ZXIKICAgbWFw
LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4zMTEzKy0w
Ljg4MDcgICAgICAgICAgICA4Ljk4MTYrLTAuNjU1MSAgICAgICAgICBtaWdodCBiZSAxLjAzNjd4
IGZhc3RlcgogICBtYXAtaGFzLWFuZC1zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTY0LjAzNjcrLTMuODUwMiAgICAgICAgICAxNTYuNzk5OSstNS45OTYyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDQ2MnggZmFzdGVyCiAgIG1hcC1oYXMtZ2V0LWNzZS1vcHBvcnR1bml0eSAgICAg
ICAgICAgICAgICAgICAgICAgODcuMzA5MystMi40NjMyICAgICA/ICAgIDExMy43MzU4Ky02NS43
NTA1ICAgICAgID8gbWlnaHQgYmUgMS4zMDI3eCBzbG93ZXIKICAgbWFwLWtleS13ZWxsLXR5cGVk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5OS43MTQ4Ky0yLjgwOTUgICAgID8gICAg
MTAxLjM4MjUrLTQuMTU0NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNjd4IHNsb3dlcgogICBtYXAt
cmVoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA4MTArLTAu
MzczNSAgICAgICAgICAgIDguMDEwMistMC4yNzA1ICAgICAgICAKICAgbWFyc2FnbGlhLWxhcmdl
ci1pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3My4xMDg2Ky0xLjU3MzMgICAgID8g
ICAgIDc1LjA4OTMrLTIuMzg1OCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzF4IHNsb3dlcgogICBt
YXJzYWdsaWEtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjUyNjIr
LTEuODMxNiAgICAgICAgICAgMjAuOTMyMCstMS4xMTY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4
NHggZmFzdGVyCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTYuNTM1MystMC40NjM4ICAgICA/ICAgICAxNi43Nzg3Ky0wLjUyMjEgICAgICAgID8g
bWlnaHQgYmUgMS4wMTQ3eCBzbG93ZXIKICAgbWF0aC10cnVuYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy41MTE5Ky0wLjM5MTcgICAgICAgICAgICA3LjM1NTErLTAu
MTY4NyAgICAgICAgICBtaWdodCBiZSAxLjAyMTN4IGZhc3RlcgogICBtYXRoLXdpdGgtb3V0LW9m
LWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgIDM3LjM1NDIrLTEuNjk0MiAgICAgPyAg
ICAgMzcuNTMwMystMi4zNDY0ICAgICAgICA/CiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDc5NystMC4wNjk0ICAgICAgICAgICAgMy4wNzk2
Ky0wLjEzODcgICAgICAgIAogICBtZWdhbW9ycGhpYy1sb2FkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMyLjMzODErLTIuNTk3NiAgICAgPyAgICAgMzMuNTI1NSstNy4yNTIzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM2N3ggc2xvd2VyCiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguNzY4OCstMC41MDc3ICAgICA/ICAgICAxOS4z
MTQzKy0wLjM0NTIgICAgICAgID8gbWlnaHQgYmUgMS4wMjkxeCBzbG93ZXIKICAgbWluLWJvb2xl
YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xNzM5Ky0wLjA5NzIg
ICAgICAgICAgICAzLjEwNTErLTAuMTE0MCAgICAgICAgICBtaWdodCBiZSAxLjAyMjJ4IGZhc3Rl
cgogICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjE3MDYrLTAuMTI2NyAgICAgICAgICAgIDMuMTA0MistMC4xMTY3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIxNHggZmFzdGVyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuOTcwOCstMC4yMzgwICAgICAgICAgICAgMi44Nzg3Ky0wLjA3NTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzIweCBmYXN0ZXIKICAgbWlzYy1zdHJpY3QtZXEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4yMDQyKy0xLjMzNzcgICAgID8gICAgIDI0Ljk0
OTQrLTEuMDY1MyAgICAgICAgPyBtaWdodCBiZSAxLjAzMDh4IHNsb3dlcgogICBtb2QtYm9vbGVh
bi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjIxODErLTEuOTYzNyAg
ICAgICAgICAgMTEuNDYxOCstMC4zNTYyICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2MHggZmFzdGVy
CiAgIG1vZC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
ODMwNCstMC4xODYyICAgICAgICAgICAgOC43OTQzKy0wLjIwMzYgICAgICAgIAogICBtdWwtYm9v
bGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE4NTUrLTAuMjI0
OCAgICAgICAgICAgIDMuMTAwOSstMC4wOTk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3M3ggZmFz
dGVyCiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMzA5MystMC4zMzIyICAgICAgICAgICAgMy4xMDk4Ky0wLjA2MjQgICAgICAgICAgbWlnaHQg
YmUgMS4wNjQyeCBmYXN0ZXIKICAgbmVnLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4yNTg1Ky0wLjA2ODEgICAgICAgICAgICAzLjIwMjErLTAuMDI5MSAg
ICAgICAgICBtaWdodCBiZSAxLjAxNzZ4IGZhc3RlcgogICBuZWdhdGl2ZS16ZXJvLWRpdmlkZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjU4MzcrLTAuMDI1OSAgICAgPyAgICAgIDAu
NTkwNistMC4wMDg5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOHggc2xvd2VyCiAgIG5lZ2F0aXZl
LXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjE0NistMC4wNTEy
ICAgICAgICAgICAgMC42MDQyKy0wLjAxNTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTczeCBmYXN0
ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC42MTc5Ky0wLjEyNDIgICAgICAgICAgICAwLjYxMTYrLTAuMDY4MyAgICAgICAgICBtaWdodCBi
ZSAxLjAxMDR4IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTYxLjkwODArLTUuMDEzNiAgICAgPyAgICAxNjcuNzE3MystNC42NzEwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM1OXggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItZGVhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAuMDAzMCstMi42MTYxICAgICA/ICAgICA5MC4z
NDU1Ky0yLjE2OTIgICAgICAgID8KICAgbmV3LWFycmF5LWJ1ZmZlci1wdXNoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi44OTkwKy0wLjYzMDEgICAgICAgICAgICA2Ljc5NjIrLTAuNzQy
MCAgICAgICAgICBtaWdodCBiZSAxLjAxNTF4IGZhc3RlcgogICBuZXctYXJyYXktYnVmZmVyLXZl
Y3Rvci1wcm9maWxlICAgICAgICAgICAgICAgICAgIDI0LjQ1MDYrLTAuNDI3MSAgICAgPyAgICAg
MjQuNTE2NistMC43NDY4ICAgICAgICA/CiAgIG5ldy1hcnJheS1kZWFkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAuMTA0NistMC40MTc4ICAgICAgICAgICAgOS42MTYxKy0w
LjM3MDMgICAgICAgICAgbWlnaHQgYmUgMS4wNTA4eCBmYXN0ZXIKICAgbmV3LWFycmF5LXB1c2gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MDcxKy0wLjE5NzEgICAgID8g
ICAgICA0Ljg4MzgrLTAuMjg2NCAgICAgICAgPyBtaWdodCBiZSAxLjAzNzV4IHNsb3dlcgogICBu
ZXctZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjUyOTMr
LTEuMzUzNCAgICAgICAgICAgNDAuNTMzNistMC40NzQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0
NnggZmFzdGVyCiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjkuODkxNSstNS44ODEzICAgICAgICAgICAyOC4zMDA1Ky0wLjkzODUgICAgICAgICAg
bWlnaHQgYmUgMS4wNTYyeCBmYXN0ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC45Nzg3Ky0wLjQ4NDIgICAgID8gICAgIDE1LjUwMzkrLTAu
ODU0NiAgICAgICAgPyBtaWdodCBiZSAxLjAzNTF4IHNsb3dlcgogICBudW1iZXItdGVzdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY4NTUrLTAuMDc4MyAgICAgPyAg
ICAgIDMuODQ1MSstMC40MDU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzM3ggc2xvd2VyCiAgIG51
bWJlci10by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9uICAgICAgICAgICAgICAgIDYuMjA2MCst
MC4wMzE4ICAgICA/ICAgICAgNi4yNzg2Ky0wLjE5MTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTE3
eCBzbG93ZXIKICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLWFkZC1lbXB0eSAgICAgICAgICAgICAg
ICAgICAxMS43ODAzKy0zLjM5NTkgICAgICAgICAgICA5Ljg0ODIrLTAuNTgxMyAgICAgICAgICBt
aWdodCBiZSAxLjE5NjJ4IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtYWRkLWluLWxv
b3AgICAgICAgICAgICAgICAgIDEyLjU2NzIrLTAuNTcyNCAgICAgICAgICAgMTIuMTA3NSstMC4y
NzQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MHggZmFzdGVyCiAgIG51bWJlci10by1zdHJpbmct
d2l0aC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNTk5MSstMC40NTA5ICAgICA/ICAg
ICAxMS42OTAzKy0wLjU0NTAgICAgICAgID8KICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LTEwICAgICAgICAgICAgICAgICAgICAgMS42OTM1Ky0wLjA5NjcgICAgICAgICAgICAxLjY1NTYr
LTAuMDI3MSAgICAgICAgICBtaWdodCBiZSAxLjAyMjl4IGZhc3RlcgogICBudW1iZXItdG8tc3Ry
aW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICAgICAgICAgICA2LjA4OTQrLTAuMDkzNCAgICAg
PyAgICAgIDYuMTI0NystMC4xNTUwICAgICAgICA/CiAgIG51bWJlci10by1zdHJpbmctd2l0aC1y
YWRpeCAgICAgICAgICAgICAgICAgICAgICAgMTMuNzY0OSstMC42MDc3ICAgICA/ICAgICAxNC4z
NDY1Ky0xLjIwMjMgICAgICAgID8gbWlnaHQgYmUgMS4wNDIzeCBzbG93ZXIKICAgb2JqZWN0LWFu
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41MTI1Ky0wLjIxNjYg
ICAgID8gICAgICA1LjgzNTYrLTAuOTg0NiAgICAgICAgPyBtaWdodCBiZSAxLjA1ODZ4IHNsb3dl
cgogICBvYmplY3QtY2xvc3VyZS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
Ljk2ODUrLTYuNTExMyAgICAgPyAgICAgMTEuMjM5MistMTAuNjMwNyAgICAgICA/IG1pZ2h0IGJl
IDEuMjUzMnggc2xvd2VyCiAgIG9iamVjdC1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDguMTIzMSstMTYuNTUzNCAgICAgICAgIDEwMC41NTY4Ky0yLjg2NTYgICAg
ICAgICAgbWlnaHQgYmUgMS4wNzUyeCBmYXN0ZXIKICAgb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy1vbi1sYXJnZS1hcnJheSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjU5NjYrLTAuMDMyOCAgICAgPyAgICAgIDEuOTkyMist
MC45NTEyICAgICAgICA/IG1pZ2h0IGJlIDEuMjQ3N3ggc2xvd2VyCiAgIG9iamVjdC1nZXQtb3du
LXByb3BlcnR5LXN5bWJvbHMgICAgICAgICAgICAgICAgICAgMjcuMTgyNSstMC4xNzY2ICAgICA/
ICAgICAyNy44MTExKy0wLjQ3MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjMxeCBzbG93ZXIKICAg
b2JqZWN0LWludC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC44ODkx
Ky0wLjc5NzggICAgICAgICAgIDE0LjA0NjcrLTAuNTY4NCAgICAgICAgICBtaWdodCBiZSAxLjA2
MDB4IGZhc3RlcgogICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2Ljk1MjkrLTAuNjUyMSAgICAgPyAgICAgMjEuNzk0NystMTEuNzk1NCAgICAgICA/
IG1pZ2h0IGJlIDEuMjg1Nnggc2xvd2VyCiAgIG9iamVjdC1pbnQtYW5kLWFycmF5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTUuMjYwNistMC44OTQxICAgICAgICAgICAxNC44Njc5Ky0w
LjcwNDMgICAgICAgICAgbWlnaHQgYmUgMS4wMjY0eCBmYXN0ZXIKICAgb2JqZWN0LWludC1tdWwt
YXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy43NzIxKy0wLjExMTIgICAgID8g
ICAgIDE0LjQ1MzYrLTAuNzA2NCAgICAgICAgPyBtaWdodCBiZSAxLjA0OTV4IHNsb3dlcgogICBv
YmplY3QtaW50LXN1Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjE0MDAr
LTEuMjg0MiAgICAgICAgICAgMTQuNDQ2MCstMC43ODcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4
MHggZmFzdGVyCiAgIG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTcuNzc3MSstMC45NTcxICAgICAgICAgICAxNy4yMDk1Ky0wLjc0MDggICAgICAgICAg
bWlnaHQgYmUgMS4wMzMweCBmYXN0ZXIKICAgb2JqZWN0LWl0ZXJhdGUtc3ltYm9scyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4xNTM5Ky0wLjMzNDEgICAgICAgICAgICAzLjg3NzQrLTAu
MDkxNyAgICAgICAgICBtaWdodCBiZSAxLjA3MTN4IGZhc3RlcgogICBvYmplY3QtaXRlcmF0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU5NzErLTAuMTY0MyAgICAgPyAg
ICAgIDMuNjA3NystMC4wOTM2ICAgICAgICA/CiAgIG9iamVjdC1rZXlzLW1hcC12YWx1ZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTIuNjY0NystMS42NjczICAgICAgICAgICA1MS42NDE2
Ky0xLjk3MDggICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0ZXIKICAgb2JqZWN0LWtleXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi43MjI1Ky0xLjA1MjcgICAg
ID8gICAgIDMxLjIxNzUrLTcuMDM0NCAgICAgICAgPyBtaWdodCBiZSAxLjE2ODJ4IHNsb3dlcgog
ICBvYmplY3QtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjQ1
ODcrLTAuMTU4MiAgICAgICAgICAgIDUuMzQ2NSstMC4xODI1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIxMHggZmFzdGVyCiAgIG9iamVjdC1vciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuNDk1NystMC4xNTEyICAgICAgICAgICAgNS40MTA0Ky0wLjEyMTIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTU4eCBmYXN0ZXIKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS4zNzIzKy0wLjEzMDQgICAgID8gICAgICA1LjQwODAr
LTAuMDkwMyAgICAgICAgPwogICBvYmplY3QtdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjM0NzgrLTAuMDMxMyAgICAgPyAgICAgIDMuNDY4OSstMC4yMzg0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM2Mnggc2xvd2VyCiAgIG9iamVjdC11cnNoaWZ0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTQzNystMC4xMjE3ICAgICAgICAgICAgNS40
NzY4Ky0wLjEyMTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAgb2JqZWN0LXZh
bHVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC41MTg4Ky0yLjI2NjUg
ICAgICAgICAgIDQxLjc2MTIrLTEuMzAxMCAgICAgICAgICBtaWdodCBiZSAxLjA2NjB4IGZhc3Rl
cgogICBvYmplY3QteG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
LjQwOTQrLTAuMTU2NiAgICAgPyAgICAgIDUuNDk3NystMC4wMzkzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE2M3ggc2xvd2VyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3ktdGFrZW4gICAgICAgICAg
ICAgICAgICAgICAxMTUuMTc1OSstMy45MDI3ICAgICA/ICAgIDExNS42NjUxKy0yLjY4OTEgICAg
ICAgID8KICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMC44Mjg1Ky0xLjMxNzYgICAgICAgICAgIDIwLjYwMTArLTAuOTUxOSAgICAgICAgICBtaWdo
dCBiZSAxLjAxMTB4IGZhc3RlcgogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3LW9iamVjdCAgICAg
ICAgICAgICAgICAgICAgIDE4LjM3OTArLTAuNzg2MyAgICAgICAgICAgMTguMDAzMystMC41MjUy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwOXggZmFzdGVyCiAgIHBsdXMtYm9vbGVhbi1hcml0aCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTc0OCstMC4wNTg1ICAgICA/ICAgICAg
Mi45NzgwKy0wLjA3NzcgICAgICAgID8KICAgcGx1cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy4xMjAwKy0wLjA5ODQgICAgID8gICAgICAzLjIwNDkrLTAu
MTUzMCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzJ4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg0NTkrLTAuMTU4MCAgICAgICAg
ICAgIDIuODM2MSstMC4wMzc5ICAgICAgICAKICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50
LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuNDA2OSstMC4xNjY0ICAgICA/ICAgICAgNC43Njc1Ky0zLjEw
MDIgICAgICAgID8gbWlnaHQgYmUgMS4zOTk0eCBzbG93ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3Mt
ZGlmZmVyZW50LXByb3RvdHlwZXMgICAgICAgICAgICAgMy4yNTIwKy0wLjA4NjYgICAgICAgICAg
ICAzLjI0ODArLTAuMDg1NSAgICAgICAgCiAgIHBvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNDkwNystMC4xOTAxICAgICAgICAgICAgMy40NDYxKy0w
LjE0MjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTI5eCBmYXN0ZXIKICAgcG9seS1jaGFpbi1hY2Nl
c3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40MDA3Ky0wLjQxNjkgICAgICAg
ICAgICAzLjIyMzQrLTAuMDkzNSAgICAgICAgICBtaWdodCBiZSAxLjA1NTB4IGZhc3RlcgogICBw
b2x5LXByb3RvLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4LjYxMTIr
LTIuMDIwMCAgICAgPyAgICAgNjEuMTI0MCstNC41NDc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQy
OXggc2xvd2VyCiAgIHBvbHktcHJvdG8tYW5kLW5vbi1wb2x5LXByb3RvLXNhbWUtaWMgICAgICAg
ICAgICAgMzAuOTkxNSstMS4yMDk2ICAgICA/ICAgICAzMS4yNDY2Ky0xLjExNDQgICAgICAgID8K
ICAgcG9seS1wcm90by1jbGVhci1qcy1mdW5jdGlvbi1hbGxvY2F0aW9uLXByb2ZpbGUgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS41MjEx
Ky0xLjczNTAgICAgICAgICAgIDIwLjgxMzErLTAuNTQ3NiAgICAgICAgICBtaWdodCBiZSAxLjAz
NDB4IGZhc3RlcgogICBwb2x5LXByb3RvLXB1dC10cmFuc2l0aW9uLXNwZWVkICAgICAgICAgICAg
ICAgICAgIDI0LjIyMjkrLTcuMzkwOSAgICAgICAgICAgMjAuMzU1NystMC42MDMzICAgICAgICAg
IG1pZ2h0IGJlIDEuMTkwMHggZmFzdGVyCiAgIHBvbHktcHJvdG8tc2V0dGVyLXNwZWVkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMTkzNystMC4yMzU4ICAgICAgICAgICAgNC4xODcwKy0w
LjEzODQgICAgICAgIAogICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcwLjQwNTQrLTIuMTkxNyAgICAgXiAgICAgNjEuNDcyMSstNC44MDA5ICAgICAg
ICBeIGRlZmluaXRlbHkgMS4xNDUzeCBmYXN0ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wNTM0Ky0wLjEyODUgICAgICAgICAgICAyLjAx
MzcrLTAuMjkzNiAgICAgICAgICBtaWdodCBiZSAxLjAxOTd4IGZhc3RlcgogICBwb2x5bW9ycGhp
Yy1nZXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYxNzIrLTAuMTQxMCAg
ICAgPyAgICAgIDIuNjY0NistMC4yMzcyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4MXggc2xvd2Vy
CiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYu
Nzk1MCstMTguMjg1MiAgICAgICAgICAyOC43OTI0Ky0wLjQ1MTQgICAgICAgICAgbWlnaHQgYmUg
MS4yNzc5eCBmYXN0ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAg
ICAgICAgICAgICAzMC4zMzAxKy0xLjM4NjAgICAgID8gICAgIDMxLjc4NzYrLTQuNjYwNiAgICAg
ICAgPyBtaWdodCBiZSAxLjA0ODF4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdp
dGgtc3ltYm9sICAgICAgICAgICAgICAgIDMxLjIxNzArLTEuMTYzMCAgICAgICAgICAgMzAuNzAw
MistMS42Njg2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OHggZmFzdGVyCiAgIHBvbHltb3JwaGlj
LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNDk3MistMC43ODc2ICAg
ICA/ICAgICAyMy4wOTE2Ky05LjUxMTQgICAgICAgID8gbWlnaHQgYmUgMS40OTAweCBzbG93ZXIK
ICAgcG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgNC44
NDcwKy0wLjIyMjUgICAgID8gICAgICA1LjkyMDgrLTIuNjQ4MiAgICAgICAgPyBtaWdodCBiZSAx
LjIyMTV4IHNsb3dlcgogICBwcmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdvcmsgICAgICAgICAg
ICAgICAgICAgIDE4LjYzMzcrLTUuMzQ0OSAgICAgICAgICAgMTYuNjQzNystMC41NzEzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMTE5NnggZmFzdGVyCiAgIHByb3RvLWdldHRlci1hY2Nlc3MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTMuNDk3NCstMC43MTY1ICAgICA/ICAgICAxMy43MjU5
Ky0wLjYwNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTY5eCBzbG93ZXIKICAgcHJvdG90eXBlLWFj
Y2Vzcy13aXRoLW11dGF0aW5nLXByb3RvdHlwZSAgICAgICAgICAgNS43MzU3Ky0wLjQwNTIgICAg
ICAgICAgICA1LjY1MDErLTAuMTgxNSAgICAgICAgICBtaWdodCBiZSAxLjAxNTF4IGZhc3Rlcgog
ICBwdXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICA3Ljk1
MjErLTEuMjMxMSAgICAgICAgICAgIDcuODUxNSstMC41Nzk4ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEyOHggZmFzdGVyCiAgIHB1dC1ieS1pZC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgICAgICAgICAg
ICAgICAgICAgIDMuMzM2MSstMC4xNzI1ICAgICAgICAgICAgMy4zMjIyKy0wLjEyMzMgICAgICAg
IAogICBwdXQtYnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlciAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjYxNDYrLTAu
MzY5NSAgICAgPyAgICAgMTUuNzMxMistMC4zODMzICAgICAgICA/CiAgIHB1dC1ieS1pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNjUxNystMC42Mzg3ICAgICA/
ICAgICAxNi4xODg3Ky0wLjk4NzggICAgICAgID8gbWlnaHQgYmUgMS4wMzQzeCBzbG93ZXIKICAg
cHV0LWJ5LXZhbC1kaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43MTYx
Ky0wLjI1NjIgICAgICAgICAgICAwLjYwODArLTAuMDE5NyAgICAgICAgICBtaWdodCBiZSAxLjE3
Nzh4IGZhc3RlcgogICBwdXQtYnktdmFsLWxhcmdlLWluZGV4LWJsYW5rLWluZGV4aW5nLXR5cGUg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny45MjQyKy0wLjU0MTYgICAgID8gICAgICA4LjM0MjYrLTAuNTg1OSAgICAgICAgPyBtaWdodCBi
ZSAxLjA1Mjh4IHNsb3dlcgogICBwdXQtYnktdmFsLW1hY2hpbmUtaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjc2NDQrLTAuMTM2MyAgICAgICAgICAgIDMuNjgyOSstMC4wNTM3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDIyMXggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmct
cmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEzLjg0MjgrLTAuNDA0NSAgICAgPyAgICAgMTMuOTI4Nyst
MC41NDQyICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1v
cnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy42NzUzKy0wLjE0NTMgICAgID8gICAgICAzLjY4NTkrLTAuMTM3NSAgICAgICAgPwog
ICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjIx
NDYrLTAuOTAxOCAgICAgICAgICAgMTUuNzk0OCstMC41NjE2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI2NnggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNp
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEzLjY4MjArLTAuNzE4OSAgICAgPyAgICAgMTUuMTY4OCstNC4xMDgyICAgICAgICA/IG1p
Z2h0IGJlIDEuMTA4N3ggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0bHkt
cG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy45MTQwKy0wLjMwNDQgICAgICAgICAgICAzLjg0OTMrLTAuMTc2MyAgICAg
ICAgICBtaWdodCBiZSAxLjAxNjh4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljg5MzcrLTAuNTAxNSAgICAgICAgICAgMTUuNzc3
MystMC41OTg3ICAgICAgICAKICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMy45NDgzKy0wLjIxMzIgICAgID8gICAgIDE0LjYyMDUrLTAuNzQ3MyAg
ICAgICAgPyBtaWdodCBiZSAxLjA0ODJ4IHNsb3dlcgogICByYXl0cmFjZS13aXRoLWVtcHR5LXRy
eS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICA4LjMwNTErLTMuNDI2MSAgICAgICAgICAgIDcu
MjM1NystMS4zNjMwICAgICAgICAgIG1pZ2h0IGJlIDEuMTQ3OHggZmFzdGVyCiAgIHJheXRyYWNl
LXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjcyOCstMi41MTMw
ICAgICA/ICAgICAxMy40NDY2Ky0wLjQ5NTEgICAgICAgID8gbWlnaHQgYmUgMS4wNjExeCBzbG93
ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
Mi4zMDc0Ky0xLjMyNjMgICAgID8gICAgIDUzLjA3MTkrLTIuMTg3MSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNDZ4IHNsb3dlcgogICByZWdleHAtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjY5MDErLTAuNDU3MiAgICAgPyAgICAgMTMuOTAzMCstMC43ODE1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE1Nnggc2xvd2VyCiAgIHJlZ2V4cC1uZXN0ZWQtbm9uemVyby1t
aW4tY291bnRlZC1wYXJlbnMgICAgICAgICAgIDAuNjM0NSstMC4zNDA4ICAgICAgICAgICAgMC40
OTE1Ky0wLjAwOTcgICAgICAgICAgbWlnaHQgYmUgMS4yOTEweCBmYXN0ZXIKICAgcmVnZXhwLXBy
b3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UgICAgICAgICAgICAgICAgICAgMC42NzUxKy0wLjAzODkg
ICAgICAgICAgICAwLjY3MDcrLTAuMDUyOCAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2Vh
cmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuOTYzMCstMC4zMDY3ICAgICAgICAgICAgMC44
OTA0Ky0wLjEwMzkgICAgICAgICAgbWlnaHQgYmUgMS4wODE2eCBmYXN0ZXIKICAgcmVnZXhwLXBy
b3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTc3NCstMC4wNTI4ICAg
ICAgICAgICAgMC41NTU3Ky0wLjAxNTIgICAgICAgICAgbWlnaHQgYmUgMS4wMzkyeCBmYXN0ZXIK
ICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjI5ODgr
LTAuMDE0NCAgICAgPyAgICAgIDEuMzE1NCstMC4wMTk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEy
OHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNTc2MistMC4wMTQ0ICAgICA/ICAgICAgMC43ODEyKy0wLjM4MzEgICAgICAgID8gbWln
aHQgYmUgMS4zNTU5eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC43MDczKy0wLjIyODUgICAgICAgICAgICAwLjYyNDUrLTAu
MDcxNyAgICAgICAgICBtaWdodCBiZSAxLjEzMjZ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42NzcxKy0wLjE2NjQgICAg
ICAgICAgICAwLjYxNDErLTAuMDY2OCAgICAgICAgICBtaWdodCBiZSAxLjEwMjZ4IGZhc3Rlcgog
ICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVD
YXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNTk0MCstMC4wMjU0ICAgICAgICAgICAgMC41ODY0Ky0wLjAxOTQgICAgICAgICAgbWln
aHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTkwMistMC4wMjUzICAgICAgICAgICAgMC41ODYx
Ky0wLjAxODQgICAgICAgIAogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC42Njc4Ky0wLjE5OTEgICAgICAgICAgICAwLjU5MTIrLTAuMDE5
OCAgICAgICAgICBtaWdodCBiZSAxLjEyOTZ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTg4MistMC4wMjkyICAgICA/
ICAgICAgMC42MTU4Ky0wLjA2MjEgICAgICAgID8gbWlnaHQgYmUgMS4wNDcweCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41OTkxKy0w
LjAyMTQgICAgID8gICAgICAwLjY2NjMrLTAuMTY5NCAgICAgICAgPyBtaWdodCBiZSAxLjExMjJ4
IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC44NjcyKy0wLjA4NDUgICAgICAgICAgICAwLjg1NjErLTAuMDY5NCAgICAgICAgICBtaWdodCBi
ZSAxLjAxMzB4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNTUwNCstMC4wMTQ0ICAgICA/ICAgICAgMC41NzMyKy0wLjAzMDQgICAgICAg
ID8gbWlnaHQgYmUgMS4wNDE0eCBzbG93ZXIKICAgcmVnZXhwLXNldC1sYXN0LWluZGV4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMS43NjgxKy0wLjMxOTYgICAgICAgICAgIDExLjY0MTQr
LTAuMTc1MyAgICAgICAgICBtaWdodCBiZSAxLjAxMDl4IGZhc3RlcgogICByZWdpc3Rlci1wcmVz
c3VyZS1mcm9tLW9zciAgICAgICAgICAgICAgICAgICAgICAgIDE4LjczODkrLTAuOTQ1MSAgICAg
ICAgICAgMTcuNTU2MystMC40MTc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY3NHggZmFzdGVyCiAg
IHJlcGVhdC1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgMjAuNzI5
MistMS4yNzUzICAgICAgICAgICAxOS43NDgzKy0wLjU2NjEgICAgICAgICAgbWlnaHQgYmUgMS4w
NDk3eCBmYXN0ZXIKICAgcmVzdC1wYXJhbWV0ZXItYWxsb2NhdGlvbi1lbGltaW5hdGlvbiAgICAg
ICAgICAgIDIyNy40MzMyKy0zLjU1MDkgICAgID8gICAgMjI3LjUzNjIrLTQuODE1MyAgICAgICAg
PwogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAgICAgICAgIDI5
LjIwMzYrLTEuMTU0NSAgICAgICAgICAgMjkuMDUyOSstMC42NDM4ICAgICAgICAKICAgcmljaGFy
ZHMtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICA2OC41NzcyKy0xLjk0
OTIgICAgID8gICAgIDc5LjY2MDQrLTI5LjUyMjEgICAgICAgPyBtaWdodCBiZSAxLjE2MTZ4IHNs
b3dlcgogICByaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjA2LjA2MzUrLTcuNTI1MSAgICAgICAgICAyMDIuNDc5NistNi44MDg5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE3N3ggZmFzdGVyCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDguNzY4MSstMC44OTY4ICAgICAgICAgICAgOC4yMTc2Ky0wLjQ1NDMg
ICAgICAgICAgbWlnaHQgYmUgMS4wNjcweCBmYXN0ZXIKICAgc2NvcGVkLWFyZ3VtZW50cy1vdmVy
cmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgOC4zOTA5Ky0xLjAyMDggICAgICAgICAgICA4
LjAyODgrLTAuNDI4MiAgICAgICAgICBtaWdodCBiZSAxLjA0NTF4IGZhc3RlcgogICBzY29wZWQt
YXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguOTI5OSstMC41NTYzICAgICAg
ICAgICAgOC44MTM2Ky0wLjQzNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTMyeCBmYXN0ZXIKICAg
c2VhbC1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi43MTk2
Ky0xLjEyOTUgICAgICAgICAgIDE2LjIyMDErLTAuNzU3MCAgICAgICAgICBtaWdodCBiZSAxLjAz
MDh4IGZhc3RlcgogICBzZXQtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjI0MzMrLTAuMDI1OSAgICAgPyAgICAgIDIuODUxMSstMS40ODg3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMjcwOXggc2xvd2VyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuNzM5OCstMC4zNTE0ICAgICAgICAgICAgNS43Mzc2Ky0w
LjM4OTkgICAgICAgIAogICBzZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjczNDUrLTAuMTA3MiAgICAgPyAgICAgIDUuNzQ3MSstMC4xMDk4ICAgICAg
ICA/CiAgIHNldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuODEzMistMC4xNDM0ICAgICAgICAgICAgNC44MDc5Ky0wLjEyNzAgICAgICAgIAogICBzaW1w
bGUtYWN0aXZhdGlvbi1kZW1vICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjMzMTkrLTEw
LjcyMTQgICAgICAgICAgMTkuNzY2NCstMC4zOTcwICAgICAgICAgIG1pZ2h0IGJlIDEuMjMxMHgg
ZmFzdGVyCiAgIHNpbXBsZS1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjAuMTMwOSstMC4yMjQ4ICAgICA/ICAgICAyMC43NzkxKy0wLjg1NDAgICAgICAgID8gbWln
aHQgYmUgMS4wMzIyeCBzbG93ZXIKICAgc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4wNjIyKy0wLjQ5NjQgICAgID8gICAgICA2LjA0MDErLTIuMDg2
NSAgICAgICAgPyBtaWdodCBiZSAxLjE5MzJ4IHNsb3dlcgogICBzaW1wbGUtcG9seS1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEwNTArLTAuNjM4MCAgICAgICAgICAg
IDEuODkwNystMC4xNzM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTEzM3ggZmFzdGVyCiAgIHNpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAgIDQuOTgyNystMC4x
NjYxICAgICAgICAgICAgNC44MzQ2Ky0wLjA2NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMzA2eCBm
YXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAg
ICAyNC43NDk0Ky0wLjE2MTQgICAgICAgICAgIDI0Ljc0MTYrLTAuNjI5MiAgICAgICAgCiAgIHNp
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjkxODEr
LTAuNTU4OCAgICAgICAgICAgMTEuNDczNystMC40ODQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4
N3ggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwgICAgICAgICAgICAg
ICAgICAgMTkuMzI1OSstMC4zOTA0ICAgICA/ICAgICAyMy41ODg5Ky0xMi41Mjg3ICAgICAgID8g
bWlnaHQgYmUgMS4yMjA2eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctd2l0
aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEyLjkwMjgrLTAuNjY0OCAgICAgICAgICAgMTIuMjUxMCstMC4wNjA4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUzMnggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMjAuNTEyMSstMC44MDcyICAgICAgICAgICAy
MC4yOTI4Ky0wLjQ5MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgc2luLWJv
b2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4wODY4Ky0wLjE1
MzYgICAgIF4gICAgICA2LjgzOTMrLTAuMDQ2NiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDM2Mngg
ZmFzdGVyCiAgIHNpbmdsZXRvbi1zY29wZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTYuNTEwMSstMS41OTAyICAgICAgICAgICA1NS43MDQyKy0xLjg1ODUgICAgICAgICAgbWln
aHQgYmUgMS4wMTQ1eCBmYXN0ZXIKICAgc2luay1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy43MTEyKy0wLjU3MTUgICAgID8gICAgICA4LjgyNzQrLTMuODQy
MyAgICAgICAgPyBtaWdodCBiZSAxLjE0NDh4IHNsb3dlcgogICBzaW5rLWh1Z2UtYWN0aXZhdGlv
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjk3MjYrLTEuMjI4MSAgICAgICAgICAg
MTEuMjI5NSstMC44MDI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2MnggZmFzdGVyCiAgIHNpbmth
YmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuMzI5OSstMS4z
MDk4ICAgICAgICAgICA0Ni4wNjExKy0wLjgyNTkgICAgICAgIAogICBzaW5rYWJsZS1uZXctb2Jq
ZWN0LXRha2VuICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjgyMTYrLTEuNTMxNyAgICAgICAg
ICAgMzkuMDk2NCstMC42MTgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4NXggZmFzdGVyCiAgIHNp
bmthYmxlLW5ldy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMTYwMist
MS4xMDkzICAgICA/ICAgICAyMy4yMTAyKy02LjI0MzUgICAgICAgID8gbWlnaHQgYmUgMS4wOTY5
eCBzbG93ZXIKICAgc2xvdy1hcnJheS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAg
ICAgICAgMy4xMzYzKy0wLjA0MzggICAgID8gICAgICAzLjIzNjMrLTAuMTQzMSAgICAgICAgPyBt
aWdodCBiZSAxLjAzMTl4IHNsb3dlcgogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjM5MDYrLTAuNDA5MCAgICAgICAgICAgIDMuMzY1NCstMC4x
MzY2ICAgICAgICAKICAgc2xvdy10ZXJuYXJpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNS43MjE2Ky0wLjU1ODMgICAgID8gICAgIDE2LjI3MjMrLTAuNDQ1NCAgICAgICAg
PyBtaWdodCBiZSAxLjAzNTB4IHNsb3dlcgogICBzb3J0aW5nLWJlbmNobWFyayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIzLjg1NzQrLTAuOTQ5MSAgICAgICAgICAgMjIuODY2NSst
MC41NjYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzM3ggZmFzdGVyCiAgIHNwYXJzZS1jb25kaXRp
b25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjQ2NistMC4xMDU5ICAgICAg
ICAgICAgMS42MDU0Ky0wLjAzODYgICAgICAgICAgbWlnaHQgYmUgMS4wMjU3eCBmYXN0ZXIKICAg
c3BhcnNlLXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OC41NjI1
Ky0yLjIyMTEgICAgID8gICAgIDY5LjE4NzkrLTEuNjgzMCAgICAgICAgPwogICBzcGxpY2UtdG8t
cmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljc0NjUrLTEuMjMxOSAg
ICAgICAgICAgMTguNjM1NSstMC40MjE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5NnggZmFzdGVy
CiAgIHNwcmVhZC1sYXJnZS1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjAu
Mjc1MSstNC4yNTcwICAgICA/ICAgIDE2MS4zNTI3Ky00LjM2NjAgICAgICAgID8KICAgc3RyY2F0
LWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4wODU0Ky0xLjc5
NjIgICAgICAgICAgICA2LjI2ODkrLTAuMTE5NCAgICAgICAgICBtaWdodCBiZSAxLjEzMDJ4IGZh
c3RlcgogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjI1ODIrLTAuMDk1OSAgICAgPyAgICAgIDYuMzA0NSstMC4xNjU2ICAgICAgICA/CiAgIHN0
cmljdC1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuODc3Mist
MC4yODAwICAgICA/ICAgICAxMS45MDc1Ky0wLjM2NTQgICAgICAgID8KICAgc3RyaW5nLWFkZC1j
b25zdGFudC1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAgIDIxNC45OTQ0Ky00LjAyNzcgICAg
ID8gICAgMjE2LjE5MTgrLTQuNjQ0MyAgICAgICAgPwogICBzdHJpbmctY2hhci1jb2RlLWF0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjY0ODgrLTAuMjIzMSAgICAgPyAgICAgMjAu
NTk1MSstMS4xMzU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4Mnggc2xvd2VyCiAgIHN0cmluZy1j
b25jYXQtY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzkuNzgzMistMy4wNDg1
ICAgICA/ICAgICA5My4xNzgzKy0zNC4xMTkzICAgICAgID8gbWlnaHQgYmUgMS4xNjc5eCBzbG93
ZXIKICAgc3RyaW5nLWNvbmNhdC1sb25nLWNvbnZlcnQgICAgICAgICAgICAgICAgICAgICAgICA4
NS41MjE3Ky0xLjg5MjMgICAgID8gICAgIDg1LjkwNTIrLTIuOTMyNiAgICAgICAgPwogICBzdHJp
bmctY29uY2F0LWxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjQ4NzArLTEu
NzExNiAgICAgPyAgICAgNDkuNjU0OSstMS41MjEzICAgICAgICA/CiAgIHN0cmluZy1jb25jYXQt
b2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTc3NSstMC4xNjE2ICAgICAg
ICAgICAgMi44OTA2Ky0wLjA1MTIgICAgICAgICAgbWlnaHQgYmUgMS4wMzAxeCBmYXN0ZXIKICAg
c3RyaW5nLWNvbmNhdC1wYWlyLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NTUz
Ky0wLjA4NDIgICAgICAgICAgICAyLjgyOTYrLTAuMDg3MyAgICAgICAgCiAgIHN0cmluZy1jb25j
YXQtcGFpci1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODg4OCstMC4zMjA5ICAg
ICA/ICAgICAgNC45NDU2Ky0zLjExMDQgICAgICAgID8gbWlnaHQgYmUgMS4yNzE4eCBzbG93ZXIK
ICAgc3RyaW5nLWNvbmNhdC1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41
MjcwKy0wLjQ3OTUgICAgID8gICAgICA2LjczNDErLTAuODMyMyAgICAgICAgPyBtaWdodCBiZSAx
LjAzMTd4IHNsb3dlcgogICBzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQyLjgyNzUrLTAuOTU4NCAgICAgPyAgICAgNTIuMTY1OSstMjEuNDU4MSAgICAg
ICA/IG1pZ2h0IGJlIDEuMjE4MHggc2xvd2VyCiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDguNDc4OSstMC4yNDk4ICAgICA/ICAgICAgOC41NjM2
Ky0wLjMzNzMgICAgICAgID8KICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNi42NTg1Ky0wLjYwNTEgICAgICAgICAgICA2LjUzNDQrLTAuMzQwNiAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBzdHJpbmctZXF1YWxpdHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjI0OTcrLTAuNTMwNiAgICAgPyAgICAgMTIu
NjA2OCstMC41MDg0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5Mnggc2xvd2VyCiAgIHN0cmluZy1m
cm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDc3NCstMC4zNTQz
ICAgICAgICAgICAgNy4zOTIzKy0wLjE0NjkgICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBmYXN0
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAg
Ni41MDEyKy0xLjU0ODIgICAgICAgICAgICA1LjkxMTcrLTAuMDgxMCAgICAgICAgICBtaWdodCBi
ZSAxLjA5OTd4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLWluc2Fu
ZSAgICAgICAgICAgICA1LjIwODkrLTAuNTYxMSAgICAgICAgICAgIDUuMTEyNistMC4xMzE0ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDUuNTIyMSstMC4xMzA4ICAgICAgICAgICAgNS41
MTk4Ky0wLjA4OTcgICAgICAgIAogICBzdHJpbmctZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjQ2MTMrLTEuNjUyOSAgICAgICAgICAgIDIuNzU5NistMC4wNDg3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMjU0M3ggZmFzdGVyCiAgIHN0cmluZy1oYXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTYwNystMC4xMDY0ICAgICA/ICAgICAg
Mi41NjI4Ky0wLjEzNTEgICAgICAgID8KICAgc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkgICAg
ICAgICAgICAgICAgICAgICAgICAxOC41MjU5Ky0wLjc2OTcgICAgID8gICAgIDIwLjg1MTErLTQu
OTIxNSAgICAgICAgPyBtaWdodCBiZSAxLjEyNTV4IHNsb3dlcgogICBzdHJpbmctb3V0LW9mLWJv
dW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjA2MzUrLTAuNTU4NCAgICAgPyAg
ICAgMTIuMDk2NistMC40NDQzICAgICAgICA/CiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMTExMCstMC4wOTg1ICAgICAgICAgICAgMS4wODYwKy0w
LjA4NzggICAgICAgICAgbWlnaHQgYmUgMS4wMjMweCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlw
ZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjYyMCstMC4wMjk0ICAgICAgICAg
ICAgMC42NTY3Ky0wLjAyMjggICAgICAgIAogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC42NzM3Ky0wLjA3MTUgICAgICAgICAgICAwLjY1NDMrLTAu
MDE1OSAgICAgICAgICBtaWdodCBiZSAxLjAyOTZ4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBl
LXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43NjY1Ky0wLjIzNzIgICAgICAgICAg
ICAwLjY1OTgrLTAuMDI3NCAgICAgICAgICBtaWdodCBiZSAxLjE2MTd4IGZhc3RlcgogICBzdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjA5NystMC4xNjM2
ICAgICA/ICAgICAgMS42NjU1Ky0wLjEyODYgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ2eCBzbG93
ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43
MDM0Ky0wLjA0NTggICAgICAgICAgICAwLjY3NDMrLTAuMDMyNSAgICAgICAgICBtaWdodCBiZSAx
LjA0MzJ4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjY5NjkrLTAuMDY1NiAgICAgICAgICAgIDAuNjgyMCstMC4wMjE4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDIxOHggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcwNjcrLTAuMDY0MiAgICAgPyAgICAg
IDAuNzEzMSstMC4wNDEzICAgICAgICA/CiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42Njg1Ky0wLjAxMDQgICAgID8gICAgICAw
LjY5NzgrLTAuMDM3MiAgICAgICAgPyBtaWdodCBiZSAxLjA0Mzd4IHNsb3dlcgogICBzdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42OTUw
Ky0wLjA1MTEgICAgICAgICAgICAwLjY4MTQrLTAuMDIzMCAgICAgICAgICBtaWdodCBiZSAxLjAy
MDB4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1zdGlja3kgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC42ODMyKy0wLjAyMDMgICAgID8gICAgICAwLjY4NDkrLTAuMDE0MiAgICAg
ICAgPwogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11
bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNjc3MystMC4wMTQ3ICAgICA/ICAgICAgMC43MDA5Ky0wLjA0NDcgICAgICAgID8g
bWlnaHQgYmUgMS4wMzQ5eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC43ODI5Ky0wLjIzNzcgICAgICAgICAgICAwLjY4MDErLTAuMDEz
MyAgICAgICAgICBtaWdodCBiZSAxLjE1MTJ4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LWFyaXRo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjY4NTkrLTUuMTcxOCAgICAgICAgICAg
MjQuNjc0MystMC40NjY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgxNXggZmFzdGVyCiAgIHN0cmlu
Zy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDMuODY5NistMC4z
MzU4ICAgICAgICAgICAgMy42MTY0Ky0wLjExMDMgICAgICAgICAgbWlnaHQgYmUgMS4wNzAweCBm
YXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAg
ICAgNC41NDg1Ky0wLjMxOTAgICAgICAgICAgICA0LjI5NTIrLTAuMDkzOSAgICAgICAgICBtaWdo
dCBiZSAxLjA1OTB4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmcgICAgICAg
ICAgICAgICAgICAgICAgICA0LjkwNTkrLTAuMzExMSAgICAgICAgICAgIDQuNjMxMSstMC4xNTgw
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5M3ggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2
aW5nLWZpeGVkICAgICAgICAgICAgICAgICAgICAgMzAuMzExNCstMS4xNDUwICAgICA/ICAgICAz
MC43NzY5Ky0xLjIwNzggICAgICAgID8gbWlnaHQgYmUgMS4wMTU0eCBzbG93ZXIKICAgc3RyaW5n
LXJlcGVhdC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICAgICA0MS42NDY2Ky0xLjMw
ODQgICAgID8gICAgIDQxLjc2MTArLTEuMTkwNiAgICAgICAgPwogICBzdHJpbmctcmVwZWF0LXJl
c29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjU3MjErLTE2Ljk5MjAgICAgICAg
ICAgNDEuMjg3NCstMC43NDEwICAgICAgICAgIG1pZ2h0IGJlIDEuMTUyMnggZmFzdGVyCiAgIHN0
cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgIDkuNzkyNCst
MC41MTk4ICAgICA/ICAgICAxMC4wMjQ0Ky0wLjQ0MjQgICAgICAgID8gbWlnaHQgYmUgMS4wMjM3
eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAgICAgICAgICAg
ICAgICAxMC4wOTcwKy0wLjU4MjcgICAgID8gICAgIDEyLjI1ODQrLTQuODUxNyAgICAgICAgPyBt
aWdodCBiZSAxLjIxNDF4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZp
bmcgICAgICAgICAgICAgICAgICAzLjczNjYrLTAuMTg3NSAgICAgPyAgICAgIDMuNzM3MystMC4x
MDk3ICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQtc21hbGwtcmVzb2x2aW5nICAgICAgICAgICAg
ICAgICAgICAgNDEuNzkxMCstMC4zNDgxICAgICA/ICAgICA0Mi40ODA5Ky0xLjI1NjIgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTY1eCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMC4zNjk1Ky0wLjE4OTkgICAgID8gICAgIDEwLjg5NTQr
LTAuNTI3OCAgICAgICAgPyBtaWdodCBiZSAxLjA1MDd4IHNsb3dlcgogICBzdHJpbmctcmVwbGFj
ZS1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjcxMzIrLTEuMzQ4MyAgICAg
PyAgICAgNjEuMzYyOSstMi4wODU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAg
IHN0cmluZy1yZXBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNjIy
MystMC42MjczICAgICA/ICAgICAxMS4wNTUwKy0wLjU3NDAgICAgICAgID8gbWlnaHQgYmUgMS4w
NDA3eCBzbG93ZXIKICAgc3RyaW5nLXJvcGUtd2l0aC1vYmplY3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNi40NTQxKy0xLjAxNDMgICAgICAgICAgIDI0LjI5OTkrLTEuODUxNSAgICAgICAg
ICBtaWdodCBiZSAxLjA4ODd4IGZhc3RlcgogICBzdHJpbmctc2xpY2UtZW1wdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjQ5MjQrLTAuMjEwNCAgICAgPyAgICAgIDguNTYyMyst
MC4yODc4ICAgICAgICA/CiAgIHN0cmluZy1zbGljZS1vbmUtY2hhciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuNDI3MSstMC4yNTI2ICAgICAgICAgICAgOS4zMTg1Ky0wLjEzNzQgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIKICAgc3RyaW5nLXNsaWNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzMy42MjY1Ky0xLjE0NzQgICAgID8gICAgIDMzLjg4
MDArLTAuNTE5MyAgICAgICAgPwogICBzdHJpbmctc3ViICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQzLjQzOTcrLTIuNzgwNCAgICAgICAgICAgNDIuMDMwNistMC43MzM1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzNXggZmFzdGVyCiAgIHN0cmluZy10ZXN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTIwMistMS40NDgyICAgICAgICAgICAg
My42MjU5Ky0wLjM2MDUgICAgICAgICAgbWlnaHQgYmUgMS4xMzYzeCBmYXN0ZXIKICAgc3RyaW5n
LXRyYW5zY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40ODkwKy0wLjU2
MTEgICAgICAgICAgICA4Ljk1ODMrLTAuMzgyNyAgICAgICAgICBtaWdodCBiZSAxLjA1OTJ4IGZh
c3RlcgogICBzdHJpbmctdmFyLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDI5Ljg1NTcrLTEuNjMzMCAgICAgICAgICAgMjkuNzExNistMS41MDA2ICAgICAgICAKICAgc3Ry
aW5nYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMy45MDczKy0y
LjMzMzUgICAgID8gICAgMTA0Ljk0MjErLTMuMjcyOSAgICAgICAgPwogICBzdHJ1Y3R1cmUtaG9p
c3Qtb3Zlci10cmFuc2l0aW9ucyAgICAgICAgICAgICAgICAgICAzLjE0NjIrLTAuMTQxNSAgICAg
PyAgICAgIDMuMTU2NCstMC4wODkyICAgICAgICA/CiAgIHN1YnN0cmluZy1jb25jYXQtd2VpcmQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuNzIzNistMC43NDc1ICAgICA/ICAgICA1NC45
NTkyKy0zNy42NzM1ICAgICAgID8gbWlnaHQgYmUgMS4zODM1eCBzbG93ZXIKICAgc3Vic3RyaW5n
LWNvbmNhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MS4zMTE2Ky0wLjc1OTUg
ICAgID8gICAgIDQxLjg3NTgrLTAuNzA4OSAgICAgICAgPyBtaWdodCBiZSAxLjAxMzd4IHNsb3dl
cgogICBzdWJzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3
LjM5MjgrLTEuNDMyMyAgICAgPyAgICAgNDcuODk5MystMi41Nzg4ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEwN3ggc2xvd2VyCiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtbW9ub21vcnBoaWMg
ICAgICAgICAgICAgMjEuOTgwMCstMC44NDUyICAgICA/ICAgICAyOC42NDgwKy0xNy40NzczICAg
ICAgID8gbWlnaHQgYmUgMS4zMDM0eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LWlkLXdpdGgtdGhp
cy1wb2x5bW9ycGhpYyAgICAgICAgICAgICAxOC40MjIyKy0wLjU2OTcgICAgID8gICAgIDE5Ljg1
MTkrLTMuNDc5OSAgICAgICAgPyBtaWdodCBiZSAxLjA3NzZ4IHNsb3dlcgogICBzdXBlci1nZXQt
YnktdmFsLXdpdGgtdGhpcy1tb25vbW9ycGhpYyAgICAgICAgICAgIDI4LjYxOTIrLTAuNzU3NSAg
ICAgPyAgICAgMjkuNzM4MSstNC41NTQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5MXggc2xvd2Vy
CiAgIHN1cGVyLWdldC1ieS12YWwtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAgICAgMjQu
NDk0MSstMC44NzMxICAgICA/ICAgICAyNC45NDMxKy0wLjU5ODMgICAgICAgID8gbWlnaHQgYmUg
MS4wMTgzeCBzbG93ZXIKICAgc3VwZXItZ2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNS4zODM5Ky0wLjQwMjcgICAgICAgICAgIDE1LjI2MDQrLTAuODk4NSAgICAg
ICAgCiAgIHN3aXRjaC1jaGFyLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMDI2OSstMC4zMTYzICAgICAgICAgICAgMi44NDg2Ky0wLjEyODIgICAgICAgICAgbWlnaHQg
YmUgMS4wNjI2eCBmYXN0ZXIKICAgc3dpdGNoLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNi4zMDMxKy0wLjcwNTQgICAgICAgICAgICA2LjA1ODkrLTAuMzU0NCAg
ICAgICAgICBtaWdodCBiZSAxLjA0MDN4IGZhc3RlcgogICBzd2l0Y2gtY29uc3RhbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQyMjQrLTAuMzEwNSAgICAgPyAgICAgIDcu
ODYyNCstMy40MTU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMjI0Mnggc2xvd2VyCiAgIHN3aXRjaC1z
dHJpbmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAgICAgICAgMTUuOTMzMSstMC45Mjcy
ICAgICAgICAgICAxNS40Njc3Ky0wLjY4MTkgICAgICAgICAgbWlnaHQgYmUgMS4wMzAxeCBmYXN0
ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAx
My40Nzk0Ky0wLjYzMDQgICAgICAgICAgIDEzLjA5NDYrLTAuNzAyNyAgICAgICAgICBtaWdodCBi
ZSAxLjAyOTR4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLXZhciAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE2LjQ4NzQrLTAuODk2MyAgICAgPyAgICAgMTguNTMwNystNy4wODYzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTIzOXggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuODI5MistMC4zMDkzICAgICA/ICAgICAxMi4x
NDM0Ky0wLjUxNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMjY2eCBzbG93ZXIKICAgc3dpdGNoLXN0
cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZhciAgICAgICAgICAgICAgICAyMS41MDIyKy0wLjg3NDgg
ICAgICAgICAgIDIxLjM2MzMrLTAuNTc2NCAgICAgICAgCiAgIHN3aXRjaC1zdHJpbmctbGVuZ3Ro
LXRvd2VyLXZhciAgICAgICAgICAgICAgICAgICAgMTUuMjIwMSstMC40MTg3ICAgICA/ICAgICAx
Ni4wNzIzKy0wLjg4MzUgICAgICAgID8gbWlnaHQgYmUgMS4wNTYweCBzbG93ZXIKICAgc3dpdGNo
LXN0cmluZy1sZW5ndGgtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAxMi4wMzI1Ky0wLjYy
NzYgICAgID8gICAgIDEyLjQ3OTgrLTAuNjg5NSAgICAgICAgPyBtaWdodCBiZSAxLjAzNzJ4IHNs
b3dlcgogICBzd2l0Y2gtc3RyaW5nLXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjY1NzYrLTAuMzUyNiAgICAgPyAgICAgMTIuNjU2MystMS45ODE1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDg1N3ggc2xvd2VyCiAgIHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDguODE5NSstMC40MTk3ICAgICA/ICAgICAgOC45MTQ1Ky0wLjQ4MjQg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTA4eCBzbG93ZXIKICAgc3dpdGNoaW5nLXNpemUtY2xhc3Nl
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC4yOTA2Ky0wLjkwMDMgICAgICAgICAgIDQw
LjA3NjMrLTEuMDQzNiAgICAgICAgCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzY0OSstMC4wNDE3ICAgICA/ICAgICAgMy4zNjY4Ky0wLjAx
MjkgICAgICAgID8KICAgdGFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3My4zNzE1Ky0xLjM1MDMgICAgID8gICAgIDc0LjAwMzMrLTIuMTQxMSAgICAgICAg
PwogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjM1MDgrLTAuNzM4NyAgICAgICAgICAgIDMuMDA1NCstMC4wODUzICAgICAgICAgIG1pZ2h0IGJl
IDEuMTE0OXggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuNjIzMystMC4wODg4ICAgICA/ICAgICAgMy42OTYxKy0wLjIyNjIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjAxeCBzbG93ZXIKICAgdGVtcGxhdGUtc3RyaW5nLWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40NzMzKy0wLjkzMzEgICAgICAgICAgICA2Ljg0
MTMrLTAuNDU1OSAgICAgICAgICBtaWdodCBiZSAxLjA5MjR4IGZhc3RlcgogICB0ZW1wb3JhbC1z
dHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjMxNzMrLTEuMDc2MiAg
ICAgPyAgICAgMTQuMzc5OCstMC45MTg2ICAgICAgICA/CiAgIHRocm93ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNzIzMSstMC40MzEyICAgICA/ICAgICAx
OC4wMDIwKy0yLjgyMDkgICAgICAgID8gbWlnaHQgYmUgMS4wNzY1eCBzbG93ZXIKICAgdG8taW50
MzItYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS41MTk3Ky0wLjc1
OTcgICAgICAgICAgIDE0LjYzMTUrLTAuODI3NiAgICAgICAgICBtaWdodCBiZSAxLjA2MDd4IGZh
c3RlcgogICB0by1sb3dlci1jYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTI3LjgwMjMrLTMuNTc5NyAgICAgICAgICAxMjUuOTI1NystMy4yMDE0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE0OXggZmFzdGVyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1udW1iZXItc3RyaW5n
LW51bWJlci1zdHJpbmcgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC40ODQ0Ky0wLjIyMTAgICAgID8gICAgICA0LjcyNjcrLTAuNjQxNiAg
ICAgICAgPyBtaWdodCBiZSAxLjA1NDB4IHNsb3dlcgogICB0by1udW1iZXItY29uc3RydWN0b3It
b25seS1udW1iZXIgICAgICAgICAgICAgICAgICAwLjk1NTUrLTAuMDUyNSAgICAgPyAgICAgIDEu
MjM5MCstMC40ODQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMjk2OHggc2xvd2VyCiAgIHRvLW51bWJl
ci1jb25zdHJ1Y3Rvci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgIDIuMzQ2OSstMC4xMzk3
ICAgICA/ICAgICAgMi41NjQ2Ky0wLjc3NjggICAgICAgID8gbWlnaHQgYmUgMS4wOTI3eCBzbG93
ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLXN0cmluZy1udW1iZXItc3RyaW5nLW51bWJlciAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
Ljc3MjcrLTAuMTc2MiAgICAgPyAgICAgIDQuNTkyNCstMS43Mzc1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMjE3M3ggc2xvd2VyCiAgIHRvLW51bWJlci1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmcg
ICAgICAgICAgICAgIDQuMjYxOSstMC42NzA4ICAgICAgICAgICAgMy44NzUzKy0wLjE5MzEgICAg
ICAgICAgbWlnaHQgYmUgMS4wOTk3eCBmYXN0ZXIKICAgdG8tbnVtYmVyLW9ubHktbnVtYmVyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44ODExKy0wLjA3MDYgICAgID8gICAgICAxLjA3
NjErLTAuNjIyMSAgICAgICAgPyBtaWdodCBiZSAxLjIyMTR4IHNsb3dlcgogICB0by1udW1iZXIt
b25seS1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIwNzgrLTAuMDQwNSAg
ICAgICAgICAgIDIuMTQ4NCstMC4wNDA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3N3ggZmFzdGVy
CiAgIHRvLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAgIDUu
MDc5MistMy4zOTgwICAgICAgICAgICAgMy44NDU5Ky0wLjEzNjUgICAgICAgICAgbWlnaHQgYmUg
MS4zMjA3eCBmYXN0ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAg
ICAgICAgICAgICAgNS4xNjY4Ky0wLjA2NzcgICAgICAgICAgICA1LjE1NTArLTAuMTQ2NSAgICAg
ICAgCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWRpcmVjdC1hcmd1bWVudHMgICAgICAgICAgICAg
IDIuNzM2NystMC4xNDM1ICAgICA/ICAgICAgMi44MjkzKy0wLjIwNzcgICAgICAgID8gbWlnaHQg
YmUgMS4wMzM4eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtc2NvcGVkLWFyZ3VtZW50
cyAgICAgICAgICAgICAgNS43NzM5Ky0wLjMwMDggICAgICAgICAgICA1LjY2NjQrLTAuMTk0OSAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICB0cnktY2F0Y2gtd29yZC1jb3VudCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjYzMDUrLTAuNzYyMCAgICAgPyAgICAgNDAu
NDgwOSstMS40MzA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxNXggc2xvd2VyCiAgIHRyeS1nZXQt
YnktaWQtYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTk5MystMC41Njk0
ICAgICA/ICAgICAgOC42MTQ1Ky0wLjY1OTAgICAgICAgID8gbWlnaHQgYmUgMS4wNTA2eCBzbG93
ZXIKICAgdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAg
OS4zMjkzKy0wLjg0MjggICAgID8gICAgIDEwLjU5NjQrLTIuMTgwNyAgICAgICAgPyBtaWdodCBi
ZSAxLjEzNTh4IHNsb3dlcgogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9maWxpbmcg
ICAgICAgICAgICAgIDIzLjkwNTIrLTAuNTc0NyAgICAgPyAgICAgMjUuOTQzMCstNC41ODc3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDg1Mnggc2xvd2VyCiAgIHR5cGVkLWFycmF5LXN1YmFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuMjQ3MistMS42MzIzICAgICA/ICAgICA2OS42
NzU5Ky01My4xNzc5ICAgICAgID8gbWlnaHQgYmUgMS40NzQ3eCBzbG93ZXIKICAgdW5kZWZpbmVk
LXByb3BlcnR5LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgIDI1Ny4xOTIyKy02LjQ2Njcg
ICAgICAgICAgMjU3LjAwMTkrLTEwLjA1MTMgICAgICAgCiAgIHVuZGVmaW5lZC10ZXN0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzU0MSstMC4wODM0ICAgICA/ICAgICAg
My45NzIzKy0wLjQ2NjQgICAgICAgID8gbWlnaHQgYmUgMS4wNTgxeCBzbG93ZXIKICAgdW5wcm9m
aWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zMTgwKy0wLjE1
NjYgICAgID8gICAgICA3LjQzNjQrLTAuMjc4MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjJ4IHNs
b3dlcgogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAg
IDEyLjYwMjcrLTAuNDA4MyAgICAgPyAgICAgMTIuNjg3MistMC4zOTk5ICAgICAgICA/CiAgIHY4
LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgNjAuODQ1MSst
NC4wNzkzICAgICA/ICAgICA2NC40MjYyKy01LjE2NTUgICAgICAgID8gbWlnaHQgYmUgMS4wNTg5
eCBzbG93ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAg
ICAgICA1Mi43MTc5Ky0xLjczNTMgICAgID8gICAgIDUyLjc3MjcrLTEuMjc4NSAgICAgICAgPwog
ICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyLjc1
OTgrLTEuNDU2MSAgICAgICAgICAgNjEuMTk1MSstMC42NDg4ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI1NnggZmFzdGVyCiAgIHZhcmFyZ3MtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTUuNDc1MistMC41MzM5ICAgICAgICAgICAxNC44NDYyKy0wLjUyMzYgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDI0eCBmYXN0ZXIKICAgdmFyYXJncy1jb25zdHJ1Y3QtaW5saW5lICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOS45OTY3Ky0wLjYyNDMgICAgICAgICAgIDE5Ljc1NTQr
LTAuOTMxNCAgICAgICAgICBtaWdodCBiZSAxLjAxMjJ4IGZhc3RlcgogICB2YXJhcmdzLWNvbnN0
cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjQxNjcrLTEuMTU5OSAgICAg
ICAgICAgMjMuOTk5MCstMC45NjgwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3NHggZmFzdGVyCiAg
IHZhcmFyZ3MtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMjkw
OCstMC4yNjI4ICAgICA/ICAgICAgOC4zNTY3Ky0wLjI3NDEgICAgICAgID8KICAgdmFyYXJncy1z
dHJpY3QtbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4zMTk2Ky0wLjI2MDkg
ICAgID8gICAgICA5LjkxOTUrLTAuMzgwOCAgICAgICAgPyBtaWdodCBiZSAxLjA2NDR4IHNsb3dl
cgogICB2YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjM1MTgrLTAuMzk2MiAgICAgPyAgICAgIDkuNzY5MistMC44NDUyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQ0Nnggc2xvd2VyCiAgIHdlYWstbWFwLWtleSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDQuMTk5NystMC45MDU0ICAgICA/ICAgICA0NS4xNjAzKy0zLjMwMzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjE3eCBzbG93ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJv
cCAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NzI4Ky0wLjA4NjIgICAgID8gICAgICAyLjgy
MDArLTAuMTc0MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzB4IHNsb3dlcgoKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4zMDEzKy0wLjA3MDYg
ICAgICAgICAgIDEwLjI4NjcrLTAuMDQ5OCAgICAgICAgICBtaWdodCBiZSAxLjAwMTR4IGZhc3Rl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBjaGFuZ2VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKU2l4U3BlZWQ6CiAgIHRlbXBsYXRlX3N0cmluZy5lczUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDY5NjUuODUzOCstMTA4LjEzMjggICAgICAgNjkwMi4wMDY4
Ky0xMDAuMjIzNSAgICAgIAogICB0ZW1wbGF0ZV9zdHJpbmcuZXM2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0OTgxLjczNzArLTg2MC43MjQ2ICAgICAgIDQ3MjQuOTg3MCstMjAzLjM0Mjcg
ICAgICAgIG1pZ2h0IGJlIDEuMDU0M3ggZmFzdGVyCiAgIGRlZmF1bHRzLmVzNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzODcuMzc5NSstMjEuNDY1NSAgICA/ICAgIDM5MS45
NzE5Ky0xOS4yMjU5ICAgICAgID8gbWlnaHQgYmUgMS4wMTE5eCBzbG93ZXIKICAgZGVmYXVsdHMu
ZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwNC4zNjE2Ky05LjIwNzQg
ICAgID8gICAgNDIyLjI5NzArLTY4LjE1MDEgICAgICAgPyBtaWdodCBiZSAxLjA0NDR4IHNsb3dl
cgogICBtYXAtc2V0LWxvb2t1cC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0
Ljg0NjgrLTMuNjMyNSAgICAgPyAgICAgNzYuNDExNCstMy43OTIyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIwOXggc2xvd2VyCiAgIG1hcC1zZXQtbG9va3VwLmVzNiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMTQzOCstMC45NjA3ICAgICAgICAgICAgMS4yNDc1Ky0wLjIyMTUgICAg
ICAgICAgbWlnaHQgYmUgMS43MTg1eCBmYXN0ZXIKICAgc3ByZWFkLmVzNSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4wNDkwKy0wLjgwNzEgICAgID8gICAgIDE2LjI3
ODUrLTIuMzgxMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNDN4IHNsb3dlcgogICBzcHJlYWQuZXM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU1LjA5NDMrLTAuNjE1NyAg
ICAgXiAgICAgNTIuOTY0NCstMS40ODAzICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDAyeCBmYXN0
ZXIKICAgb2JqZWN0LWFzc2lnbi5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMy
OS4wMTUwKy04LjE5NzIgICAgICAgICAgMzE3LjgxNDErLTguODY1NiAgICAgICAgICBtaWdodCBi
ZSAxLjAzNTJ4IGZhc3RlcgogICBvYmplY3QtYXNzaWduLmVzNiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzE0LjEzNjQrLTkuNDQ1NSAgICAgICAgICAzMTMuMTc4OCstMTAuODM3MSAg
ICAgICAKICAgc3ByZWFkLWxpdGVyYWwuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMC42Nzk5Ky0wLjgxNTIgICAgICAgICAgIDE5LjkxOTMrLTAuNzA2MiAgICAgICAgICBtaWdo
dCBiZSAxLjAzODJ4IGZhc3RlcgogICBzcHJlYWQtbGl0ZXJhbC5lczYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMxLjEwMDcrLTEuNTE5OCAgICAgICAgICAgMzAuMDU2MistMS4xODUw
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0OHggZmFzdGVyCiAgIG1hcC1zZXQuZXM1ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuODM1NystMS4yNDIzICAgICA/ICAgICAz
OC4wMDU2Ky0xOC40MDU3ICAgICAgID8gbWlnaHQgYmUgMS4xOTM4eCBzbG93ZXIKICAgbWFwLXNl
dC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3My42NDAyKy00LjM5
NzQgICAgICEgICAgMTg0Ljg5NTcrLTQuNjQwNSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDY0OHgg
c2xvd2VyCiAgIGRlc3RydWN0dXJpbmctc2ltcGxlLmVzNSAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzcuODc1MCstMy43MTM0ICAgICA/ICAgICA3OS43ODM4Ky02LjIzMzMgICAgICAgID8gbWln
aHQgYmUgMS4wMjQ1eCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1zaW1wbGUuZXM2ICAgICAgICAg
ICAgICAgICAgICAgICAgICA4MS41NDA3Ky0xLjgyMTQgICAgID8gICAgIDkxLjcwNTYrLTIxLjYz
OTAgICAgICAgPyBtaWdodCBiZSAxLjEyNDd4IHNsb3dlcgogICBzdXBlci5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjU5NzkrLTguMDY1NSAgICAgICAgICAg
MTIuMjczNistMC41MjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMjcwOXggZmFzdGVyCiAgIHN1cGVy
LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjguNTYxMystMC41
ODgxICAgICA/ICAgICAyOS4yOTcyKy0xLjMxMjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjU4eCBz
bG93ZXIKICAgZm9yLW9mLW9iamVjdC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ni4wNzc3Ky0yLjUxOTIgICAgID8gICAgIDU2LjUzMjQrLTEuNTE1MCAgICAgICAgPwogICBm
b3Itb2Ytb2JqZWN0LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE1Ljc2NzAr
LTQuNTU2NyAgICAgPyAgICAyMTYuMTM2MCstNC4wNzA0ICAgICAgICA/CiAgIHJlc3QuZXM1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTUyNSstMC4xNDYzICAg
ICA/ICAgICAgMS45NjE4Ky0wLjEzNjQgICAgICAgID8KICAgcmVzdC5lczYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45OTAzKy0wLjAwNTYgICAgICAgICAgICAx
Ljk4NTcrLTAuMDA4MyAgICAgICAgCiAgIHJlZ2V4LXUuZXM1ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTQuMDY2MSstMi4xMjgwICAgICAgICAgICA1Mi4xNTIxKy0xLjc5
NDMgICAgICAgICAgbWlnaHQgYmUgMS4wMzY3eCBmYXN0ZXIKICAgcmVnZXgtdS5lczYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Mi4yNDk5Ky0yLjYzNjcgICAgID8gICAg
MTM2LjExMDErLTk3LjkzNTggICAgICAgPyBtaWdodCBiZSAxLjQ3NTR4IHNsb3dlcgogICBhcnJv
dy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzLjk4MzkrLTMu
MjI0NCAgICAgICAgICAgODIuNTc4MystMi43MTI2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MHgg
ZmFzdGVyCiAgIGFycm93LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODEuNDg1NistMi4zMTM1ICAgICAgICAgICA4MS4wNjY1Ky0xLjgxMjMgICAgICAgIAogICBi
aW5kaW5ncy1jb21wb3VuZC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyLjQzMDcr
LTIuMDcwOSAgICAgICAgICAgODIuMjkxMystMy4xNzE4ICAgICAgICAKICAgYmluZGluZ3MtY29t
cG91bmQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OC41Njg3Ky01LjkzNzMgICAg
ICAgICAgIDc3LjAzMTkrLTYuMTYzOSAgICAgICAgICBtaWdodCBiZSAxLjAyMDB4IGZhc3Rlcgog
ICBjbGFzc2VzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2LjQy
OTUrLTEuODk4OSAgICAgPyAgICAgODcuMDAxMCstMS44MTMxICAgICAgICA/CiAgIGNsYXNzZXMu
ZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODcuNjc2MSstMi4zODc1
ICAgICA/ICAgICA4Ny43OTA2Ky0yLjI4NzAgICAgICAgID8KICAgdGVtcGxhdGVfc3RyaW5nX3Rh
Zy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICA4MS44Nzc2Ky04LjAyNjYgICAgICAgICAg
IDc3LjAzMDIrLTIuMjQ0NSAgICAgICAgICBtaWdodCBiZSAxLjA2Mjl4IGZhc3RlcgogICB0ZW1w
bGF0ZV9zdHJpbmdfdGFnLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgMjM4LjczMjkrLTUu
NDIxOCAgICAgICAgICAyMzUuODY4MSstNi4xNDAzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMXgg
ZmFzdGVyCiAgIG1hcC1zdHJpbmcuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMjIuMDc3NSstNC42ODI0ICAgICA/ICAgIDEyMi45MjI2Ky0zLjgwNjggICAgICAgID8KICAg
bWFwLXN0cmluZy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwOC4xNjUz
Ky03LjI2NzQgICAgID8gICAgNTIyLjc2MDArLTE0LjYwMjIgICAgICAgPyBtaWdodCBiZSAxLjAy
ODd4IHNsb3dlcgogICBhcnJvdy1kZWNsYXJlLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTI0LjQyMzIrLTMuNzM3NyAgICAgICAgICAxMjQuMzk1MistNC4yOTUxICAgICAgICAK
ICAgYXJyb3ctZGVjbGFyZS5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMi4z
NjI1Ky0zLjY2ODAgICAgICAgICAgMTIxLjIyMTErLTMuNjg2MiAgICAgICAgCiAgIHNwcmVhZC1n
ZW5lcmF0b3IuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTguMjY1NystMi44Njk4
ICAgICA/ICAgICA5OC40NTMzKy0yLjY2OTggICAgICAgID8KICAgc3ByZWFkLWdlbmVyYXRvci5l
czYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMy4zMTAwKy0yLjg0MzAgICAgID8gICAg
MjA4Ljc3MzcrLTQuNDEyMCAgICAgICAgPyBtaWdodCBiZSAxLjAyNjl4IHNsb3dlcgogICBvYmpl
Y3QtbGl0ZXJhbC1leHQuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjM4MzUrLTEu
MDEwMiAgICAgICAgICAgMjQuMjIwNystMC40NTM0ICAgICAgICAKICAgb2JqZWN0LWxpdGVyYWwt
ZXh0LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy42MTQxKy0wLjk0NTMgICAgID8g
ICAgIDI4LjI0NTErLTEuMjg2NiAgICAgICAgPyBtaWdodCBiZSAxLjAyMjh4IHNsb3dlcgogICBn
ZW5lcmF0b3IuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyLjM4NDUr
LTMuNDk0MyAgICAgPyAgICAxNjMuMjE3OCstNjEuMTQ5MiAgICAgICA/IG1pZ2h0IGJlIDEuMTQ2
M3ggc2xvd2VyCiAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMjAuNTk3NystNC44NDgwICAgICAgICAgIDExOC44NzY3Ky0yLjQ1MDQgICAgICAgICAg
bWlnaHQgYmUgMS4wMTQ1eCBmYXN0ZXIKICAgYXJyb3ctYXJncy5lczUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4NC44Nzk1Ky00LjY5OTkgICAgICAgICAgIDc5LjY2NzMrLTgu
MDQyMCAgICAgICAgICBtaWdodCBiZSAxLjA2NTR4IGZhc3RlcgogICBhcnJvdy1hcmdzLmVzNiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4LjM2NTArLTUuMjI0OSAgICAgPyAg
ICAgODIuMDg5MCstNS4yNTIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ3NXggc2xvd2VyCiAgIGZv
ci1vZi1hcnJheS5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjIuNjAyMSst
Ny4zMzgwICAgICA/ICAgIDIyNC4yNDM0Ky03Ljk3ODUgICAgICAgID8KICAgZm9yLW9mLWFycmF5
LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1MC42NDM0Ky03LjQzNTggICAg
ICAgICAgMjQzLjgyMjcrLTUuODI4OCAgICAgICAgICBtaWdodCBiZSAxLjAyODB4IGZhc3Rlcgog
ICBiaW5kaW5ncy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxLjcy
OTMrLTIuOTk2NiAgICAgPyAgICAgODIuMDkzMistNC4wNzkyICAgICAgICA/CiAgIGJpbmRpbmdz
LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQuNTQ4NystNS45NjIx
ICAgICAgICAgICA3MC45NjE0Ky04LjkyNjIgICAgICAgICAgbWlnaHQgYmUgMS4wNTA2eCBmYXN0
ZXIKICAgZGVzdHJ1Y3R1cmluZy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
MS42NzM3Ky0xNS45MjMyICAgICAgICAgIDc4LjIyNTArLTQuMzg2MiAgICAgICAgICBtaWdodCBi
ZSAxLjA0NDF4IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLmVzNiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDc5LjE4NjkrLTcuODIyMiAgICAgICAgICAgNzQuMjQ1NistNC41MTQ1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDY2NnggZmFzdGVyCiAgIG1hcC1zZXQtb2JqZWN0LmVzNSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuMjQwMistMS40NTU5ICAgICAgICAgICAyNS42
NjMxKy0xLjA3MjQgICAgICAgICAgbWlnaHQgYmUgMS4wMjI1eCBmYXN0ZXIKICAgbWFwLXNldC1v
YmplY3QuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ni43OTAyKy01LjA1NTYg
ICAgID8gICAgMTgyLjU4NzErLTIuNjM2OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjh4IHNsb3dl
cgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
NC4zMzk0Ky0xLjA0OTYgICAgICAgICAgIDgzLjc2NjQrLTEuMTYzMCAgICAgICAgICBtaWdodCBi
ZSAxLjAwNjh4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBjaGFuZ2VzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBvZiBwcmVmZXJyZWQgbWVh
bnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDUuMjczOSstMC4zMDQ1ICAgICA/ICAgICA0NS42MzQ1Ky0wLjcxNDMgICAgICAgID8gbWlnaHQg
YmUgMS4wMDgweCBzbG93ZXIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328229</attachid>
            <date>2017-12-02 05:32:47 -0800</date>
            <delta_ts>2017-12-05 07:11:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171202113242.patch</filename>
            <type>text/plain</type>
            <size>115530</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTg1Y2I0Nzc2NmQ2ZGEwOWRmNzY0MTRlMGU0OWI4YzQ2MDRjNDY5Li5mZWM2ZWZkNGJkOTFmOGZm
M2U5YTQzYWQwYTgyMDQwMDc2MmE3ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTcgQEAKKzIwMTctMTItMDIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IGFzIGlubGluZSBzdG9yYWdlIG9mIEpTQmln
SW50IHRvCisgICAgICAgIHRha2UgYWR2YW50YWdlcyBvbiBwZXJmb3JtYW5jZSBkdWUgdG8gY2Fj
aGUgbG9jYWxpdHkuIFRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgNjQgb3IgMzIg
Yml0d2lzZSBhcml0aG1ldGljIG9wZXJhdGlvbnMuCisgICAgICAgIEpTQmlnSW50IGFsc28gaGFz
IG1fc2lnbiB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQKKyAgICAgICAg
bV9sZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUg
aW1wbGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIEpTQmlnSW50OjptX2RhdGEg
YXJlIG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFs
dWUpIGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFs
c28gaGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0
cy4KKworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gdGhpcyByZXBy
ZXNlbnRhdGlvbiwKKyAgICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKClbMF0gcmVwcmVzZW50
cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgYW5kCisgICAgICAgIEpTQmlnSW50OjpkYXRh
U3RvcmFnZSgpW21fbGVuZ3RoIC0gMV0gcmVwcmVzZW50cyB0aGUgbW9zdCBzaWdpbmlmaWNhbnQg
ZGlnaXQuCisKKyAgICAgICAgV2UgYXJlIGFsc28gaW50cm9kdWNpbmcgaW50byB0aGlzIFBhdGNo
IHRoZSBCaWdJbnQgbGl0ZXJhbHMgbGV4ZXIgYW5kCisgICAgICAgIHN5bnRheCBwYXJzaW5nIHN1
cHBvcnQuIFRoZSBvcGVyYXRpb24gU3RyaWN0IEVxdWFscyBvbiBCaWdJbnRzIGlzIGFsc28gYmVp
bmcKKyAgICAgICAgaW1wbGVtZW50ZWQgdG8gZW5hYmxlIHRlc3RzLgorICAgICAgICBUaGVzZSBm
ZWF0dXJlcyBhcmUgYmVpbmcgaW1wbGVtZW50ZWQgYmVoaW5kIGEgcnVudGltZSBmbGFnZSAiLS11
c2VCaWdJbnQiIGFuZAorICAgICAgICBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6QmlnSW50
RW50cnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJpZ0lu
dEVudHJ5SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpqc1ZhbHVlIGNvbnN0KToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogbGxpbnQvTExJ
bnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCaWdJ
bnQpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+
OjpwYXJzZUJpbmFyeSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZU9jdGFsKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlRGVjaW1hbCk6CisgICAgICAgIChKU0M6OkxleGVy
PFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmg6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OkJpZ0ludE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNCaWdJbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjp2YWx1ZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAg
ICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6ZGVm
aW5pdGVseUlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6bWlnaHRC
ZUJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmlzTm90QmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6YWRkUmVzdWx0VHlwZSk6CisgICAgICAg
IChKU0M6OlJlc3VsdFR5cGU6OmJpZ0ludFR5cGUpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
Ojpmb3JBZGQpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpmb3JMb2dpY2FsT3ApOgorICAg
ICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6SlNCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3Jl
YXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvUHJpbWl0
aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJvKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdFN1Yik6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
aWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmVxdWFsVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVEaXZT
bWFsbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVy
c1JlcXVpcmVkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpyaWdodFRyaW0pOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6YWxsb2NhdGVGb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0aW1hdGVkU2l6ZSk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCaWdJbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXRTaWduKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNpZ24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omxlbmd0aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpwYXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpvZmZzZXRPZkRhdGEpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGF0YVN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
c2V0RGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6CisgICAgICAgIChK
U0M6OmFzQmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0
b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNCaWdJ
bnQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9NYXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc0lz
T2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAg
ICogcnVudGltZS9QYXJzZUludC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6
CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmluZyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZv
ckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9m
VHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0xMi0wMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTGV0J3Mgc2NyYW1ibGUgQ2xhc3NJbmZvIHBvaW50
ZXJzIGluIGNlbGxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYzJjZWM1YzVh
ZDMyMTc2NGQ4ZDU2Yjk0YjU5OWY2MTVkMmQ1ZDBkLi45YzY4ZTFkYmMyNTAxMzFkOTViM2VhNmQy
N2ZmOTZjMTkxMzg3OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk3LDcg
Kzc5Nyw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3Mzgy
QjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIy
NCAvKiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3
Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5
bGliICovOyB9OwotCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzczOEQxMUVEQjU2
NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyB9OworCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJC
MEIgLyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc3MUQyQ0Y2QkMw
MEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3MzFE
MkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVh
ZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxMjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNf
d3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc0MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5l
cmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3OTFEMkNGNkJDMDBFNzhC
ODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMzQsNiArMTEzNCw3IEBACiAJCTg2
NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZB
OTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyog
SlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ1MEZEREVB
OTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVB
OTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NTcsNiArMzY1OCw4IEBACiAJCTg2ODgw
RjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZh
dGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0JpZ0ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MjFDMzFGOUMyOTQ3MDAxMTU5RjYg
LyogSlNCaWdJbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNC
aWdJbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRB
MDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1
NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFt
ZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIw
MDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBsaW5l
RW5kaW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjUxMSw2ICs2NTE0LDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkg
LyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENBIC8q
IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0MDAw
QjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMzMUY5
QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENCNzAw
MTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8q
IEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8q
IEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBK
U0NhbGxlZS5jcHAgKi8sCkBAIC02NjI5LDEzICs2NjM0LDEzIEBACiAJCQkJMzAzMjE3NURGMUFE
NDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEw
MDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3
IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJMEY3REYxM0QxRTJBRkM0QjAwOTU5NTFCIC8qIEpTU3Ry
aW5nSGVhcENlbGxUeXBlLmNwcCAqLywKKwkJCQkwRjdERjEzRTFFMkFGQzRCMDA5NTk1MUIgLyog
SlNTdHJpbmdIZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIg
LyogSlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJNzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8q
IEpTU3RyaW5nSXRlcmF0b3IuY3BwICovLAogCQkJCTcwRUMwRUJEMUFBMEQ3REEwMEI2QUFGQSAv
KiBKU1N0cmluZ0l0ZXJhdG9yLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyog
SlNTdHJpbmdKb2luZXIuaCAqLywKLQkJCQkwRjdERjEzRDFFMkFGQzRCMDA5NTk1MUIgLyogSlNT
dHJpbmdIZWFwQ2VsbFR5cGUuY3BwICovLAotCQkJCTBGN0RGMTNFMUUyQUZDNEIwMDk1OTUxQiAv
KiBKU1N0cmluZ0hlYXBDZWxsVHlwZS5oICovLAogCQkJCTBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3
RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLywKIAkJCQkwRjkxOUQwQTE1N0VFMDlEMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovLAogCQkJCTcwRUNBNjAwMUFGREJFQTIw
MDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwICovLApAQCAtODAxNSw3ICs4MDIw
LDkgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQg
LyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTExQzFGQUU2MjA5
MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjk2MzAzQTFENDE5MkM4MDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYzMENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MEU5MTlG
NUIxMDEwMDk4RjVFQyAvKiBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtODAyOSw3ICs4MDM2LDYgQEAKIAkJCQk4NkQzQjJDNDEwMTU2
QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0
NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGRENFMTMyMUZCMTFEQTQwMDZGMzkwMSAvKiBJc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZDOTlENTE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTgwODEsNyArODA4Nyw2IEBACiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzQ2hlY2tTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFCREFD
REFDMDA4MEZGNzQgLyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUw
QTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRENF
MTJEMUZBRkI0RTUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1MEMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29tbXV0YXRpdml0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhFMEMxQkYwMjc2QzAwMTNDODhGIC8qIEIzQ29tcGlsYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5MTlCNzgwMUUwMzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBpbGUuaCBp
biBIZWFkZXJzICovLApAQCAtODEzMyw3ICs4MTM4LDYgQEAKIAkJCQkwRkVDODUyQTFCREFDREFD
MDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RDFD
MEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1MkMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQTFDNTAzREVEMDBBRDk0M0EgLyogQjNQdXJl
Q1NFLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzQyMkE2NzFDMTYyNjc4MDBFMkVCOTggLyogQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmggaW4gSGVhZGVycyAqLywKQEAgLTgyNTAsNiArODI1NCw3IEBA
CiAJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21w
YWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUEzQTgxNzk3NDMyRDAwRTg5
M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEyQTFG
QUZBODVGMDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEMzRjQwRTE2RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkRCMkNFQTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpTTG9j
ay5oIGluIEhlYWRlcnMgKi8sCkBAIC04NTA4LDcgKzg1MTMsNiBAQAogCQkJCUE1NDk4MjA0MTg5
MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUMwRkZE
MUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjAy
OUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlv
bkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBF
eGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhGMDFEMDBB
Njk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtODYyNSw3ICs4NjI5
LDYgQEAKIAkJCQlDNDcwM0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5NzFD
MDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9y
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMTkx
QUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLApAQCAt
ODY1Miw2ICs4NjU1LDcgQEAKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3MEE0OTFENTQzQTkzMDA2RTcyMzIgLyogSGVhcENl
bGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEyMjFGQUU4NThDMDA2RjM5MDEg
LyogSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDQUVGRjFFQzREQTg4MDA5
NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMy
QkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04NzMzLDYgKzg3MzcsOCBAQAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAv
KiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwQkQ4MDExNDhFQTZG
MjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUz
QkQyOTAwMjEzRjY0IC8qIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRENFMTMyMUZCMTFEQTQwMDZGMzkwMSAvKiBJc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEyRDFGQUZCNEU1MDA2RjM5MDEgLyogSXNv
U3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAv
KiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRENTVCODFBRTcxNkNBMDA1
MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDExM0Q0QzFB
OERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTg3ODAsNiArODc4Niw3IEBACiAJCQkJOEJDMDY0ODkxRTFBQkE2NDAwQjJCOENBIC8qIEpTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTgwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThBRDRB
OTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2ODkyMUMy
MUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGQTlF
OTIxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODAxLDYgKzg4MDgsNyBAQAogCQkJCUE1RUE3
MEVFMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAv
KiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTJCMEI2OTFGRDIy
N0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtODg2MSw3ICs4ODY5LDYgQEAKIAkJCQlF
M0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDk3MjI3NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZG
MzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzOURB
NEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMzRThEMUQxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04ODkxLDEzICs4ODk4LDEzIEBACiAJCQkJQTc5MERENzAxODJGNDk5
NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJC
RTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY3REYxM0YxRTJBRkM0RDAwOTU5NTFCIC8qIEpTU3RyaW5nSGVhcENlbGxUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJp
bmdJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVG
IC8qIEpTU3RyaW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4
RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRjdERjEzRjFFMkFGQzREMDA5NTk1MUIgLyogSlNTdHJpbmdIZWFwQ2VsbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3
MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZF
QTFGNzVBRDZBMDAwQkNBQUYgLyogSlNUb1dhc20uaCBpbiBIZWFkZXJzICovLApAQCAtOTI1OCw3
ICs5MjY1LDYgQEAKIAkJCQkwRkZCNkMzOTFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDOTUyQjcxOUEyODk4NTAwNjlCMzg2IC8qIFR5cGVQcm9m
aWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5
cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0UxMjIxRkFFODU4QzAwNkYz
OTAxIC8qIEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERjAxOTgzMkRE
NjAwN0Q0QjE5IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzRCMTU4RUJF
OTEwMDRDQjlGRiAvKiB1ZGlzODYuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQxMTU4RUJF
OEQwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBhNzE2MDBlODg3ZDZkOTU1NjQ2N2ZiOTIxZGZkMmQ3NzBkODAz
ZjdjLi43ODdhMmRhMzgxMzcyZWM1NDAwOTYyYzRiOWNlNWU4MDdlM2NjMzRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CkBAIC03NjcsNiArNzY3LDcgQEAgcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUv
SlNBc3luY0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3Bw
CitydW50aW1lL0pTQmlnSW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMWZiM2UxNDNlOTUx
NzczZGM2MTUzNTRjOWU2ZmMyYWE1ZmE4M2ZlZS4uMWE4ZWFiZjRiNDA4NjdlMTZhYjAzMTA4YWYx
YjFkY2VjZjU3NzkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKKyNpbmNsdWRlICJK
U0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyNWI2NGJk
M2YzZjBkZTFkYzVlMWMwNGUzYWZiOTA1NWE0N2IxYzFkLi40MTM2MzExYWVmN2JiNDJiZTRiNWM4
NjM4MzZkYzVhMDIyNzhkNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFy
cmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTc4NCw2ICsxNzg1LDE0IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNvZGVJRCBvcGNv
ZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJp
Z2ludCIpIHsKKyAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CisgICAgICAgICAgICAg
ICAgZW1pdE9wY29kZShvcF9pc19jZWxsX3dpdGhfdHlwZSk7CisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNyY0luZGV4KTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoQmlnSW50VHlwZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewogICAgICAgICAg
ICAgICAgIHJld2luZFVuYXJ5T3AoKTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lz
X29iamVjdF9vcl9udWxsKTsKQEAgLTMxMjEsNiArMzEzMCwyNSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld09iamVjdChSZWdpc3RlcklEKiBkc3QpCiAgICAgcmV0dXJu
IGRzdDsKIH0KIAorSlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDhfdCByYWRpeCkKK3sKKyAgICBCaWdJ
bnRNYXBFbnRyeSBlbnRyeUtleSA9IEJpZ0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1wbCgpLCBy
YWRpeCk7CisgICAgYXV0byBpdCA9IG1fYmlnSW50TWFwLmZpbmQoZW50cnlLZXkpOworICAgIGlm
IChpdCAhPSBtX2JpZ0ludE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAg
ICAKKyAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0
ciwgKnZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4KTsKKyAgICAvLyBGSVhNRTogW0VT
TmV4dF0gRW5hYmxlcyBhIHdheSB0byB0aHJvdyBhbiBlcnJvciBvbiBCeXRlQ29kZUdlbmVyYXRv
ciBzdGVwCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDEzOQorICAgIFJFTEVBU0VfQVNTRVJUKGJpZ0ludEluTWFwKTsKKyAgICBhZGRDb25zdGFudFZh
bHVlKGJpZ0ludEluTWFwKTsKKworICAgIGF1dG8gYWRkZWRFbnRyeSA9IG1fYmlnSW50TWFwLmFk
ZChlbnRyeUtleSwgYmlnSW50SW5NYXApOworICAgIEFTU0VSVChhZGRlZEVudHJ5LmlzTmV3RW50
cnkpOworCisgICAgcmV0dXJuIGFkZGVkRW50cnkuaXRlcmF0b3ItPnZhbHVlOworfQorCiBKU1N0
cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpCiB7CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5n
TWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IGU5NTM0YmIzYTMxNTBkOGZiOWNlNDI0ZjU2MmI1MTJjZDQzM2IxZjIuLjIw
YTgyZTI3ODI0OWZmMGRhNGE2MWJhZjgzMmVjZTA0ZmRmYTVhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC00Niw2ICs0Nyw3IEBACiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMDAsMTAgKzEwMDIs
MjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVDYWxsZWVTYXZlU3Bh
Y2UoKTsKICAgICAgICAgdm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAgICAgIHR5
cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+IE51bWJlck1hcDsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFz
aD4gSWRlbnRpZmllclN0cmluZ01hcDsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZjxUZW1w
bGF0ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+IFRlbXBsYXRlUmVnaXN0cnlLZXlNYXA7Ci0g
ICAgICAgIAorICAgICAgICB1c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6cGFpcjxVbmlxdWVk
U3RyaW5nSW1wbCosIHVpbnQ4X3Q+OworICAgICAgICBzdHJ1Y3QgQmlnSW50RW50cnlIYXNoIHsK
KyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEJpZ0ludE1hcEVudHJ5IGtleSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5LmZpcnN0LT5leGlzdGluZ1N5
bWJvbEF3YXJlSGFzaCgpICsgV1RGOjppbnRIYXNoKGtleS5zZWNvbmQpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChCaWdJbnRNYXBF
bnRyeSBhLCBCaWdJbnRNYXBFbnRyeSBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBhLmZpcnN0ID09IGIuZmlyc3QgJiYgYS5zZWNvbmQgPT0gYi5zZWNvbmQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKworICAgICAg
ICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CisgICAgICAgIHVz
aW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNT
dHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJ
bnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCosIEJpZ0ludEVudHJ5SGFz
aD47CisgICAgICAgIHVzaW5nIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgPSBIYXNoTWFwPFJlZjxU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+OworCiAgICAgICAgIC8vIEhlbHBlciBm
b3IgZW1pdENhbGwoKSBhbmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhl
IHNldCBvZgogICAgICAgICAvLyBleHBlY3RlZCBmdW5jdGlvbnMgaGF2ZSBpZGVudGljYWwgYmVo
YXZpb3IgZm9yIGJvdGggY2FsbCBhbmQgY29uc3RydWN0CiAgICAgICAgIC8vIChpLmUuICJPYmpl
Y3QoKSIgaXMgaWRlbnRpY2FsIHRvICJuZXcgT2JqZWN0KCkiKS4KQEAgLTEwODYsNiArMTEwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmluZyogYWRk
U3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU1ZhbHVlIGFkZEJp
Z0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFJlZjxUZW1wbGF0ZVJl
Z2lzdHJ5S2V5PiYmKTsKIAogICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwg
VW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0
aW9uczsgfQpAQCAtMTE4NSw2ICsxMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5
cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiwgdW5zaWduZWQs
IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCwgRW5jb2RlZEpTVmFsdWVXaXRo
UmVwcmVzZW50YXRpb25IYXNoVHJhaXRzPiBKU1ZhbHVlTWFwOwogICAgICAgICBKU1ZhbHVlTWFw
IG1fanNWYWx1ZU1hcDsKICAgICAgICAgSWRlbnRpZmllclN0cmluZ01hcCBtX3N0cmluZ01hcDsK
KyAgICAgICAgSWRlbnRpZmllckJpZ0ludE1hcCBtX2JpZ0ludE1hcDsKICAgICAgICAgVGVtcGxh
dGVSZWdpc3RyeUtleU1hcCBtX3RlbXBsYXRlUmVnaXN0cnlLZXlNYXA7CiAKICAgICAgICAgU3Rh
dGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgeyAmbV9pbnN0cnVj
dGlvbnMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiMWJhNDMzOWU5Mzk1NDBkN2ViY2E3MGRmODA4NDdm
MzIwLi43ZjNkYzU0NzNkNzRjZTNiMjNjY2RlMmE3YTZjNTEwYTZkOGFmNmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0xMjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5n
Q29uc3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmF0b3Iu
YWRkQmlnSW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApp
bmRleCBmNjhlYWRmMjAyM2FhMjU2ZmM0YjY5NTZhNDkxYmU4N2JkOWVjYTdhLi42NWFiOGFhNzFl
YTc0OWNkNjU0ZWVlNjE4ZmExMmU0ZjY0NzE1MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0x
NzcsNyArMTc3LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0m
IHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVy
cmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZv
ckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBU
eXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJU
KHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlw
ZSgpID09IFN5bWJvbFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8
fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUg
fHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0
TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAg
ICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUg
c2luY2UgZWl0aGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMzVlODRhNWMxNDUxN2ViZWQ4ZDYxNDg3MWY5YWM3YmViMDI0
ZDYwMC4uZGMyOTRmMTBlM2VmNTQwY2Q0NmFlYzcwZDQwYjAzYjBjNGVkZjEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0y
MDIsNiArMjAyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBjYXNlIEJpZ0lu
dFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUlu
dmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJndW1lbnRzKSk7
CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKaW5kZXggYWQ4NjlmMjBlMmU0ZDFiOWFlMGRhNzg3NDgyZmI2ZmU3ZDI4
YWZhYS4uNGNmOGM2ZDRlZDlmMWEzMTJjNDE0M2U1NGIxMDI2YjU1N2E2MDA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoU3RyaW5nSW1w
bDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7CiAKICAgICB7Ci0gICAgICAgIHVpbnQzMl90
IGJpdHMgPSAweDEyMDAwMDsKKyAgICAgICAgdWludDMyX3QgYml0cyA9IDB4NDgwMDAwOwogICAg
ICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2Zp
bGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgICAgICBBU1NFUlQo
QXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMy
KCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDIyMDAwMDsKKyAg
ICAgICAgdWludDMyX3QgYml0cyA9IDB4ODgwMDAwOwogICAgICAgICBVTlVTRURfUEFSQU0oYml0
cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJv
ZmlsZS5saHNTYXdOdW1iZXIoKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIERhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNTRVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUlu
dChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9CiAgICAgewot
ICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyNDAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMg
PSAweDkwMDAwMDsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFBy
b2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7
CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0p
CiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJp
dHMgPSAweDE0MDAwMDsKKyAgICAgICAgdWludDMyX3QgYml0cyA9IDB4NTAwMDAwOwogICAgICAg
ICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7
CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGY0ZDM2MDAx
NmZkNTYyOWE0MjFkMGY4YzRmMTRjMjNiMDhjYjIyYjcuLjRlMmI4NzY5OTljMDQ4MGRlZjMzMzBh
OTY1NGU5OTk5ZGJmYTE5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1MywxMiArMjUzLDEyIEBAIGNvbnN0IElz
SW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogY29uc3QgU2hhZG93Q2hpY2tl
blRhaWxNYXJrZXIgPSBjb25zdGV4cHIgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2Vy
VmFsdWUKIAogIyBBcml0aFByb2ZpbGUgZGF0YQotY29uc3QgQXJpdGhQcm9maWxlSW50ID0gMHgx
MDAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IDB4MTIwMDAwCi1jb25zdCBBcml0aFBy
b2ZpbGVOdW1iZXIgPSAweDIwMDAwMAotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gMHgy
MjAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IDB4MjQwMDAwCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSAweDE0MDAwMAorY29uc3QgQXJpdGhQcm9maWxlSW50ID0g
MHg0MDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IDB4NDgwMDAwCitjb25zdCBBcml0
aFByb2ZpbGVOdW1iZXIgPSAweDgwMDAwMAorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0g
MHg4ODAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IDB4OTAwMDAwCitjb25z
dCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSAweDUwMDAwMAogCiAjIFNvbWUgcmVnaXN0ZXIgY29u
dmVudGlvbnMuCiBpZiBKU1ZBTFVFNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggYWI5NTYxM2U2ZTU1MjgwYmNkYjA0OGYyMjUyYjEyNWMzMWRmM2RhZS4u
M2FkMzg4YzRjOTk2OTg5ZWVhOTMzNDQwMGYwNWYzYjM1Yzc3MTcxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIzMiw2ICsyMzIsMTIgQEAgcHVibGlj
OgogICAgICAgICBpbmNDb25zdGFudHMoKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KKyAgICAKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXIqIGJpZ0ludCwgdWludDhfdCByYWRpeCkKKyAgICB7CisgICAgICAgIGlu
Y0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCaWdJbnRO
b2RlKGxvY2F0aW9uLCAqYmlnSW50LCByYWRpeCk7CisgICAgfQogCiAgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyKiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAppbmRleCA2ZWU2YzVkYmQ1OWFkZTM3ZjJkMWIyMmQyOTE2NDhhZDI5NmY1NDFkLi43NDAz
Y2RmMzM1NTI0ODkyN2Q4MjU5ZTQ5Y2Y2Y2NhMGMzNWFmOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTE1MDAsNyArMTUwMSw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJz
ZVJlc3VsdCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJz
ZUhleChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJsZSwg
Y29uc3QgSWRlbnRpZmllcio+IExleGVyPFQ+OjpwYXJzZUhleCgpCiB7CiAgICAgLy8gT3B0aW1p
emF0aW9uOiBtb3N0IGhleGFkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAgIHVp
bnQzMl90IGhleFZhbHVlID0gMDsKQEAgLTE1MTIsMTAgKzE1MTMsOCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0t
bWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxlIChpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSAm
JiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0gICAgaWYgKG1heGltdW1EaWdpdHMgPj0gMCkgewot
ICAgICAgICByZXR1cm5WYWx1ZSA9IGhleFZhbHVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0cyA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQor
ICAgICAgICByZXR1cm4gaGV4VmFsdWU7CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGluIHRoZSBo
ZXhWYWx1ZSBidWZmZXIuCiAgICAgLy8gVGhlIHZhbHVlcyBhcmUgc2hpZnRlZCBvdXQgYW5kIHBs
YWNlZCBpbnRvIHRoZSBtX2J1ZmZlcjggdmVjdG9yLgpAQCAtMTUzMywxMSArMTUzMiwxNCBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUp
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92
ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2KTsKKyAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAg
ICAgIHJldHVybiBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6
ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVu
dGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9u
OiBtb3N0IGJpbmFyeSB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBiaW5h
cnlWYWx1ZSA9IDA7CkBAIC0xNTU0LDEwICsxNTU2LDggQEAgQUxXQVlTX0lOTElORSBib29sIExl
eGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0
OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49
IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7
Ci0gICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdp
dCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihiaW5hcnlWYWx1ZSk7CiAKICAg
ICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAg
ICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNTY3LDE3ICsxNTY3LDE3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAg
ICAgc2hpZnQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElk
ZW50aWZpZXIqPj4obWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSkpOwogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5k
YXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVy
Kj4+KHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwg
MikpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+Ojpw
YXJzZU9jdGFsKCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3Qgb2N0YWwgdmFsdWVzIGZp
dCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3Qgb2N0YWxWYWx1ZSA9IDA7CkBAIC0xNTk0LDEw
ICsxNTk0LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJs
ZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJSU9j
dGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURp
Z2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IG9j
dGFsVmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicp
KQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRl
bnRpZmllcio+PihvY3RhbFZhbHVlKTsKKwogCiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdp
dHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsKQEAg
LTE2MDcsMTcgKzE2MDYsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9j
dGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAg
aWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVy
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVyblZhbHVl
ID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCA4
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxW
YXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihwYXJzZUludE92ZXJmbG93KG1fYnVm
ZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3VibGUm
IHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91Ymxl
LCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKQogewogICAgIC8v
IE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAg
IHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7CkBAIC0xNjM4LDEwICsxNjM3LDggQEAgQUxXQVlT
X0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSkK
ICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlzQVNDSUlEaWdpdChtX2N1
cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3Vy
cmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmICFp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSAmJiBtX2N1cnJlbnQgIT0g
J24nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNv
bnN0IElkZW50aWZpZXIqPj4oZGVjaW1hbFZhbHVlKTsKIAogICAgICAgICBmb3IgKGludCBpID0g
bWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgICAgcmVjb3JkOChk
aWdpdHNbaV0pOwpAQCAtMTY1MSw4ICsxNjQ4LDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHJlY29yZDgo
bV9jdXJyZW50KTsKICAgICAgICAgc2hpZnQoKTsKICAgICB9CisgICAgCisgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+Piht
YWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CkBAIC0yMTAwLDEwICsyMTAwLDMwIEBAIHN0YXJ0OgogICAgICAgICAgICAg
dG9rZW4gPSBET1Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBnb3Rv
IGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7CisgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNp
bWFsUG9pbnQoKTsKKyAgICAgICAgdG9rZW4gPSBET1VCTEU7CisgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSkgeworICAgICAgICAgICAgaWYgKCFw
YXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4
cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVO
VEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElU
RVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAg
IHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICBpZiAodG9rZW4gPT0gSU5U
RUdFUikKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0
YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxp
dGVyYWwiKTsKKyAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1F
UklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsK
KyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZm
ZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgog
ICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICd4Jykg
eworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICd4Jykp
IHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGhleGFkZWNpbWFs
IGRpZ2l0cyBhZnRlciAnMHgnIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFU
RURfSEVYX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMTMsMTcgKzIxMzMsMjcgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBwcmVmaXguCiAgICAgICAgICAgICBzaGlm
dCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAg
ICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUhleCgpOworICAgICAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihwYXJzZU51bWJlclJlc3VsdCkp
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJs
ZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIq
PihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9
IDE2OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3Vy
cmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVjaW1hbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7
CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfSEVYX05VTUJFUl9FUlJPUlRP
SzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQor
ICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4
MjApID09ICdiJykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1
cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUJpbmFyeURpZ2l0KHBlZWso
MSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
Ik5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyIpOwogICAgICAgICAgICAgICAgIHRva2VuID0g
VU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTMzLDE4ICsyMTYzLDI4
IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnYicgcHJlZml4LgogICAg
ICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VC
aW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlTnVtYmVyUmVzdWx0ID8gV1RGOjpnZXQ8
ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpIDogMDsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRT
dGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50aWZp
ZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVS
X0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJ
R0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRv
a2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmlu
aygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtX2N1
cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlPY3RhbERp
Z2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRlciAnMG8nIik7CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjE1NCwxMyAr
MjE5NCwyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHByZWZp
eC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0g
cGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VOdW1iZXJSZXN1bHQgPyBXVEY6
OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkgOiAwOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNv
bnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+cmFkaXggPSA4OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVu
dGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVN
QkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNo
cmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcyLDM0ICsyMjIy
LDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAg
aWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGF1
dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7CisgICAgICAgICAgICBpZiAocGFy
c2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51
bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0g
V1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAgICAgIHRv
a2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIENoYXJhY3Rlck51bWJlcjoKICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBJTlRFR0VS
ICYmIHRva2VuICE9IERPVUJMRSkpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VEZWNpbWFsKHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VS
OwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICBh
dXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VEZWNpbWFsKCk7CisgICAgICAgICAgICBpZiAo
cGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJz
ZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
ID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlTnVt
YmVyUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIHRv
a2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotaW5OdW1iZXJBZnRl
ckRlY2ltYWxQb2ludDoKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2lt
YWxQb2ludCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRp
Y2F0b3IoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURf
TlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JU
T0s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50
aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPnJhZGl4ID0gMTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwg
J2UnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhw
b25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50
IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQo
KSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
dHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsK
LSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4g
PSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwot
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQp
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGQ4NDVlMmUxNGY1Njlh
NGQzOGUyYzNkOTllZjZjNDY3MjMyNDMyMjAuLjA1MmY5NmQyM2JlZjc2MGE3OWJkNDg3ODI0M2E0
ZWZkNDYwOGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE3NSwx
MCArMTc1LDEwIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0
cmluZ3MsIExleGVyRXNjYXBlUGFyc2VNb2RlIGVzY2FwZVBhcnNlTW9kZT4gQUxXQVlTX0lOTElO
RSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZUNvbXBsZXhFc2NhcGUoYm9vbCBzdHJpY3RNb2RlLCBU
IHN0cmluZ1F1b3RlQ2hhcmFjdGVyKTsKICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVz
dWx0IHBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKiwgUmF3U3RyaW5nc0J1aWxkTW9k
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUp
OwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KTsKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVl
KTsKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpOworICAgIEFMV0FZU19JTkxJTkUgVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIq
PiBwYXJzZUhleCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRv
dWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJzZUJpbmFyeSgpOworICAgIEFMV0FZU19JTkxJ
TkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJz
ZU9jdGFsKCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91Ymxl
LCBjb25zdCBJZGVudGlmaWVyKj4+IHBhcnNlRGVjaW1hbCgpOwogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpOwogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBwYXJzZU11bHRpbGluZUNvbW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYWNkYWM2Y2ExMTY3ZDVkZjRiZjQ2
YWRkZDczOWJlY2VjOGJkMTliZi4uYmJjZGEwOTA2MzYyNmI3Yjg2MzEyMmY3YjVlM2UzYTQ2MDEz
NTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgKQEAgLTkyLDYgKzkyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
KyAgICBpbmxpbmUgQmlnSW50Tm9kZTo6QmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSwgdWludDhfdCByYWRpeCkKKyAgICAg
ICAgOiBDb25zdGFudE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJpZ0ludFR5cGUoKSkKKyAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgICAgICAsIG1fcmFkaXgocmFkaXgpCisgICAgewor
ICAgIH0KKwogICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQogICAgICAgICA6IENv
bnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMmE2
ZGRkMjJjZDhkMTdjZWYyYjNkYmY3MTY4YjMyYTk5MmFhY2RjYy4uNGQyM2E0MWEwN2MxMDRjZGM3
NGRiMzE4ZTIzYmNjZTI2N2Q4ZDE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aApAQCAtMTYyLDYgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0JpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc09iamVjdExpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBcnJheUxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMy
OCw2ICszMjksMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1fdmFsdWU7CiAgICAgfTsKIAorICAgIGNsYXNzIEJpZ0ludE5vZGUgOiBwdWJsaWMgQ29uc3Rh
bnROb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4X3QgcmFkaXgpOworICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CisgICAgICAgIGNvbnN0
IHVpbnQ4X3QgbV9yYWRpeDsKKyAgICB9OworCiAgICAgY2xhc3MgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDQ5MDg5ODU5OTNhYzFi
ZDU0MjZjNGExMWYwMmRhYThlOThkNTMxNTAuLjg0OGM5N2Q0NDNiMjE2ZTY5ZDBiMjg3Y2FjZjUz
MWVmZjY3MzE4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTQ0OTIsNiArNDQ5MiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogCiAgICAgICAgIHJl
dHVybiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29udGV4dCwgaWRlbnQsICppZGVudCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBzdGFydCwgbG9jYXRpb24pOwogICAgIH0KKyAg
ICBjYXNlIEJJR0lOVDogeworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9r
ZW4ubV9kYXRhLmJpZ0ludFN0cmluZzsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CisgICAgICAgIG5leHQoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQmlnSW50KGxvY2F0aW9uLCBpZGVudCwgbV90b2tlbi5tX2RhdGEucmFkaXgpOwor
ICAgIH0KICAgICBjYXNlIFNUUklORzogewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCmluZGV4IDUxZmQ0YTdhZjJlOWM4ZTM1MjczY2NjN2U3NDU5YmQ1OTA5NjE2YzUu
LmMyMDU4YWVlYjBkMzg4ZDgxMTkzMmNmYzdjYTUxMTQwOTQzMDgxNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVu
dW0gSlNUb2tlblR5cGUgewogICAgIEJBQ0tRVU9URSwKICAgICBJTlRFR0VSLAogICAgIERPVUJM
RSwKKyAgICBCSUdJTlQsCiAgICAgSURFTlQsCiAgICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLApA
QCAtMjE4LDYgKzIxOSwxMCBAQCB1bmlvbiBKU1Rva2VuRGF0YSB7CiAgICAgICAgIGJvb2wgZXNj
YXBlZDsKICAgICB9OwogICAgIHN0cnVjdCB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGJp
Z0ludFN0cmluZzsKKyAgICAgICAgdWludDhfdCByYWRpeDsKKyAgICB9OworICAgIHN0cnVjdCB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGNvb2tlZDsKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogcmF3OwogICAgICAgICBib29sIGlzVGFpbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9SZXN1bHRUeXBlLmgKaW5kZXggNGY2NDcxYjU0ZmQ1ZTg4MWRjZGMzMmJjZmNhZjQ0NWZh
NTJhMjg0Mi4uMDNjYWUyYTQ3ZjkwM2I2ZDJkZmU3ZDc3NTIwNWFhZDg4ZjUyMDJmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAgLTMxLDE4ICszMSwxOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgc3RydWN0IE9w
ZXJhbmRUeXBlczsKIAotICAgICAgICB0eXBlZGVmIHVpbnQ4X3QgVHlwZTsKKyAgICAgICAgdXNp
bmcgVHlwZSA9IHVpbnQ4X3Q7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVJbnQzMiA9
IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bWJlciA9IDB4MDI7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZVN0cmluZyA9IDB4MDQ7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bGwgICA9IDB4MDg7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBUeXBlIFR5cGVNYXliZUJvb2wgICA9IDB4MTA7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4MjA7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBl
IFR5cGVNYXliZUJpZ0ludCA9IDB4MjA7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVN
YXliZU90aGVyICA9IDB4NDA7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZUJpdHMg
PSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBUeXBlTWF5YmVOdWxsIHwgVHlw
ZU1heWJlQm9vbCB8IFR5cGVNYXliZU90aGVyOworICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBU
eXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZU51
bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJlQmlnSW50IHwgVHlwZU1heWJlT3RoZXI7CiAK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0c05lZWRlZCA9IDY7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkpID09IFR5
cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCiAgICAgICAg
IGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQpAQCAtNzAsNiArNzEsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKG1fYml0cyAmIFR5cGVCaXRzKSA9PSBUeXBl
TWF5YmVCb29sOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBkZWZpbml0ZWx5SXNCaWdJbnQo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKG1fYml0cyAmIFR5cGVCaXRz
KSA9PSBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKwogICAgICAgICBib29sIG1pZ2h0QmVO
dW1iZXIoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgVHlw
ZU1heWJlTnVtYmVyOwpAQCAtODAsNiArODYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gIW1pZ2h0QmVOdW1iZXIoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAg
ICAgYm9vbCBtaWdodEJlQmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fYml0cyAmIFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
aXNOb3RCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1pZ2h0
QmVCaWdJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGljIFJlc3VsdFR5
cGUgbnVsbFR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShU
eXBlTWF5YmVOdWxsKTsKQEAgLTEwNSwxMSArMTIxLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3Ry
aW5nKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgYWRk
UmVzdWx0VHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5
cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZUJpZ0ludCk7CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIHN0cmluZ1R5cGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVTdHJpbmcp
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBiaWdJbnRU
eXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJl
QmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUg
dW5rbm93blR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShU
eXBlQml0cyk7CkBAIC0xMjEsNyArMTQ3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVs
eUlzU3RyaW5nKCkgfHwgb3AyLmRlZmluaXRlbHlJc1N0cmluZygpKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdHJpbmdUeXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nT3JOdW1iZXJU
eXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc0JpZ0ludCgpICYmIG9wMi5k
ZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmlnSW50VHlwZSgp
OworICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdFR5cGUoKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFVubGlrZSBpbiBDLCBhIGxvZ2ljYWwgb3AgcHJvZHVjZXMgdGhlIHZhbHVlIG9mIHRo
ZQpAQCAtMTM0LDYgKzE2Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJl
dHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc1N0cmlu
ZygpICYmIG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RyaW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJbnQoKSAm
JiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJpZ0lu
dFR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiB1bmtub3duVHlwZSgpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggOGRi
MzVjNzc5NmY0ZDM2ZmE1NDUyNTkxNjBkYzU4OWViODQ5ZDk1Ni4uNTM5YzQ3MzQwZWI2YTY0NWZl
N2NhZjQ0MWMzZjAwZGI1YjNjZjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGNvbnN0IGNvbnN0ZXhwciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAwMDAwMDsKICAgICBl
bnVtIDogaW50IHsgTm9uZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29s
dmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAgUmVz
b2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmlu
Z0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIs
IFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENs
YXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2Fs
bEV4cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJp
bmFyeUV4cHIsCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBB
cnJheUxpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG91YmxlRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJsZUV4cHI7IH0KICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBkb3VibGUpIHsgcmV0dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQp
IHsgcmV0dXJuIEJpZ0ludEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmco
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmlu
Z0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
aW5kZXggMTkzYzkxZTA3YjVjYTk4YWQ3YmMzMGY0NTljYzI1MWJkZTU1Zjk4Zi4uZDY0NzY2YTMw
NGY3NTcyZmQzMmNkMDU0ZTExNzIzOTIyMzg3NDEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMCw2ICszMCw3IEBACiAg
ICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCiAgICAg
bWFjcm8oQllURVNfUEVSX0VMRU1FTlQpIFwKKyAgICBtYWNybyhCaWdJbnQpIFwKICAgICBtYWNy
byhCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhDcmVkZW50aWFs
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDdmNDQ1MjYxYzg0ZDRhYTVhM2VkMjQwNTljY2VhODMxMTkzNDE0YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMCww
ICsxLDYzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xp
bWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog
UGFydHMgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJlbG93OgorICoKKyAqIENvcHlyaWdodCAyMDE3
IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorICoKKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTQgdGhlIERhcnQgcHJvamVjdCBhdXRob3JzLiAgUGxlYXNlIHNlZSB0aGUgQVVU
SE9SUyBmaWxlIFsxXQorICogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEKKyAqIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzJdLgorICoKKyAqIFsxXSBo
dHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9BVVRIT1JTCisgKiBb
Ml0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0ZXIvTElDRU5TRQor
ICoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBHbyBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUK
KyAqIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbM10uCisg
KgorICogWzNdIGh0dHBzOi8vZ29sYW5nLm9yZy9MSUNFTlNFCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZlY3Rvci5oPgorCisjZGVm
aW5lIFNUQVRJQ19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQgYXNz
dW1lcyAiICNjb25kKQorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQmln
SW50OjpzX2luZm8gPQorICAgIHsgIkpTQmlnSW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0JpZ0ludCkgfTsKKwordm9pZCBKU0JpZ0ludDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
QmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6
OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQoreworICAgIHNldFNpZ24o
ZmFsc2UpOworICAgIGlmIChpbml0VHlwZSA9PSBJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJv
KSB7CisgICAgICAgIHZvaWQqIGRhdGEgPSBzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YVN0b3JhZ2Uo
KSk7CisgICAgICAgIG1lbXNldChkYXRhLCAwLCBsZW5ndGgoKSAqIERpZ2l0U2l6ZSk7CisgICAg
fQorfQorCitTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTQmlnSW50KiBK
U0JpZ0ludDo6Y3JlYXRlWmVybyhFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKK3sKKyAgICBKU0Jp
Z0ludCogemVyb0JpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgdm0sIDApOworICAgIHpl
cm9CaWdJbnQtPnNldFNpZ24oZmFsc2UpOworICAgIHJldHVybiB6ZXJvQmlnSW50OworfQorCitz
aXplX3QgSlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKGludCBsZW5ndGgpCit7CisgICAgc2l6ZV90
IHNpemVXaXRoUGFkZGluZyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yoc2l6ZV90
KT4oc2l6ZW9mKEpTQmlnSW50KSk7CisgICAgcmV0dXJuIHNpemVXaXRoUGFkZGluZyArIGxlbmd0
aCAqIHNpemVvZihEaWdpdCk7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IGxlbmd0aCkKK3sKKyAgICBKU0JpZ0lu
dCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAs
IGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJl
LmdldCgpLCBsZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0pOwor
ICAgIHJldHVybiBiaWdJbnQ7Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisK
K0pTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlz
KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6dG9TdHJpbmdPbmVEaWdp
dCgpCit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBp
ZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7CisgICAgICAgIERpZ2l0IHJEaWdpdCA9IGRp
Z2l0KDApOworICAgICAgICBpZiAockRpZ2l0IDw9IDkpCisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwor
SlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3Ry
aW5nVmlldyBzLCB1aW50OF90IHJhZGl4KQoreworICAgIGlmIChzLmlzOEJpdCgpKQorICAgICAg
ICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
MCwgcmFkaXgsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoZXhlYywgdm0sIHMuY2hhcmFj
dGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7Cit9CisKK1N0cmluZyBKU0Jp
Z0ludDo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQgcmFkaXgpCit7CisgICAgaWYgKHRo
aXMtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3Muc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nUmVwKCcwJyk7CisKKyAgICByZXR1cm4gdG9TdHJpbmdHZW5lcmlj
KGV4ZWMsIHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJvKCkKK3sKKyAg
ICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7
Cit9CisKKy8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1h
bmR9IHRvIHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQodWlu
dHB0cl90IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FTU0VSVChz
aXplb2YoZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJUKHNpemVv
ZihzdW1tYW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlwbHlBZGQo
dGhpcywgZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNpZiBVU0UoSlNW
QUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVpbnQ2NF90IFR3
b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMQor
dHlwZWRlZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhBVkVfVFdPX0RJ
R0lUIDAKKyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQg
RGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBh
bG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQg
YiwgRGlnaXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGlnaXQgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIp
OworICAgIGNhcnJ5ICs9IHJlc3VsdCA+PiBEaWdpdEJpdHM7CisKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgKyBiOwor
CisgICAgaWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGlu
aXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25l
IG9yIGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0U3ViKERpZ2l0
IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElHSVQKKyAgICBU
d29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0aWNfY2FzdDxU
d29EaWdpdD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gRGlnaXRCaXRzKSAmIDE7Cisg
ICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBE
aWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgYm9ycm93
ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vu
ZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQuIEhpZ2ggaGFs
ZiBpcyBpbiB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0TXVsKERpZ2l0
IGEsIERpZ2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdv
RGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nhc3Q8VHdv
RGlnaXQ+KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0aXBseSBpbiBo
YWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FIIEFMXSpbQkgg
QkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBbQUwqQkxdICAv
LyByTG93CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAgIC8vICAgICsg
ICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAgICAgIC8vIHJI
aWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIzXSwgbG93ID0g
W1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3QgYmUgY2FyZWZ1
bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBhTG93ID0gYSAm
IEhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IEhhbGZEaWdpdEJpdHM7Cisg
ICAgRGlnaXQgYkxvdyA9IGIgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdoID0gYiA+
PiBIYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICogYkxvdzsKKyAg
ICBEaWdpdCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9IGFIaWdoICog
YkxvdzsKKyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisgICAgRGlnaXQg
Y2FycnkgPSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8IEhhbGZE
aWdpdEJpdHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQyIDw8IEhhbGZE
aWdpdEJpdHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gSGFsZkRpZ2l0Qml0cykg
KyAock1pZDIgPj4gSGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisgICAgcmV0dXJu
IGxvdzsKKyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBvZiB7ZXhw
b25lbnR9LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGlnaXQgSlNC
aWdJbnQ6OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQoreworICAgIERpZ2l0
IHJlc3VsdCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAgICAgICBpZiAo
ZXhwb25lbnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAgICAgZXhw
b25lbnQgPj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50ID0gKGhp
Z2ggPDwgRGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmlnSW50OjpE
aWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZp
c29yLCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNvcik7Cisj
aWYgQ1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3Rp
ZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3JdIgorICAg
ICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBpbiByZHgu
CisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6
IHB1dCB7aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9IGludG8K
KyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhp
Z2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJlbWFpbmRlciA9
IHJlbTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9f
YXNtX18oImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0g
d2lsbCBiZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwg
Ij1kIihyZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVkeCwge2xvd30g
aW50byBlYXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Ig
c3RhY2sgc2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJt
IihkaXZpc29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsK
KyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVsbCA8PCBI
YWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidzIERlbGln
aHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQoZGl2aXNv
cik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAgICBkaXZp
c29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gSGFsZkRpZ2l0Qml0
czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgSGFsZkRpZ2l0TWFzazsKKworICAgIC8vIHtz
fSBjYW4gYmUgMC4gImxvdyA+PiBEaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdlICImIiBp
dCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBhbmQgYWxs
IDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRyX3QpID09
IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChEaWdpdEJpdHMgLSAxKSk7CisgICAgRGln
aXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKERpZ2l0Qml0cyAtIHMpKSAmIHNaZXJv
TWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9IHVuMTAg
Pj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgSGFsZkRpZ2l0TWFzazsK
KyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIgLSBxMSAq
IHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZuMCA+IHJo
YXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAgICByaGF0
ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGlnaXRCYXNl
ICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsKKyAgICBy
aGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGlnaXRCYXNl
IHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAgICAgIHEw
LS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRpZ2l0
QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRlciA9ICh1bjIx
ICoga0hhbGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAgcmV0dXJu
IHExICoga0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBsaWVzIHtz
b3VyY2V9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCisv
LyB7cmVzdWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3IgaW5wbGFj
ZSBtb2RpZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKEpTQmln
SW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpTQmlnSW50
KiByZXN1bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7CisgICAgQVNT
RVJUKHJlc3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1bW1hbmQ7
CisgICAgRGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsK
KyAgICAgICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAgIERpZ2l0
IG5ld0NhcnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBtdWx0aXBs
aWNhdGlvbi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJlbnQgPSBk
aWdpdE11bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8vIEFkZCBsYXN0
IHJvdW5kJ3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQs
IGhpZ2gsIG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNh
cnJ5LCBuZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVwYXJlIGZv
ciBuZXh0IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQpOworICAg
ICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAgICB9CisK
KyAgICBpZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5zZXREaWdp
dChuKyssIGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJzIGRvbid0
IHBhc3MgaW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0LgorICAgICAg
ICB3aGlsZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERp
Z2l0KG4rKywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoY2Fycnkg
KyBoaWdoKSk7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQoreworICAgIGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeC0+bGVuZ3Ro
KCk7IGkrKykgeworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQoaSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8v
IERpdmlkZXMge3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQgaW4ge3F1b3Rp
ZW50fSBhbmQge3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNvbnRyYWN0IGlz
OgorLy8gcXVvdGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRoIDAgPD0gcmVt
YWluZGVyIDwgZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkgaGFuZGxlLCBh
biBhcHByb3ByaWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0ZWQgZm9yIGl0
OyBvdGhlcndpc2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2gu
CisvLyB7cXVvdGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGluLXBsYWNlIGRp
dmlzaW9uLiB7cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRoZSBjYWxsZXIg
aXMgb25seSBpbnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmlnSW50OjphYnNv
bHV0ZURpdlNtYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3Is
IEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAgQVNTRVJUKGRp
dmlzb3IpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQoIXgtPmlzWmVy
bygpKTsKKyAgICByZW1haW5kZXIgPSAwOworICAgIGlmIChkaXZpc29yID09IDEpIHsKKyAgICAg
ICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpCisgICAgICAgICAgICAqcXVvdGllbnQgPSB4Owor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGxlbmd0aCA9IHgtPmxlbmd0aCgpOwor
ICAgIGlmIChxdW90aWVudCAhPSBudWxscHRyKSB7CisgICAgICAgIGlmICgqcXVvdGllbnQgPT0g
bnVsbHB0cikgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgICAgICAgICAgKnF1b3RpZW50ID0gSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgo
ZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7
IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXREaXYocmVtYWluZGVy
LCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICAgICAgICAgICgqcXVvdGll
bnQpLT5zZXREaWdpdChpLCBxKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZv
ciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkKKyAgICAgICAgICAgIGRpZ2l0RGl2
KHJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQor
CisvLyBMb29rdXAgdGFibGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVk
IHBlciBjaGFyYWN0ZXIgb2YgYQorLy8gYmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh
IG51bWJlci4gVG8gaW5jcmVhc2UgYWNjdXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhl
IGFjdHVhbCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgor
Ly8gZm9yICh2YXIgaSA9IDA7IGkgPD0gMzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5s
b2cyKGkpICogMzIpICsgIiwiKTsgfQorY29uc3RleHByIHVpbnQ4X3QgTWF4Qml0c1BlckNoYXJb
XSA9IHsKKyAgICAwLCAgIDAsICAgMzIsICA1MSwgIDY0LCAgNzUsICA4MywgIDkwLCAgOTYsIC8v
IDAuLjgKKyAgICAxMDIsIDEwNywgMTExLCAxMTUsIDExOSwgMTIyLCAxMjYsIDEyOCwgICAgIC8v
IDkuLjE2CisgICAgMTMxLCAxMzQsIDEzNiwgMTM5LCAxNDEsIDE0MywgMTQ1LCAxNDcsICAgICAv
LyAxNy4uMjQKKyAgICAxNDksIDE1MSwgMTUzLCAxNTQsIDE1NiwgMTU4LCAxNTksIDE2MCwgICAg
IC8vIDI1Li4zMgorICAgIDE2MiwgMTYzLCAxNjUsIDE2NiwgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gMzMuLjM2Cit9OworCitzdGF0aWMgY29uc3QgaW50IEJpdHNQZXJDaGFyVGFibGVTaGlm
dCA9IDU7CitzdGF0aWMgY29uc3Qgc2l6ZV90IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyID0g
MXUgPDwgQml0c1BlckNoYXJUYWJsZVNoaWZ0OworCisvLyBDb21wdXRlIChhbiBvdmVyYXBwcm94
aW1hdGlvbiBvZikgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZzoKKy8vIERpdmlk
ZSBiaXQgbGVuZ3RoIG9mIHRoZSBCaWdJbnQgYnkgYml0cyByZXByZXNlbnRhYmxlIHBlciBjaGFy
YWN0ZXIuCit1aW50NjRfdCBKU0JpZ0ludDo6Y2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1
aXJlZChpbnQgbGVuZ3RoLCBpbnQgcmFkaXgsIERpZ2l0IGxhc3REaWdpdCwgYm9vbCBzaWduKQor
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50IGxlYWRpbmdaZXJvcyA9IGNsejY0KGxhc3RE
aWdpdCk7CisjZWxzZQorICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHozMihsYXN0RGlnaXQpOwor
I2VuZGlmCisgICAgc2l6ZV90IGJpdExlbmd0aCA9IGxlbmd0aCAqIERpZ2l0Qml0cyAtIGxlYWRp
bmdaZXJvczsKKworICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGJpdHMgd2UgY2FuIHJlcHJlc2Vu
dCB3aXRoIG9uZSBjaGFyYWN0ZXIuIFdlJ2xsIHVzZSB0aGlzCisgICAgLy8gdG8gZmluZCBhbiBh
cHByb3ByaWF0ZSBjaHVuayBzaXplIGJlbG93LgorICAgIHVpbnQ4X3QgbWF4Qml0c1BlckNoYXIg
PSBNYXhCaXRzUGVyQ2hhcltyYWRpeF07CisKKyAgICAvLyBGb3IgZXN0aW1hdGluZyByZXN1bHQg
bGVuZ3RoLCB3ZSBoYXZlIHRvIGJlIHBlc3NpbWlzdGljIGFuZCB3b3JrIHdpdGgKKyAgICAvLyB0
aGUgbWluaW11bSBudW1iZXIgb2YgYml0cyBvbmUgY2hhcmFjdGVyIGNhbiByZXByZXNlbnQuCisg
ICAgdWludDhfdCBtaW5CaXRzUGVyQ2hhciA9IG1heEJpdHNQZXJDaGFyIC0gMTsKKworICAgIC8v
IFBlcmZvcm0gdGhlIGZvbGxvd2luZyBjb21wdXRhdGlvbiB3aXRoIHVpbnQ2NF90IHRvIGF2b2lk
IG92ZXJmbG93cy4KKyAgICB1aW50NjRfdCBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkID0gYml0
TGVuZ3RoOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgKj0gQml0c1BlckNoYXJUYWJs
ZU11bHRpcGxpZXI7CisKKyAgICAvLyBSb3VuZCB1cC4KKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1Jl
cXVpcmVkICs9IG1pbkJpdHNQZXJDaGFyIC0gMTsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVp
cmVkIC89IG1pbkJpdHNQZXJDaGFyOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgKz0g
c2lnbjsKKyAgICAKKyAgICByZXR1cm4gbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZDsKK30KKwor
U3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgaW50IHJhZGl4KQoreworICAgIFN0cmluZ1ZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5n
OworCisgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOworICAgIEFTU0VSVCgh
eC0+aXNaZXJvKCkpOworCisgICAgaW50IGxlbmd0aCA9IHgtPmxlbmd0aCgpOworICAgIGJvb2wg
c2lnbiA9IHgtPnNpZ24oKTsKKworICAgIHVpbnQ4X3QgbWF4Qml0c1BlckNoYXIgPSBNYXhCaXRz
UGVyQ2hhcltyYWRpeF07CisgICAgdWludDY0X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9
IGNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQobGVuZ3RoLCByYWRpeCwgeC0+ZGln
aXQobGVuZ3RoIC0gMSksIHNpZ24pOworCisgICAgaWYgKG1heGltdW1DaGFyYWN0ZXJzUmVxdWly
ZWQgPiBKU1N0cmluZzo6TWF4TGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoV1RGTW92ZShy
ZXN1bHRTdHJpbmcpKTsKKyAgICB9CisKKyAgICBEaWdpdCBsYXN0RGlnaXQ7CisgICAgaWYgKGxl
bmd0aCA9PSAxKQorICAgICAgICBsYXN0RGlnaXQgPSB4LT5kaWdpdCgwKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgaW50IGNodW5rQ2hhcnMgPSBEaWdpdEJpdHMgKiBCaXRzUGVyQ2hhclRhYmxlTXVs
dGlwbGllciAvIG1heEJpdHNQZXJDaGFyOworICAgICAgICBEaWdpdCBjaHVua0Rpdmlzb3IgPSBk
aWdpdFBvdyhyYWRpeCwgY2h1bmtDaGFycyk7CisKKyAgICAgICAgLy8gQnkgY29uc3RydWN0aW9u
IG9mIGNodW5rQ2hhcnMsIHRoZXJlIGNhbid0IGhhdmUgYmVlbiBvdmVyZmxvdy4KKyAgICAgICAg
QVNTRVJUKGNodW5rRGl2aXNvcik7CisgICAgICAgIGludCBub25aZXJvRGlnaXQgPSBsZW5ndGgg
LSAxOworICAgICAgICBBU1NFUlQoeC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisKKyAgICAgICAg
Ly8ge3Jlc3R9IGhvbGRzIHRoZSBwYXJ0IG9mIHRoZSBCaWdJbnQgdGhhdCB3ZSBoYXZlbid0IGxv
b2tlZCBhdCB5ZXQuCisgICAgICAgIC8vIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoICJyZW1haW5k
ZXIiIQorICAgICAgICBKU0JpZ0ludCogcmVzdCA9IG51bGxwdHI7CisKKyAgICAgICAgLy8gSW4g
dGhlIGZpcnN0IHJvdW5kLCBkaXZpZGUgdGhlIGlucHV0LCBhbGxvY2F0aW5nIGEgbmV3IEJpZ0lu
dCBmb3IKKyAgICAgICAgLy8gdGhlIHJlc3VsdCA9PSByZXN0OyBmcm9tIHRoZW4gb24gZGl2aWRl
IHRoZSByZXN0IGluLXBsYWNlLgorICAgICAgICBKU0JpZ0ludCoqIGRpdmlkZW5kID0gJng7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIERpZ2l0IGNodW5rOworICAgICAgICAgICAgYWJzb2x1
dGVEaXZTbWFsbChleGVjLCAqZGl2aWRlbmQsIGNodW5rRGl2aXNvciwgJnJlc3QsIGNodW5rKTsK
KyAgICAgICAgICAgIEFTU0VSVChyZXN0KTsKKworICAgICAgICAgICAgZGl2aWRlbmQgPSAmcmVz
dDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2h1bmtDaGFyczsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tjaHVuayAlIHJh
ZGl4XSk7CisgICAgICAgICAgICAgICAgY2h1bmsgLz0gcmFkaXg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlQoIWNodW5rKTsKKworICAgICAgICAgICAgaWYgKCFyZXN0LT5kaWdp
dChub25aZXJvRGlnaXQpKQorICAgICAgICAgICAgICAgIG5vblplcm9EaWdpdC0tOworCisgICAg
ICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgY2xlYXIgbW9yZSB0aGFuIG9uZSBkaWdpdCBwZXIgaXRl
cmF0aW9uLCBiZWNhdXNlCisgICAgICAgICAgICAvLyBjaHVua0Rpdmlzb3IgaXMgc21hbGxlciB0
aGFuIG1heCBkaWdpdCB2YWx1ZS4KKyAgICAgICAgICAgIEFTU0VSVChyZXN0LT5kaWdpdChub25a
ZXJvRGlnaXQpKTsKKyAgICAgICAgfSB3aGlsZSAobm9uWmVyb0RpZ2l0ID4gMCk7CisKKyAgICAg
ICAgbGFzdERpZ2l0ID0gcmVzdC0+ZGlnaXQoMCk7CisgICAgfQorCisgICAgZG8geworICAgICAg
ICByZXN1bHRTdHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2xhc3REaWdpdCAlIHJhZGl4XSk7Cisg
ICAgICAgIGxhc3REaWdpdCAvPSByYWRpeDsKKyAgICB9IHdoaWxlIChsYXN0RGlnaXQgPiAwKTsK
KyAgICBBU1NFUlQocmVzdWx0U3RyaW5nLnNpemUoKSk7CisgICAgQVNTRVJUKHJlc3VsdFN0cmlu
Zy5zaXplKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVk
KSk7CisKKyAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvZXMuCisgICAgaW50IG5ld1NpemVOb0xl
YWRpbmdaZXJvZXMgPSByZXN1bHRTdHJpbmcuc2l6ZSgpOworICAgIHdoaWxlIChuZXdTaXplTm9M
ZWFkaW5nWmVyb2VzICA+IDEgJiYgcmVzdWx0U3RyaW5nW25ld1NpemVOb0xlYWRpbmdaZXJvZXMg
LSAxXSA9PSAnMCcpCisgICAgICAgIG5ld1NpemVOb0xlYWRpbmdaZXJvZXMtLTsKKworICAgIHJl
c3VsdFN0cmluZy5zaHJpbmsobmV3U2l6ZU5vTGVhZGluZ1plcm9lcyk7CisKKyAgICBpZiAoc2ln
bikKKyAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZCgnLScpOworCisgICAgc3RkOjpyZXZlcnNl
KHJlc3VsdFN0cmluZy5iZWdpbigpLCByZXN1bHRTdHJpbmcuZW5kKCkpOworCisgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmFkb3B0KFdURk1vdmUocmVzdWx0U3RyaW5nKSk7Cit9CisKK0pTQmlnSW50
KiBKU0JpZ0ludDo6cmlnaHRUcmltKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQoreworICAgIGlm
IChpc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICBpbnQgbm9uWmVyb0luZGV4
ID0gbV9sZW5ndGggLSAxOworICAgIHdoaWxlIChub25aZXJvSW5kZXggPj0gMCAmJiAhZGlnaXQo
bm9uWmVyb0luZGV4KSkKKyAgICAgICAgbm9uWmVyb0luZGV4LS07CisKKyAgICBpZiAobm9uWmVy
b0luZGV4ID09IG1fbGVuZ3RoIC0gMSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICBpbnQg
bmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKKyAgICBKU0JpZ0ludCogdHJpbW1lZEJpZ0lu
dCA9IGNyZWF0ZVdpdGhMZW5ndGgoZXhlYywgdm0sIG5ld0xlbmd0aCk7CisgICAgUkVMRUFTRV9B
U1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgRGlnaXQqIGRhdGEgPSB0cmltbWVkQmlnSW50LT5k
YXRhU3RvcmFnZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmV3TGVuZ3RoOyBpKyspCisg
ICAgICAgIGRhdGFbaV0gPSBkaWdpdChpKTsKKworICAgIHRyaW1tZWRCaWdJbnQtPnNldFNpZ24o
dGhpcy0+c2lnbigpKTsKKworICAgIHJldHVybiB0cmltbWVkQmlnSW50OworfQorCitKU0JpZ0lu
dCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBpbnQgcmFk
aXgsIGludCBjaGFyY291bnQpCit7CisgICAgQVNTRVJUKDIgPD0gcmFkaXggJiYgcmFkaXggPD0g
MzYpOworICAgIEFTU0VSVChjaGFyY291bnQgPj0gMCk7CisKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBzaXplX3QgYml0c1BlckNoYXIgPSBNYXhCaXRz
UGVyQ2hhcltyYWRpeF07CisgICAgc2l6ZV90IGNoYXJzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
aGFyY291bnQpOworICAgIGNvbnN0IGludCByb3VuZHVwID0gQml0c1BlckNoYXJUYWJsZU11bHRp
cGxpZXIgLSAxOworICAgIGlmIChjaGFycyA8PSAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIHJvdW5kdXApIC8gYml0c1BlckNoYXIpIHsKKyAgICAgICAgc2l6ZV90IGJpdHNN
aW4gPSBiaXRzUGVyQ2hhciAqIGNoYXJzOworCisgICAgICAgIC8vIERpdmlkZSBieSAzMiAoc2Vl
IHRhYmxlKSwgcm91bmRpbmcgdXAuCisgICAgICAgIGJpdHNNaW4gPSAoYml0c01pbiArIHJvdW5k
dXApID4+IEJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKyAgICAgICAgaWYgKGJpdHNNaW4gPD0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihNYXhJbnQpKSB7CisgICAgICAgICAgICAvLyBEaXZpZGUgYnkga0Rp
Z2l0c0JpdHMsIHJvdW5kaW5nIHVwLgorICAgICAgICAgICAgaW50IGxlbmd0aCA9IChzdGF0aWNf
Y2FzdDxpbnQ+KGJpdHNNaW4pICsgRGlnaXRCaXRzIC0gMSkgLyBEaWdpdEJpdHM7CisgICAgICAg
ICAgICBpZiAobGVuZ3RoIDw9IE1heExlbmd0aCkgeworICAgICAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChleGVjLCB2bSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGV4ZWMpCisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6ZXN0
aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNCaWdJbnQqPihjZWxsKTsKKyAgICBzaXplX3QgYnVmZmVyRXN0aW1hdGVkU2l6ZSA9
IHRoaXNPYmplY3QtPm1fbGVuZ3RoICogRGlnaXRTaXplOworICAgIHJldHVybiBCYXNlOjplc3Rp
bWF0ZWRTaXplKGNlbGwpICsgYnVmZmVyRXN0aW1hdGVkU2l6ZTsKK30KKworZG91YmxlIEpTQmln
SW50Ojp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ29udmVydGlvbiBmcm9t
ICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiIpKTsKKyAgICByZXR1cm4gMC4w
OworfQorCitib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVj
LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdAoreworICAgIHJlc3VsdCA9
IHRoaXM7CisgICAgbnVtYmVyID0gdG9OdW1iZXIoZXhlYyk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzZlOTQ2ODMxOTUzNGJhYmNjZTEyM2FjMzQxMWEyMzkzMjAyOWRl
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKQEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBM
aW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1
ZGUgPHd0Zi9DYWdlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0JpZ0ludCA6IHB1YmxpYyBK
U0NlbGwgeworICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisKK3B1YmxpYzoKKworICAgIGVudW0g
Y2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFplcm8gfTsKKyAgICAKKyAgICBK
U0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIGludCBsZW5ndGgpOworCisgICAgdm9pZCBpbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNp
emUoSlNDZWxsKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKGludCBsZW5n
dGgpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGNy
ZWF0ZVplcm8oRXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRl
V2l0aExlbmd0aChFeGVjU3RhdGUqLCBWTSYsIGludCBsZW5ndGgpOworCisgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgVk0mKTsK
KworICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2lnbiA9IHNp
Z247IH0KKyAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKworICAgIHZv
aWQgc2V0TGVuZ3RoKGludCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAgICBpbnQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDhfdD4gdG9TdHJpbmdPbmVEaWdpdCgpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJz
ZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOworICAgIAor
ICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqLCBpbnQgcmFkaXgpOworICAgIAorICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsVG9CaWdJbnQoSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KTsKKworICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRv
dWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0OworICAgIGRvdWJsZSB0b051bWJl
cihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdXNpbmcgRGlnaXQgPSB1
aW50cHRyX3Q7CisgICAgc3RhdGljIGNvbnN0IGludCBCaXRzUGVyQnl0ZSA9IDg7CisgICAgc3Rh
dGljIGNvbnN0IGludCBEaWdpdFNpemUgPSBzaXplb2YoRGlnaXQpOworICAgIHN0YXRpYyBjb25z
dCBpbnQgRGlnaXRCaXRzID0gRGlnaXRTaXplICogQml0c1BlckJ5dGU7CisgICAgc3RhdGljIGNv
bnN0IGludCBIYWxmRGlnaXRCaXRzID0gRGlnaXRCaXRzIC8gMjsKKyAgICBzdGF0aWMgY29uc3Qg
RGlnaXQgSGFsZkRpZ2l0TWFzayA9ICgxdWxsIDw8IEhhbGZEaWdpdEJpdHMpIC0gMTsKKyAgICBz
dGF0aWMgY29uc3QgaW50IE1heEludCA9IDB4N0ZGRkZGRkY7CisgICAgCisgICAgLy8gVGhlIG1h
eGltdW0gbGVuZ3RoIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgd291
bGQgYmUKKyAgICAvLyBNYXhJbnQgLyBEaWdpdEJpdHMuIEhvd2V2ZXIsIHdlIHVzZSBhIGxvd2Vy
IGxpbWl0IGZvciBub3csIGJlY2F1c2UKKyAgICAvLyByYWlzaW5nIGl0IGxhdGVyIGlzIGVhc2ll
ciB0aGFuIGxvd2VyaW5nIGl0LgorICAgIC8vIFN1cHBvcnQgdXAgdG8gMSBtaWxsaW9uIGJpdHMu
CisgICAgc3RhdGljIGNvbnN0IGludCBNYXhMZW5ndGggPSAxMDI0ICogMTAyNCAvIChzaXplb2Yo
dm9pZCopICogQml0c1BlckJ5dGUpOworICAgIAorICAgIHN0YXRpYyB1aW50NjRfdCBjYWxjdWxh
dGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQg
bGFzdERpZ2l0LCBib29sIHNpZ24pOworICAgIAorICAgIHN0YXRpYyB2b2lkIGFic29sdXRlRGl2
U21hbGwoRXhlY1N0YXRlKiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRpdmlzb3IsIEpTQmlnSW50Kiog
cXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOworICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVs
dGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kLCBp
bnQsIEpTQmlnSW50KiByZXN1bHQpOworCisgICAgLy8gRGlnaXQgYXJpdGhtZXRpYyBoZWxwZXJz
LgorICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2Fy
cnkpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYg
Ym9ycm93KTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGln
aXQmIGhpZ2gpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdERpdihEaWdpdCBoaWdoLCBEaWdpdCBs
b3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpOworICAgIHN0YXRpYyBEaWdpdCBk
aWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCk7CisKKyAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUqLCBKU0JpZ0ludCosIGludCByYWRpeCk7CisKKyAg
ICBib29sIGlzWmVybygpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorICAg
IHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENoYXJU
eXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJhZGl4LCBib29sIGFs
bG93RW1wdHlTdHJpbmcgPSB0cnVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAw
KTsKKyAgICAgICAgaW50IHAgPSBzdGFydEluZGV4OworCisgICAgICAgIGlmICghYWxsb3dFbXB0
eVN0cmluZyAmJiBzdGFydEluZGV4ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKKyAgICAgICAgd2hpbGUg
KHAgPCBsZW5ndGggJiYgZGF0YVtwXSA9PSAnMCcpCisgICAgICAgICAgICArK3A7CisKKyAgICAg
ICAgaW50IGVuZEluZGV4ID0gbGVuZ3RoIC0gMTsKKyAgICAgICAgLy8gUmVtb3ZpbmcgdHJhaWxp
bmcgc3BhY2VzCisgICAgICAgIHdoaWxlIChlbmRJbmRleCA+PSBwICYmIGlzU3RyV2hpdGVTcGFj
ZShkYXRhW2VuZEluZGV4XSkpCisgICAgICAgICAgICAtLWVuZEluZGV4OworCisgICAgICAgIGxl
bmd0aCA9IGVuZEluZGV4ICsgMTsKKworICAgICAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlWmVybyhleGVjLCB2bSk7CisKKyAgICAgICAgaW50IGxpbWl0MCA9
ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7CisgICAgICAgIGludCBsaW1pdGEgPSAn
YScgKyAocmFkaXggLSAxMCk7CisgICAgICAgIGludCBsaW1pdEEgPSAnQScgKyAocmFkaXggLSAx
MCk7CisKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGV4ZWMsIHZtLCBy
YWRpeCwgbGVuZ3RoIC0gcCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9u
VHlwZTo6V2l0aFplcm8pOworCisgICAgICAgIGZvciAoaW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBp
KyssIHArKykgeworICAgICAgICAgICAgdWludDMyX3QgZGlnaXQ7CisgICAgICAgICAgICBpZiAo
ZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdp
dCA9IGRhdGFbaV0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAm
JiBkYXRhW2ldIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdh
JyArIDEwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8
IGxpbWl0QSkKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmVz
dWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8dWludHB0cl90PihyYWRpeCksIHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oZGlnaXQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbShleGVjLCB2
bSk7CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQmln
SW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJjb3Vu
dCk7CisKKyAgICBKU0JpZ0ludCogcmlnaHRUcmltKEV4ZWNTdGF0ZSosIFZNJik7CisKKyAgICB2
b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0aXBsaWVyLCBEaWdpdCBwYXJ0KTsKKyAg
ICAKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihEaWdpdCk+KHNpemVvZihKU0JpZ0lu
dCkpOworICAgIH0KKyAgICAKKyAgICBEaWdpdCogZGF0YVN0b3JhZ2UoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxEaWdpdCo+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykg
KyBvZmZzZXRPZkRhdGEoKSk7CisgICAgfQorCisgICAgRGlnaXQgZGlnaXQoaW50IG4pCisgICAg
eworICAgICAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIERpZ2l0
KiBkYXRhUHRyID0gZGF0YVN0b3JhZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRhdGFQdHJbbl07Cisg
ICAgfQorCisgICAgdm9pZCBzZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCisgICAgeworICAg
ICAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5ndGgoKSk7CisgICAgICAgIERpZ2l0KiBkaWdp
dFB0ciA9IGRhdGFTdG9yYWdlKCk7CisgICAgICAgIGRpZ2l0UHRyW25dID0gdmFsdWU7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBpbnQgc2l6ZUZvcihpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGxlbmd0aCAqIERpZ2l0U2l6ZTsKKyAgICB9CisKKyAgICBpbnQgbV9sZW5ndGg7
CisgICAgYm9vbCBtX3NpZ247Cit9OworCitpbmxpbmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFs
dWUgdmFsdWUpCit7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTQmlnSW50Kj4odmFsdWUuYXNDZWxsKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKaW5kZXggZDAzMDQ1MjIwZDVlOTUyNjdlZDlmOGY3YjlkMzM2NWE4MzE3OWRkMy4uMTRhZGQ3
Y2I5MzM4ZTNiMjhjNGEyMjFkMzcyODVkNDkyZjUyOWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
QEAgLTEzMCw2ICsxMzEsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlm
IChpc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+c3RyaW5nUHJvdG90eXBlKCk7CisgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJ
bnRdIEltcGxlbWVudCBCaWdJbnRDb25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmlnSW50KCkpOwogICAgICAgICBBU1NFUlQoaXNTeW1i
b2woKSk7CiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN5bWJv
bFByb3RvdHlwZSgpOwogICAgIH0KQEAgLTM3Niw2ICszODAsMTMgQEAgSlNTdHJpbmcqIEpTVmFs
dWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJldHVybkVtcHR5U3Ry
aW5nT25FcnIKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAgIHJldHVy
biBlcnJvclZhbHVlKCk7CiAgICAgfQorICAgIGlmIChpc0JpZ0ludCgpKSB7CisgICAgICAgIEpT
QmlnSW50KiBiaWdJbnQgPSBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDhfdD4gZGlnaXQgPSBiaWdJbnQtPnRvU3RyaW5nT25lRGlnaXQoKTsKKyAgICAgICAgaWYg
KGRpZ2l0KQorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zygmdm0sIGJpZ0ludC0+dG9TdHJpbmcoZXhlYywgMTApKTsKKyAgICB9CiAKICAgICBBU1NFUlQo
aXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhl
YywgUHJlZmVyU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAppbmRleCBjMjRlYTViYmYzNTQ3YjRmZmQ0NWRlZWJhNmRlNDFmMjYxOTZlMzhlLi45ZjM5
YTNjN2RlMDc3ZDIzZGUwMmRiMTkyYWE0M2QyMGUyMDI3ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNBbnlJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAg
ICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTExMWJiZDViY2Vl
YmEyM2NmY2YyODNmZmQ1ZmExMDRjNzcuLjU2Mjk1MThhMmZiMmFkNzU2NGUxNTQwZDQ3ODYzYTVh
ZTM5ZjA5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01Nzgs
NiArNTc5LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29s
IEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmlzQmlnSW50KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBA
IC0xMDIwLDYgKzEwMjYsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1
YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYx
LmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAg
ICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmluZyh2MikpOworICAgIGlm
ICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSksIGFzQmlnSW50KHYyLmFzQ2Vs
bCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4YWMwZWU3ZmJjMWJjMzU3OWVlNjNmNWNiMTZh
OTYwODM3Li43NjdlOGFkYzJlZjNmNzg3YTllYWI2NzU3ODYwZTA0MzZmN2I4OGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBD
b25zdHJ1Y3RUeXBlIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQogCiBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwt
PmlzU3ltYm9sKCkpCisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2wo
KSB8fCBjZWxsLT5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUKIAog
Ym9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0g
ICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgeworICAgIGlmIChj
ZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkg
ewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6
OmZyb20oZXhlYywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKICAgICB9CkBAIC0xNTUsNiAr
MTU1LDggQEAgSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXAKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5
cGUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ltYm9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOworICAg
IGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJ
bnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHBy
ZWZlcnJlZFR5cGUpOwogfQogCkBAIC0xNjQsNiArMTY2LDggQEAgYm9vbCBKU0NlbGw6OmdldFBy
aW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAgICBpZiAoaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT5n
ZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CisgICAgaWYgKGlzQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT5n
ZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBu
dW1iZXIsIHZhbHVlKTsKIH0KIApAQCAtMTczLDYgKzE3Nyw4IEBAIGRvdWJsZSBKU0NlbGw6OnRv
TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1N5bWJv
bCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRv
TnVtYmVyKGV4ZWMpOworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogfQog
CkBAIC0xODEsNiArMTg3LDkgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY28KICAgICBBU1NFUlQo
IWlzT2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0
KTsKKyAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJbnQsIEJp
Z0ludENvbnN0cnVjdG9yIGFuZCBCaWdJbnRQcm90b3R5cGUKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisgICAgUkVMRUFTRV9BU1NFUlQoIWlz
QmlnSW50KCkpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDJlOTE5NzNlZmQ0NDZk
OGY0MjdjZDc1ZDFiYjhiM2JiMjcyNWIxNGUuLjRkYTc3YWJkYjQ5NTA2NTJmZDUzNDk0MmEyYmI2
NTEwMmRhMDBjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0x
MDgsNiArMTA4LDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0
eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29u
c3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25z
dDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNjczNmY1ZjhjMmFiMWM1OTBjY2M0
OWU0ZTI3NDNlZjE4ZDFkMDE2MS4uODkzNGM4NDVkYjZhNTNlYTQ1MDU1MzQwNmJiODlhOTI0ZTM5
ZjZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aApAQCAtMTkyLDYgKzE5MiwxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29u
c3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKK2lubGluZSBib29sIEpT
Q2VsbDo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlw
ZTsKK30KKwogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdHlwZSA9PSBTeW1ib2xUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaAppbmRleCA4NTM1NmQzOTc3YWVkNWM3M2I4OWFmZjA1Yzk3YzI0MmY5NWJiNGVhLi41Nzdk
MThlMDI1YzExYTk5MmNlMTZjODUwY2IyMjE4ZTIxYzZjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4
X3QgewogICAgIENlbGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAg
ICBCaWdJbnRUeXBlLAogCiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1
ZVdyYXBwZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aENvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5o
CmluZGV4IGU4ZjMxNmNmNDJiOGU5Mjg5ZmNhMDg5YjQ4MzEyMTViN2EzMDIwMzMuLjBmZGM3YzM1
NjVjZThhYjFkZGVjNTFkZWZkNGNmMzg1MmMzOTk4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoQ29tbW9uLmgKQEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6
MzIodWludDMyX3QgbnVtYmVyKQogI2VuZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0
X3QgbnVtYmVyKQoreworI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0Nv
dW50ID0gNjQ7CisgICAgaWYgKG51bWJlcikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGlu
X2NsemxsKG51bWJlcik7CisgICAgcmV0dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHpl
cm9Db3VudCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAg
ICBpZiAoIShudW1iZXIgPj4gaSkpCisgICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7Cisj
ZW5kaWYKK30KKwogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBp
biBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9w
ZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRh
dGlvbgogLy8gb2YgdGhlIHJlc3VsdGluZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhv
ZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDU1MGI4ZjcwZDdjNzcyYjE4Zjli
NjQ3MjkwNWE2NGI3Zjc5MGUwYmIuLmE2M2QwMWU0ZDhiZGFmOGQ5YzlhNDYxMjA3YjViNDJhMDg3
NDUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlICJVaW50MTZXaXRoRnJhY3Rpb24uaCIKICNpbmNsdWRl
IDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xMzksOSArMTQw
LDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdl
KEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvdywgaW4KIC8vIGZvIGFueSBudW1iZXIgb2YgZGlnaXRz
IGFuIElFRUUgbnVtYmVyIG1heSByZXF1aXJlIHRvIHJlcHJlc2VudC4KIHR5cGVkZWYgY2hhciBS
YWRpeEJ1ZmZlclsyMTgwXTsKIAotLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRp
Z2l0IGlkZW50aWZ5aW5nIHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KLXN0YXRpYyBjb25z
dCBjaGFyIHJhZGl4RGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6IjsKLQogc3RhdGljIGlubGluZSBjaGFyKiBpbnQ1MlRvU3RyaW5nV2l0aFJhZGl4KGNoYXIq
IHN0YXJ0T2ZSZXN1bHRTdHJpbmcsIGludDY0X3QgaW50NTJWYWx1ZSwgdW5zaWduZWQgcmFkaXgp
CiB7CiAgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA2ZDEwNTU4MjcwOGEyNGEzYWQ0YTRhNTAwZDM5
NDEzZDliOThkYzIwLi45N2NmYTA3YTk2OTQwMjIyNTZjOWMzOGE2NmM3NjQzMzUxN2NkNjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtODIs
NiArODIsOCBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLnN0cmluZ1N0cmluZygpOwogICAgIGlmICh2LmlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiB2bS5zbWFsbFN0cmluZ3Muc3ltYm9sU3RyaW5nKCk7CisgICAgaWYgKHYuaXNCaWdJbnQo
KSkKKyAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5iaWdpbnRTdHJpbmcoKTsKICAgICBp
ZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
KTsKICAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxk
IGJlIHRyZWF0ZWQKQEAgLTExMiw3ICsxMTQsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2LmlzTnVs
bCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYgKHR5
cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUpCisgICAgaWYgKHR5cGUgPT0g
U3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAg
ICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDc4ZTc3YWQxODY0YzhmYTAwNzM4N2MzZjUwYzkzOTIx
MjVmNzE0OTMuLmZiYTMyN2YwZDVkMmQ2MDA2MmFiMzU0ZGZmOWU5ZGRlMWM0YjgxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTQ3OCw2ICs0NzgsNyBAQCBj
b25zdGV4cHIgYm9vbCBlbmFibGVBc3luY0l0ZXJhdGlvbiA9IGZhbHNlOwogICAgIHYoYm9vbCwg
dXNlRmFzdFRMU0Zvcldhc21Db250ZXh0LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxs
IHN0b3JlIGNvbnRleHQgaW4gZmFzdCBUTFMuIElmIGZhbHNlLCB3ZSB3aWxsIHBpbiBpdCB0byBh
IHJlZ2lzdGVyLiIpIFwKICAgICB2KGJvb2wsIHVzZUNhbGxJQ3NGb3JXZWJBc3NlbWJseVRvSlND
YWxscywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgQ2FsbExpbmtJbmZvIHRv
IGlubGluZSBjYWNoZSBXYXNtIHRvIEpTIGNhbGxzLiIpIFwKICAgICB2KGJvb2wsIHVzZU9iamVj
dFJlc3RTcHJlYWQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIE9iamVj
dCBSZXN0L1NwcmVhZCBmZWF0dXJlLiIpIFwKKyAgICB2KGJvb2wsIHVzZUJpZ0ludCwgZmFsc2Us
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKICAg
ICB2KGJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4g
SWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUg
dW5kZWNpZGVkLiIpXAogICAgIHYoYm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3JtYWws
ICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGgg
YSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QYXJzZUludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UGFyc2VJbnQuaAppbmRleCBlNDc5NWVjNGFmNTk5MzgyODQ2ZjRjZDcxMjI4NTBmMmM2ODI4MDc0
Li5mMzEwMTU4NjNkZGY3ZGExZWNkMDdmOTJlYWZiOTA4Y2ZiNzg1OTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKQEAgLTIyNiw0ICsyMjYsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2Vw
dGlvbihTdHJpbmdWaWV3KQogICAgIHJldHVybiBjYWxsYmFjayh2aWV3V2l0aFN0cmluZy52aWV3
KTsKIH0KIAorLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5
aW5nIHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KK2NvbnN0IGNoYXIgcmFkaXhEaWdpdHNb
XSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgK
aW5kZXggODVkNGNiMTU1ODU4M2U4MDFiOWQwMTBiMDEzYzMxNmY2ZjhkMGYzOC4uODg1MGM0YTlh
MzQzOTRmMThmNzVhMzVkNjdiYTNhNDVhMTlmZTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICAgICBtYWNybyh1
bmRlZmluZWQpIFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhzeW1ib2wpIFwKKyAg
ICBtYWNybyhiaWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0U3RyaW5n
KCk7CiAgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6Cisg
ICAgICAgICAgICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWU1MjEwNzA5YTdmNTQx
NmE5ODJhN2M3NWMwYzMzNjFjMmQwMWNlOC4uM2JmY2Y1NzFmNGE4N2EzMWViZjkwNWQ2OGQ0YjUy
ZDZkOGE1NWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaApAQCAtMjAzLDcgKzIwMyw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBw
cm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBl
KTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKLQogfQogCiBp
bmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlb2ZUeXBlLmNwcAppbmRleCBkYjE2MmI3ZjRmNGNlMjNmYjg4MDU2ZGRmNDFjNDhkZTMwZDU2
NGNkLi5hYTNmZmE3YzM4MmUxMDVkNWRhZTRjMWE0ODM2MGQ0MGVmOGJiYzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcApAQCAtNTQsNiArNTQsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVHlwZW9mVHlwZSB0eXBlKQog
ICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgIG91dC5wcmludCgiZnVuY3Rp
b24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50OgorICAg
ICAgICBvdXQucHJpbnQoImJpZ2ludCIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4MTIxOTJhNWE2MmViNjZiYzYxYjI4MDhi
NmY1MzVhNGVkOC4uOTY0ODVkMDJkMjQxYzZkYjc2MmNlODEwNmZmMjg1M2E2YzU5NzBiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaApAQCAtMzEsNiArMzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBlb2ZUeXBlIHsKICAgICBVbmRl
ZmluZWQsCisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAgTnVtYmVyLAogICAgIFN0cmlu
ZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1YWJkZmJiZDg4YmEyODVm
MWEzNThkODcxM2I2NWEyMmU2NTQ5MWUwLi4xYjBjZDI1NjQyNzk5NmJmY2QyMmE2ZmYwM2Y0MGY2
Yzc3ZmFhMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02Niw2ICs2
Niw3IEBACiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3Jh
cHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgpAQCAtMzA1LDYgKzMwNiw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNoTWFwQnVj
a2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0
YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNl
dEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgq
dGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OworICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5zZXQoKnRo
aXMsIEpTU2V0OjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAgIHNlbnRp
bmVsTWFwQnVja2V0LnNldCgqdGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVs
KCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzNjY4NzNiMmI3OWQ5
ZDUzZmNmOWJhZjM2ZjZjNWUyNTlkM2Y5YjAwLi5hMmQ2MzBlNTg3M2IxMWUyZTVkZTQ1MWRkZmE3
ZGIzZWQxMmUyNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQwNiw2ICs0
MDYsNyBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBtYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3Bl
cnR5TmFtZUVudW1lcmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjFi
ZWVlZmM4YThmOTAzNGE1ZGE3MGVkYjdlZWJlOTUxYTNmZjRlMy4uODAyOWU3YWE0YmNjMzE3ZGYx
YjAwMjA3NDc3NjhkOTRlZmFkOTUwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEyLTAyICBDYWlvIExpbWEg
IDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxl
bWVudCBCaWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6
CisKIDIwMTctMTItMDEgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSGFyZGNvZGVkIHB5dGhvbiBwYXRoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdmlydHVhbCBl
bnZpcm9ubWVudC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGRkNTcxZTEzN2Ji
MTI3ZDYwZjRiOTdkNGI2YTkyNjdlMTdmMTRiNDkuLjYwM2M0ZDBjOWQ0YzdjNDJjY2U5M2U0YWRi
MjI4MjYxYmFkMWQzNzUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYg
KzYxNiwxMCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQog
ICAgIHJ1bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09w
dGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIg
LCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBk
ZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJt
aXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RkMGJlNTdiZWUyNTg1N2U0M2Q4OTQ5ZTIy
ODhlODY2YTEwZTA3OS4uMzgxMjk2ZjEwYWZlZTJmZGVmNTMxMGQxMDU1ZDcyMjM3YWQzYzJlZSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxNy0xMi0wMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxz
IGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYmlnLWlu
dC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
c2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKGNhdGNo
KToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1R5cGVFcnJvcik6CisgICAg
ICAgICogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcu
anM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93U3ludGF4
RXJyb3IpOgorCiAyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBKYXZhU2NyaXB0Q29yZTogYWRkIHRlc3QgZm9yIHdlaXJkIGNsYXNzIHN0YXRp
YyBnZXR0ZXJzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwgYi9KU1Rlc3Rz
L2JpZ0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiMTc3ZTI2MjZjMjU0ODhjM2EyOGQ5NWQx
NmU3NTQ2MjU3MjVmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFt
bApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJbnQgdGVzdHMuIFRvIGJlIHJl
bW92ZWQgb25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhpbmQgYSBmZWF0dXJlIGZsYWcu
CisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFscy5qcworICBjbWQ6IHJ1bkJp
Z0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCisgIGNtZDog
cnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxp
dGVyYWwtbGluZS10ZXJtaW5hdG9yLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFs
LWxpbmUtdGVybWluYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWZiNDk5OWVlNDBkYmIwNzJiYTBjYWUw
ZjI3NjY0ZDIwYmE0YjI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcnVuQmln
SW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK3ZhciBkOworCithc3NlcnQo
ZXZhbCgiZD01blx1MDAwQSIpID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQo
ZXZhbCgiZD0xNW5cdTAwMEQiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3Nl
cnQoZXZhbCgiZD0xOW5cdTIwMjg7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKwor
YXNzZXJ0KGV2YWwoImQ9OTVuXHUyMDI5OyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7
CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQTVuIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7
CisKK2Fzc2VydChldmFsKCJkPVx1MDAwRDE1biIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1
bik7CisKK2Fzc2VydChldmFsKCJkPVx1MjAyODE5bjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09
PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD1cdTIwMjk5NW47IikgPT09IDk1bik7Cithc3NlcnQo
ZCA9PT0gOTVuKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFs
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM0
ODA5MGJlY2NkOTdjZGI0N2U0OTRlMmEyYWFhNDljZGUzYTQxOAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKQEAgLTAsMCArMSwxMTMgQEAKKy8v
QCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwo
aW5wdXQpOworICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcik7CisgICAgfQorfQorCisvLyBUZXN0
IDAgY29udmVyc2lvbnMKK2xldCBuID0gMG47Cithc3NlcnQobiA9PT0gMG4pOworCituID0gMDBu
OworYXNzZXJ0KG4gPT09IDBuKTsKKworLy8gQmluYXJ5IHJlcHJlc2VudGF0aW9uCisKK24gPSAw
YjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwYjEwbjsKK2Fzc2VydChuID09PSAy
bik7CisKK24gPSAwYjAxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitsZXQgYmluYXJ5U3RyaW5n
ID0gIjBiMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmlu
ZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0g
MzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKK24gPSAwQjExMTFu
OworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwQjEwbjsKK2Fzc2VydChuID09PSAybik7CisK
K2JpbmFyeVN0cmluZyA9ICIwQjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAg
ICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOwor
YXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOwor
CisvLyBPY3RhbCByZXByZXNlbnRhdGlvbgorCituID0gMG83bjsKK2Fzc2VydChuID09PSA3bik7
CisKK24gPSAwbzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwbzIwbjsKK2Fzc2VydChu
ID09PSAxNm4pOworCituID0gMG8wMDAyMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBP
N247Cithc3NlcnQobiA9PT0gN24pOworCituID0gME8xMG47Cithc3NlcnQobiA9PT0gOG4pOwor
CituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPMjBuOworYXNzZXJ0KG4g
PT09IDE2bik7CisKKy8vIEhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAweGFuOwor
YXNzZXJ0KG4gPT09IDEwbik7CisKK24gPSAweGZmbjsKK2Fzc2VydChuID09PSAyNTVuKTsKKwor
biA9IDB4MDAwZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHhmYWJjbjsKK2Fzc2Vy
dChuID09PSA2NDE4OG4pOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjJuIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIwYjAybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIx
bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvODluIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIwbzA4biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG83bm4iKTsKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjB4Z24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4MGdu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGZubiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMTAwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjFhMG5uIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIxMEUyMG4iKTsKKwordHJ5IHsKKyAgICBldmFsKCItLTEwbiIpOwor
ICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IFJlZmVyZW5jZUVycm9yKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
b3BlcmF0aW9ucy1lcnJvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1l
cnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MGU0N2I3Y2Y3ZDc0Zjc5MTljNGJlNTBhZDQ0Yjc1M2M2ODM0
ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vcGVyYXRpb25z
LWVycm9yLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0
aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dUeXBlRXJyb3IoaW5wdXQp
IHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0KGZhbHNl
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVy
cm9yKTsKKyAgICB9Cit9CisKK2Fzc2VydCgiYSIgKyAxMDBuLCAiYTEwMCIpOworYXNzZXJ0KDEy
OG4gKyAiYmFiYSIsICIxMjhiYWJhIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKyAz
MCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICsgMTVuIik7Cithc3NlcnRUaHJvd1R5cGVF
cnJvcigiMTIwbiArIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41ICsgMTEyMDM0
biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuIC0gMzAiKTsKK2Fzc2VydFRocm93VHlw
ZUVycm9yKCIzNiAtIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gLSAzMC41Iik7
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAtIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dU
eXBlRXJyb3IoIjEwbiAqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgKiAxNW4iKTsK
K2Fzc2VydFRocm93VHlwZUVycm9yKCIxMjBuICogMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJy
b3IoIjQ0LjUgKiAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gLyAzMCIp
OworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2IC8gMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJv
cigiMTIwbiAvIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41IC8gMTEyMDM0biIp
OworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuICoqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVF
cnJvcigiMzYgKiogMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiAqKiAzMC41Iik7
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAqKiAxMTIwMzRuIik7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtdHlwZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjZDMwMTI0NmI5NThmNGM2ZDRkYTExYWY3Y2Qw
YTZiNDA5MmFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBl
LW9mLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9u
IGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBh
c3NlcnRpb24iKTsKK30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0gImJpZ2ludCIpOworYXNzZXJ0
KHR5cGVvZiAxbiAhPT0gIm9iamVjdCIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIxYTc3
NjE1YjliNDU3YzE1NGI1ZjVlOGI3MzE1YWUyNTQxZGFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qcwpAQCAt
MCwwICsxLDExMSBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlucHV0KSB7CisgICAgdHJ5
IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKTsKKyAg
ICB9Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEM1biIpID09PSA1bik7Cith
c3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMDkxNW4iKSA9PT0gMTVuKTsK
K2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwMEIxOW5cdTAwMEI7Iikg
PT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDBDMTE5
bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJkPVx1
MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgi
ZD1cdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2
YWwoImQ9XHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKK2Fzc2Vy
dChldmFsKCJkPTVuXHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2Vy
dChldmFsKCJkPTE1blx1MDAwOSIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fz
c2VydChldmFsKCJkPTE5blx1MDAwQjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOwor
Cithc3NlcnQoZXZhbCgiZD0xMTluXHUwMDBDOyIpID09PSAxMTluKTsKK2Fzc2VydChkID09PSAx
MTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUwMDIwOyIpID09PSA5NW4pOworYXNzZXJ0KGQg
PT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPTUzblx1MDBBMDsiKSA9PT0gNTNuKTsKK2Fzc2Vy
dChkID09PSA1M24pOworCithc3NlcnQoZXZhbCgiZD0zOW5cdUZFRkY7IikgPT09IDM5bik7Cith
c3NlcnQoZCA9PT0gMzluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAwQ2RcdTAwMENcdTAw
MEM9XHUwMDBDXHUwMDBDNW5cdTAwMEM7XHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1
bik7CisKK2Fzc2VydChldmFsKCJcdTAwMDlcdTAwMDlkXHUwMDA5XHUwMDA5PVx1MDAwOVx1MDAw
OTE1blx1MDAwOTsiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZh
bCgiXHUwMDBCXHUwMDBCZFx1MDAwQlx1MDAwQj1cdTAwMEJcdTAwMEIxOW5cdTAwMEI7IikgPT09
IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAwQ2Rc
dTAwMEM9XHUwMDBDXHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7
CisKK2Fzc2VydChldmFsKCJcdTAwMjBkXHUwMDIwPVx1MDAyMFx1MDAyMDk1bjsiKSA9PT0gOTVu
KTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiXHUwMEEwZFx1MDBBMD1cdTAw
QTBcdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2
YWwoIlx1RkVGRmRcdUZFRkY9XHVGRUZGXHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQg
PT09IDM5bik7CisKKy8vIEFzc2VydCBlcnJvcnMKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MGJcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMEIxMTAxbiIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMDkxMTExMTFuIik7Cithc3NlcnRUaHJvd1N5
bnRheEVycm9yKCIwYlx1MDAyMDEwMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJc
dTAwQTAxMDExbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdUZFRkYxMTEwMDBuIik7
CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBDMm4iKTsKK2Fzc2VydFRocm93U3lu
dGF4RXJyb3IoIjBvXHUwMDBCNDVuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAw
OTc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwMjA3NzduIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIwb1x1MDBBMDE3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIwb1x1RkVGRjE3MzYxbiIpOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQzJu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQjQ1biIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMHhcdTAwMDk3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUw
MDIwNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwQTAxNzc3biIpOworYXNz
ZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdUZFRkYxNzM2MW4iKTsKKworYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcigiMlx1MDAwQ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjQ1XHUwMDBCbiIp
OworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNzdcdTAwMDluIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCI3NzdcdTAwMjBuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxNzc3XHUwMEEw
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTczNjFcdUZFRkZuIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328448</attachid>
            <date>2017-12-05 07:11:15 -0800</date>
            <delta_ts>2017-12-09 17:51:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179000-20171205131111.patch</filename>
            <type>text/plain</type>
            <size>116631</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGQ5ZWZjOWJkMGQ2OTIyNWRlOGNjNDRmMWE2NWJiOTM5YjU2YjhjLi4yOWRmNWQ0NzY5YzM5NThj
Yzk3ZjZmZmE3ZDJhMGVhZTlkZjljOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTcgQEAKKzIwMTctMTItMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBh
bmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0
aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBXZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50
IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnREYXRhXV0KKyAgICAgICAgZmllbGQgaW1w
bGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IGFzIGlubGluZSBzdG9yYWdlIG9mIEpTQmln
SW50IHRvCisgICAgICAgIHRha2UgYWR2YW50YWdlcyBvbiBwZXJmb3JtYW5jZSBkdWUgdG8gY2Fj
aGUgbG9jYWxpdHkuIFRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgNjQgb3IgMzIg
Yml0d2lzZSBhcml0aG1ldGljIG9wZXJhdGlvbnMuCisgICAgICAgIEpTQmlnSW50IGFsc28gaGFz
IG1fc2lnbiB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0JpZ0ludERhdGFdXSBhbmQKKyAgICAgICAg
bV9sZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJbnQgbGVuZ3RoLgorICAgICAgICBUaGUg
aW1wbGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBWOCBvbmUuIFtbQmlnSW50RGF0YV1dIGlz
IG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50OjpzZXREaWdpdChpbmRleCwgdmFsdWUp
IGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJhdGlvbnMuCisgICAgICAgIFdlIGFsc28g
aGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBhcml0aG1ldGljcyBvdmVyIGRpZ2l0cy4K
KworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgb24gb3VyIHJlcHJlc2Vu
dGF0aW9uLAorICAgICAgICBKU0JpZ0ludDo6ZGF0YVN0b3JhZ2UoKVswXSByZXByZXNlbnRzIHRo
ZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdCBhbmQKKyAgICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9y
YWdlKClbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRoZSBtb3N0IHNpZ2luaWZpY2FudCBkaWdp
dC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhl
IEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAgICAgc3ludGF4IHBhcnNpbmcgc3VwcG9y
dC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9uIEJpZ0ludHMgaXMgYWxzbyBiZWluZwor
ICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVzdHMuCisgICAgICAgIFRoZXNlIGZlYXR1
cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQgYSBydW50aW1lIGZsYWdlICItLXVzZUJp
Z0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCaWdJbnRFbnRy
eUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6QmlnSW50RW50
cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Omlz
VG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBsbGludC9MTEludERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6
CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBh
cnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlT2N0YWwpOgorICAgICAg
ICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46
OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZUhleCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6QmlnSW50Tm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0JpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZhbHVlKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFy
eUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAg
KiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0
ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjptaWdodEJlQmln
SW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6aXNOb3RCaWdJbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjphZGRSZXN1bHRUeXBlKToKKyAgICAgICAgKEpT
Qzo6UmVzdWx0VHlwZTo6YmlnSW50VHlwZSk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmZv
ckFkZCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmZvckxvZ2ljYWxPcCk6CisgICAgICAg
ICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpKU0JpZ0ludCk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVa
ZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9QcmltaXRpdmUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmdPbmVEaWdpdCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpwYXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0
b1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojppc1plcm8pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6aW5wbGFjZU11bHRpcGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OmRpZ2l0QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0U3ViKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmRpZ2l0TXVsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0
UG93KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0RGl2KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmludGVybmFsTXVsdGlwbHlBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
ZXF1YWxUb0JpZ0ludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxs
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVx
dWlyZWQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0VHJpbSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojph
bGxvY2F0ZUZvcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmdldFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Jp
Z0ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
ZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Om9m
ZnNldE9mRGF0YSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXRE
aWdpdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzaXplRm9yKToKKyAgICAgICAgKEpTQzo6
YXNCaWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0
QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2Jq
ZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01h
dGhDb21tb24uaDoKKyAgICAgICAgKEpTQzo6Y2x6NjQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmpl
Y3RUeXBlT3JOdWxsKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL1BhcnNlSW50Lmg6CisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoKKyAg
ICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjp0eXBlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9v
a3VwUHJpbWl0aXZlSW1wbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBl
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6Cisg
ICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE3LTEyLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0
aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXRoOiBkb24ndCByZWR1bmRhbnRseSBjaGVjayBm
b3IgZXhjZXB0aW9ucywganVzdCByZWxlYXNlIHNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGNjMmNlYzVjNWFkMzIxNzY0ZDhkNTZiOTRiNTk5ZjYxNWQyZDVkMGQuLjljNjhl
MWRiYzI1MDEzMWQ5NWIzZWE2ZDI3ZmY5NmMxOTEzODc5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03OTcsNyArNzk3LDcgQEAKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQz
NDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8q
IFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2
RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07Ci0JCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIw
QiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87IH07CisJCTM3
QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBh
cnNlSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDEyOTUyNzcxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFs
c193cmFwcGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9p
bnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzQxRDJDRjZBQzAwRTc4
Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9u
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
Mjk1Mjc5MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRl
ci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1
Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEz
NCw2ICsxMTM0LDcgQEAKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0Qjgx
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBD
QjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2ODkyMUMy
MUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5
RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBS
ZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4
MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY1Nyw2
ICszNjU4LDggQEAKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0
MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYy
ODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIx
QzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmlnSW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODky
MUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0JpZ0ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3VsdFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZBMDU0NDYxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5hc20uYXNtOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5hc207IHBhdGggPSBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZBMDU0NDcxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTExLDYgKzY1MTQsOCBAQAogCQkJCTVCNzBD
RkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLywKIAkJCQk4QkMwNjQ4
NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKIAkJ
CQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgg
Ki8sCisJCQkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNwcCAqLywKKwkJ
CQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4
RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5
MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8sCiAJCQkJNjU3Q0Y0NTYx
OUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKQEAgLTY2MjksMTMgKzY2MzQsMTMg
QEAKIAkJCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8sCiAJ
CQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjky
QTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQkwRjdERjEzRDFFMkFG
QzRCMDA5NTk1MUIgLyogSlNTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwICovLAorCQkJCTBGN0RGMTNF
MUUyQUZDNEIwMDk1OTUxQiAvKiBKU1N0cmluZ0hlYXBDZWxsVHlwZS5oICovLAogCQkJCUZFRkQ2
RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk3MEVDMEVC
QzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgKi8sCiAJCQkJNzBFQzBF
QkQxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuaCAqLywKIAkJCQkyNjAwQjVB
NDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLAotCQkJCTBGN0RGMTNEMUUy
QUZDNEIwMDk1OTUxQiAvKiBKU1N0cmluZ0hlYXBDZWxsVHlwZS5jcHAgKi8sCi0JCQkJMEY3REYx
M0UxRTJBRkM0QjAwOTU5NTFCIC8qIEpTU3RyaW5nSGVhcENlbGxUeXBlLmggKi8sCiAJCQkJMEY5
MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovLAogCQkJ
CTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCiAJ
CQkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAg
Ki8sCkBAIC04MDE1LDcgKzgwMjAsOSBAQAogCQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5
QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2
MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNBMUQ0MTkyQzgwMDU2MDlEOSAvKiBBbGxvY2F0b3JB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMg
LyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNzMwOTExQzBDRDcw
QzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVFQTcwRTkxOUY1QjEwMTAwOThGNUVDIC8qIEFsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTQ4RDE5MTE3NzIzNjVCMDBDNjVBNUYgLyog
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDI5LDcgKzgwMzYsNiBA
QAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9w
Y29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElz
b0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODA4MSw3ICs4MDg3LDYgQEAKIAkJCQkw
RkVDODUwNjFCREFDREFDMDA4MEZGNzQgLyogQjNDaGVja1NwZWNpYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTA4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NTBBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZEQ0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwQzFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRh
dGl2aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwQzFCRjAyNzZDMDAxM0M4OEYgLyog
QjNDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkxOUI3ODAxRTAzNTU5QzAwNUJF
RUQ4IC8qIEIzQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTMzLDcgKzgxMzgsNiBAQAog
CQkJCTBGRUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3Jh
bWJsZWRQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1Byb2NlZHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzI1Q0FBMUM1MDNE
RUQwMEFEOTQzQSAvKiBCM1B1cmVDU0UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNDIyQTY3MUMx
NjI2NzgwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCBpbiBIZWFkZXJzICovLApA
QCAtODI1MCw2ICs4MjU0LDcgQEAKIAkJCQk2NTUzQTMzMjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29t
bW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFMzkxNDFB
QjE0RDAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBs
ZXhHZXRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREIyQ0VBMTc0ODk2QzcwMDdCM0Mx
QiAvKiBDb25jdXJyZW50SlNMb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MDgsNyArODUxMyw2
IEBACiAJCQkJQTU0OTgyMDQxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAv
KiBBbGxvY2F0b3JGb3JNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEyREUxMDE5NzlENUZE
MDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDAw
RTE2RjVDRDAwQjM0NDYwIC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04NjI1LDcgKzg2MjksNiBAQAogCQkJCUM0NzAzQ0Q1MTkyODQ0Q0MwMDEzRkJFQSAv
KiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzBCNzkxOTUxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0UxMkExRkFGQTg1RjAwNkYzOTAxIC8q
IENvbXBsZXRlU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTk5MUMwMjRBMjkw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5
MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAxOTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5o
IGluIEhlYWRlcnMgKi8sCkBAIC04NjUyLDYgKzg2NTUsNyBAQAogCQkJCTE0QkE3QTk4MTNBQURG
RjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzNEMkIwQTFEMzQzMTYy
MDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDcwQTQ5MUQ1NDNB
OTMwMDZFNzIzMiAvKiBIZWFwQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRENF
MTIyMUZBRTg1OEMwMDZGMzkwMSAvKiBIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMENBRUZGMUVDNERBODgwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9v
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg3MzMsNiArODczNyw4IEBACiAJCQkJNzA4RUJF
MjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElz
b0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRENFMTJEMUZB
RkI0RTUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEI5RjZE
NTYxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNEQ1NUI4MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMu
aCBpbiBIZWFkZXJzICovLApAQCAtODc4MCw2ICs4Nzg2LDcgQEAKIAkJCQk4QkMwNjQ4OTFFMUFC
QTY0MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxQTBFMTZGNUNEMDBC
MzQ0NjAgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTg4MDEsNiAr
ODgwOCw3IEBACiAJCQkJQTVFQTcwRUUxOUY1QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJlZklu
c3BlY3RvclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RDJFNjY1MTk1RTE3NDAwMEE1
MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4Q0Qx
RDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZF
QzE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODYx
LDcgKzg4NjksNiBAQAogCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1Mzkg
LyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMThDQkMxMUI4QUVGNTEw
MEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjQwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg4OTEsMTMgKzg4OTgsMTMgQEAK
IAkJCQlBNzkwREQ3MDE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjdERjEzRjFFMkFGQzREMDA5NTk1MUIgLyogSlNTdHJpbmdI
ZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYw
QiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUMwRUMzMUFBMEQ3
REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAw
QjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0RGMTNGMUUyQUZDNEQwMDk1OTUxQiAvKiBK
U1N0cmluZ0hlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBB
MjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
RUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFENUMzNkVBMUY3NUFENkEwMDBCQ0FBRiAvKiBKU1RvV2FzbS5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MjU4LDcgKzkyNjUsNiBAQAogCQkJCTBGRkI2QzM5MUFGNDhEREMwMERC
MUJGNyAvKiBUeXBlb2ZUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkM5NTJCNzE5QTI4OTg1
MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERFQzE5
ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkRDRTEyMjFGQUU4NThDMDA2RjM5MDEgLyogSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJENERGMDE5ODMyREQ2MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNDI3NDExNThFQkU4RDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGE3MTYwMGU4ODdkNmQ5NTU2
NDY3ZmI5MjFkZmQyZDc3MGQ4MDNmN2MuLjc4N2EyZGEzODEzNzJlYzU0MDA5NjJjNGI5Y2U1ZTgw
N2UzY2MzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTc2Nyw2ICs3NjcsNyBA
QCBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcAogcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKIHJ1bnRpbWUvSlNDU2NyYW1i
bGVkUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCAxZmIzZTE0M2U5NTE3NzNkYzYxNTM1NGM5ZTZmYzJhYTVmYTgzZmVlLi4xYThlYWJm
NGI0MDg2N2UxNmFiMDMxMDhhZjFiMWRjZWNmNTc3OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
IkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1h
dGhJQy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDI1YjY0YmQzZjNmMGRlMWRjNWUxYzA0ZTNhZmI5MDU1YTQ3YjFjMWQuLjQx
MzYzMTFhZWY3YmI0MmJlNGI1Yzg2MzgzNmRjNWEwMjI3OGQ0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0x
Nzg0LDYgKzE3ODUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVh
bGl0eU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QKICAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoU3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGRzdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJ
bnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgeworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5
T3AoKTsKKyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsK
KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZHN0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJv
YmplY3QiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOwogICAgICAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3BfaXNfb2JqZWN0X29yX251bGwpOwpAQCAtMzEyMSw2ICszMTMwLDI1
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCkKICAgICByZXR1cm4gZHN0OwogfQogCitKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJhdG9y
OjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50OF90
IHJhZGl4KQoreworICAgIEJpZ0ludE1hcEVudHJ5IGVudHJ5S2V5ID0gQmlnSW50TWFwRW50cnko
aWRlbnRpZmllci5pbXBsKCksIHJhZGl4KTsKKyAgICBhdXRvIGl0ID0gbV9iaWdJbnRNYXAuZmlu
ZChlbnRyeUtleSk7CisgICAgaWYgKGl0ICE9IG1fYmlnSW50TWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlOworICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmln
SW50OjpwYXJzZUludChudWxscHRyLCAqdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgp
OworICAgIC8vIEZJWE1FOiBbRVNOZXh0XSBFbmFibGVzIGEgd2F5IHRvIHRocm93IGFuIGVycm9y
IG9uIEJ5dGVDb2RlR2VuZXJhdG9yIHN0ZXAKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTM5CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50SW5NYXAp
OworICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworCisgICAgYXV0byBhZGRlZEVu
dHJ5ID0gbV9iaWdJbnRNYXAuYWRkKGVudHJ5S2V5LCBiaWdJbnRJbk1hcCk7CisgICAgQVNTRVJU
KGFkZGVkRW50cnkuaXNOZXdFbnRyeSk7CisKKyAgICByZXR1cm4gYWRkZWRFbnRyeS5pdGVyYXRv
ci0+dmFsdWU7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29u
c3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBKU1N0cmluZyomIHN0
cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk1MzRiYjNhMzE1MGQ4ZmI5Y2U0MjRm
NTYyYjUxMmNkNDMzYjFmMi4uMjBhODJlMjc4MjQ5ZmYwZGE0YTYxYmFmODMyZWNlMDRmZGZhNWE0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIK
QEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMTAwMCwxMCArMTAwMiwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBh
bGxvY2F0ZUNhbGxlZVNhdmVTcGFjZSgpOwogICAgICAgICB2b2lkIGFsbG9jYXRlQW5kRW1pdFNj
b3BlKCk7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVy
TWFwOwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmlu
ZyosIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU3RyaW5nTWFwOwotICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj4gVGVtcGxh
dGVSZWdpc3RyeUtleU1hcDsKLSAgICAgICAgCisgICAgICAgIHVzaW5nIEJpZ0ludE1hcEVudHJ5
ID0gc3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgdWludDhfdD47CisgICAgICAgIHN0cnVj
dCBCaWdJbnRFbnRyeUhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goQmln
SW50TWFwRW50cnkga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBr
ZXkuZmlyc3QtPmV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgKyBXVEY6OmludEhhc2goa2V5LnNl
Y29uZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKEJpZ0ludE1hcEVudHJ5IGEsIEJpZ0ludE1hcEVudHJ5IGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPT0gYi5maXJzdCAmJiBhLnNlY29u
ZCA9PSBiLnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwor
ICAgICAgICB9OworCisgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBK
U1ZhbHVlPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9IEhhc2hNYXA8VW5p
cXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPjsKKyAgICAgICAg
dXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTQmln
SW50KiwgQmlnSW50RW50cnlIYXNoPjsKKyAgICAgICAgdXNpbmcgVGVtcGxhdGVSZWdpc3RyeUtl
eU1hcCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj47CisK
ICAgICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRo
aXMgd29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVjdGVkIGZ1bmN0aW9u
cyBoYXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBjb25zdHJ1Y3QKICAg
ICAgICAgLy8gKGkuZS4gIk9iamVjdCgpIiBpcyBpZGVudGljYWwgdG8gIm5ldyBPYmplY3QoKSIp
LgpAQCAtMTA4Niw2ICsxMTA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIEpTU3RyaW5nKiBhZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIEpTVmFsdWUgYWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4
X3QgcmFkaXgpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29u
c3RhbnQoUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYpOwogCiAgICAgICAgIFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0aW9ucygp
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC0xMTg1LDYgKzEyMDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJl
c2VudGF0aW9uLCB1bnNpZ25lZCwgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNo
LCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM+IEpTVmFsdWVNYXA7
CiAgICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJZGVudGlmaWVyU3Ry
aW5nTWFwIG1fc3RyaW5nTWFwOworICAgICAgICBJZGVudGlmaWVyQmlnSW50TWFwIG1fYmlnSW50
TWFwOwogICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtl
eU1hcDsKIAogICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGljUHJvcGVydHlB
bmFseXplciB7ICZtX2luc3RydWN0aW9ucyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDIzNWFhNmIxYmE0MzM5ZTkz
OTU0MGQ3ZWJjYTcwZGY4MDg0N2YzMjAuLjdmM2RjNTQ3M2Q3NGNlM2IyM2NjZGUyYTdhNmM1MTBh
NmQ4YWY2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKQEAgLTEyMiw2ICsxMjIsMTEgQEAgSlNWYWx1ZSBTdHJpbmdOb2Rl
Ojpqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5hZGRTdHJpbmdDb25zdGFudChtX3ZhbHVlKTsKIH0KIAorSlNWYWx1ZSBCaWdJ
bnROb2RlOjpqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvci5hZGRCaWdJbnRDb25zdGFudChtX3ZhbHVlLCBtX3JhZGl4KTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE51bWJlck5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IGY2OGVhZGYyMDIzYWEyNTZmYzRiNjk1NmE0OTFiZTg3
YmQ5ZWNhN2EuLjY1YWI4YWE3MWVhNzQ5Y2Q2NTRlZWU2MThmYTEyZTRmNjQ3MTUzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlz
VG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVl
JgogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZv
ck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7
Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0
cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CisgICAgICAgICAgICBBU1NF
UlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50
eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKICAgICAg
ICAgICAgIGlmICghaXNTdHJpY3RNb2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlz
T2JqZWN0KCkpOwogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBz
dHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBlaXRoZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAzNWU4NGE1YzE0NTE3ZWJl
ZDhkNjE0ODcxZjlhYzdiZWIwMjRkNjAwLi5kYzI5NGYxMGUzZWY1NDBjZDQ2YWVjNzBkNDBiMDNi
MGM0ZWRmMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTIwMiw2ICsyMDIsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdz
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YQogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xU
eXBlOgorICAgIGNhc2UgQmlnSW50VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZy
YW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxs
RnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBhZDg2OWYyMGUyZTRkMWI5
YWUwZGE3ODc0ODJmYjZmZTdkMjhhZmFhLi40Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZi
NTU3YTYwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSA4KTsKIAogICAg
IHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTIwMDAwOworICAgICAgICB1aW50MzJfdCBi
aXRzID0gMHg0ODAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAgQXJp
dGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMy
KCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYg
dm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6OmZyb21JbnQoYml0cykucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgdWludDMyX3Qg
Yml0cyA9IDB4MjIwMDAwOworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg4ODAwMDA7CiAgICAg
ICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmls
ZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwpAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgICAgICBBU1NFUlQo
QXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMy
KCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDI0MDAwMDsKKyAg
ICAgICAgdWludDMyX3QgYml0cyA9IDB4OTAwMDAwOwogICAgICAgICBVTlVTRURfUEFSQU0oYml0
cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJv
ZmlsZS5saHNTYXdOdW1iZXIoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIERhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNTRVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUlu
dChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MTQwMDAwOworICAgICAgICB1aW50MzJfdCBiaXRz
ID0gMHg1MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAgQXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggZjRkMzYwMDE2ZmQ1NjI5YTQyMWQwZjhjNGYxNGMyM2IwOGNiMjJiNy4uNGUy
Yjg3Njk5OWMwNDgwZGVmMzMzMGE5NjU0ZTk5OTlkYmZhMTliOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUzLDEy
ICsyNTMsMTIgQEAgY29uc3QgSXNJbnZhbGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFsaWRhdGVk
CiBjb25zdCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2Vu
OjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1ZQogCiAjIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBB
cml0aFByb2ZpbGVJbnQgPSAweDEwMDAwMAotY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gMHgx
MjAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IDB4MjAwMDAwCi1jb25zdCBBcml0aFBy
b2ZpbGVOdW1iZXJJbnQgPSAweDIyMDAwMAotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVy
ID0gMHgyNDAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IDB4MTQwMDAwCitjb25z
dCBBcml0aFByb2ZpbGVJbnQgPSAweDQwMDAwMAorY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0g
MHg0ODAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IDB4ODAwMDAwCitjb25zdCBBcml0
aFByb2ZpbGVOdW1iZXJJbnQgPSAweDg4MDAwMAorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVt
YmVyID0gMHg5MDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IDB4NTAwMDAwCiAK
ICMgU29tZSByZWdpc3RlciBjb252ZW50aW9ucy4KIGlmIEpTVkFMVUU2NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhYjk1NjEzZTZlNTUyODBiY2RiMDQ4
ZjIyNTJiMTI1YzMxZGYzZGFlLi4zYWQzODhjNGM5OTY5ODllZWE5MzM0NDAwZjA1ZjNiMzVjNzcx
NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjMy
LDYgKzIzMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGluY0NvbnN0YW50cygpOwogICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9kZShsb2NhdGlvbiwgZCk7CiAgICAg
fQorICAgIAorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogYmlnSW50LCB1aW50OF90IHJhZGl4
KQorICAgIHsKKyAgICAgICAgaW5jQ29uc3RhbnRzKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEJpZ0ludE5vZGUobG9jYXRpb24sICpiaWdJbnQsIHJhZGl4KTsKKyAgICB9
CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDZlZTZjNWRiZDU5YWRlMzdmMmQxYjIyZDI5
MTY0OGFkMjk2ZjU0MWQuLjc0MDNjZGYzMzU1MjQ4OTI3ZDgyNTllNDljZjZjY2EwYzM1YWY4ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9k
dG9hLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTUwMCw3ICsxNTAxLDcgQEAgdHlwZW5hbWUg
TGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+OjpwYXJzZVRlbXBsYXRlTGl0ZXJh
bChKU1Rva2VuRGF0YSoKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5M
SU5FIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4gTGV4ZXI8VD46OnBhcnNlSGV4
KCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgaGV4YWRlY2ltYWwgdmFsdWVzIGZpdCBp
bnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgaGV4VmFsdWUgPSAwOwpAQCAtMTUxMiwxMCArMTUx
Myw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1
cm5WYWx1ZSkKICAgICAgICAgLS1tYXhpbXVtRGlnaXRzOwogICAgIH0gd2hpbGUgKGlzQVNDSUlI
ZXhEaWdpdChtX2N1cnJlbnQpICYmIG1heGltdW1EaWdpdHMgPj0gMCk7CiAKLSAgICBpZiAobWF4
aW11bURpZ2l0cyA+PSAwKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gaGV4VmFsdWU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKExJS0VMWShtYXhpbXVtRGlnaXRzID49IDAgJiYg
bV9jdXJyZW50ICE9ICduJykpCisgICAgICAgIHJldHVybiBoZXhWYWx1ZTsKIAogICAgIC8vIE5v
IG1vcmUgcGxhY2UgaW4gdGhlIGhleFZhbHVlIGJ1ZmZlci4KICAgICAvLyBUaGUgdmFsdWVzIGFy
ZSBzaGlmdGVkIG91dCBhbmQgcGxhY2VkIGludG8gdGhlIG1fYnVmZmVyOCB2ZWN0b3IuCkBAIC0x
NTMzLDExICsxNTMyLDE0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgo
ZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAKLSAgICByZXR1
cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSwgMTYpOworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1
cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5k
YXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOworICAgIAorICAgIHJldHVybiBwYXJzZUludE92ZXJm
bG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5
KGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkKIHsK
ICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgYmluYXJ5IHZhbHVlcyBmaXQgaW50byA0IGJ5dGVz
LgogICAgIHVpbnQzMl90IGJpbmFyeVZhbHVlID0gMDsKQEAgLTE1NTQsMTAgKzE1NTYsOCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFs
dWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJSUJpbmFyeURpZ2l0KG1f
Y3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJl
bnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBiaW5hcnlWYWx1ZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGlmIChMSUtFTFkoIWlzQVNDSUlEaWdp
dChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICduJykpCisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+
KGJpbmFyeVZhbHVlKTsKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+
IGRpZ2l0OyAtLWkpCiAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsKQEAgLTE1NjcsMTcgKzE1
NjcsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUm
IHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChpc0FTQ0lJ
RGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IDA7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgp
ICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJp
YW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50
T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMik7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIGNvbnN0IElkZW50aWZpZXIqPj4ocGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpLCAyKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUp
CitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50
aWZpZXIqPj4gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKQogewogICAgIC8vIE9wdGltaXphdGlvbjog
bW9zdCBvY3RhbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBvY3RhbFZh
bHVlID0gMDsKQEAgLTE1OTQsMTAgKzE1OTQsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8
VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgLS1kaWdpdDsKICAg
ICB9IHdoaWxlIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDApOwog
Ci0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7Ci0gICAg
ICAgIHJldHVyblZhbHVlID0gb2N0YWxWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQorICAgIGlmIChMSUtFTFkoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAg
JiYgbV9jdXJyZW50ICE9ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG9jdGFsVmFsdWUpOworCiAKICAgICBmb3Ig
KGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgcmVj
b3JkOChkaWdpdHNbaV0pOwpAQCAtMTYwNywxNyArMTYwNiwxNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAgICAgc2hp
ZnQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZp
ZXIqPj4obWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkp
OwogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCks
IG1fYnVmZmVyOC5zaXplKCksIDgpOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChpc0FTQ0lJ
RGlnaXQobV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KHBh
cnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgOCkpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6
cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0
aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gTGV4ZXI8VD46OnBhcnNl
RGVjaW1hbCgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IGRlY2ltYWwgdmFsdWVzIGZp
dCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3QgZGVjaW1hbFZhbHVlID0gMDsKQEAgLTE2Mzgs
MTAgKzE2MzcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChk
b3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAgICAgLS1kaWdpdDsKICAgICAgICAgfSB3aGls
ZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICAgICAgaWYg
KGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAobV9jdXJyZW50IHwgMHgyMCkgIT0g
J2UnKSB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGRlY2ltYWxWYWx1ZTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1f
Y3VycmVudCAhPSAnLicgJiYgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAn
ZScpICYmIG1fY3VycmVudCAhPSAnbicpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihkZWNpbWFsVmFsdWUpOwogCiAg
ICAgICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAg
ICAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNjUxLDggKzE2NDgsMTEgQEAgQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1
ZSkKICAgICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwogICAgICAgICBzaGlmdCgpOwogICAgIH0K
KyAgICAKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50
ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBj
b25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVm
ZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTIxMDAsMTAgKzIxMDAsMzAgQEAg
c3RhcnQ6CiAgICAgICAgICAgICB0b2tlbiA9IERPVDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDsKKyAgICAgICAg
cGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICB0b2tlbiA9IERPVUJMRTsK
KyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpKSB7
CisgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7
CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1u
dW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAg
dG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6
IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IHBh
cnNlZExlbmd0aDsKKyAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91Ymxl
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAg
ICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworCisgICAgICAgIGlm
IChVTkxJS0VMWShpc0lkZW50U3RhcnQobV9jdXJyZW50KSkpIHsKKyAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVj
dGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCIpOworICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgp
ID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJ
Q19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAg
ICAgfQorICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOworICAgICAgICBicmVhazsKICAgICBj
YXNlIENoYXJhY3Rlclplcm86CiAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgIGlmICgobV9jdXJy
ZW50IHwgMHgyMCkgPT0gJ3gnKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0Vx
dWFsKG1fY3VycmVudCwgJ3gnKSkgewogICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQo
cGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0
ZXJhbCgiTm8gaGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciKTsKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjExMywxNyAr
MjEzMywyNyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ3gnIHByZWZp
eC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlSGV4KHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBh
cnNlSGV4KCk7CisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+
KHBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gV1RGOjpnZXQ8ZG91YmxlPihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBz
aGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpn
ZXQ8Y29uc3QgSWRlbnRpZmllcio+KHBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPnJhZGl4ID0gMTY7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlm
IChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3ZWVuIGhleGFkZWNpbWFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRF
RF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJM
aWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZ
KHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9i
dWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2InKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2InKSkgewogICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJQmluYXJ5RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gYmluYXJ5IGRpZ2l0cyBhZnRlciAnMGInIik7CiAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfQklOQVJZX05VTUJFUl9FUlJPUlRPSzsK
QEAgLTIxMzMsMTggKzIxNjMsMjggQEAgc3RhcnQ6CiAgICAgICAgICAgICAvLyBTaGlmdCBvdXQg
dGhlICdiJyBwcmVmaXguCiAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAgICAgICBwYXJz
ZUJpbmFyeSh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VO
dW1iZXJSZXN1bHQgPSBwYXJzZUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJl
clJlc3VsdCB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVz
dWx0KSkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VOdW1i
ZXJSZXN1bHQgPyBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkgOiAwOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAg
ICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmlu
ZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAg
ICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAyOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkg
bGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJN
SU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1
cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9y
SW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2Vu
VHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAg
ICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdvJykgeworICAgICAgICBpZiAo
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICdvJykpIHsKICAgICAgICAgICAg
IGlmICghaXNBU0NJSU9jdGFsRGlnaXQocGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gb2N0YWwgZGlnaXRzIGFmdGVyICcwbyci
KTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJfRVJS
T1JUT0s7CkBAIC0yMTU0LDEzICsyMTk0LDIzIEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hp
ZnQgb3V0IHRoZSAnbycgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAg
ICAgcGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8g
cGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
TnVtYmVyUmVzdWx0IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1i
ZXJSZXN1bHQpKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJz
ZU51bWJlclJlc3VsdCA/IFdURjo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSA6IDA7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAg
ICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50
U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDg7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3ZWVuIG9j
dGFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVO
VEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byBy
ZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBl
Rm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRv
a2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIxNzIsMzQgKzIyMjIsNDYgQEAgc3RhcnQ6CiAgICAgICAgICAgICBnb3RvIHJldHVy
bkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJl
bnQpKSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KSkgeworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlT2N0YWwoKTsK
KyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7
CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyTnVtYmVyOgogICAgICAgICBpZiAoTElL
RUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9VQkxFKSkgewotICAgICAgICAgICAg
aWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAg
ICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAn
LicpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZURlY2ltYWwo
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2Vu
KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAgICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci1pbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgotICAgICAgICAgICAgICAgICAgICBw
YXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gRE9VQkxFOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKG1fY3Vy
cmVudCB8IDB4MjApID09ICdlJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVt
YmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9uLW51bWJlciBmb3VuZCBhZnRlciBl
eHBvbmVudCBpbmRpY2F0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRF
bmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0g
V1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxMDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aGlmdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQ
b2ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VCTEU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIg
Zm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJP
UlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNl
ZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBh
cnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0
aCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2Vu
RGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBz
aXplX3QgcGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJz
ZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAg
ICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0
b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1
ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
aW5kZXggZDg0NWUyZTE0ZjU2OWE0ZDM4ZTJjM2Q5OWVmNmM0NjcyMzI0MzIyMC4uMDUyZjk2ZDIz
YmVmNzYwYTc5YmQ0ODc4MjQzYTRlZmQ0NjA4ZDJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaApAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRl
IDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJzZU1vZGUgZXNjYXBlUGFy
c2VNb2RlPiBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlQ29tcGxleEVzY2Fw
ZShib29sIHN0cmljdE1vZGUsIFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogICAgIEFMV0FZU19J
TkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEq
LCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgo
ZG91YmxlJiByZXR1cm5WYWx1ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5
KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU9jdGFs
KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2lt
YWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CisgICAgQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJs
ZSwgY29uc3QgSWRlbnRpZmllcio+IHBhcnNlSGV4KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IHBhcnNlQmluYXJ5
KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25z
dCBJZGVudGlmaWVyKj4+IHBhcnNlT2N0YWwoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0
aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VEZWNpbWFsKCk7
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9y
KCk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBh
Y2RhYzZjYTExNjdkNWRmNGJmNDZhZGRkNzM5YmVjZWM4YmQxOWJmLi5iYmNkYTA5MDYzNjI2Yjdi
ODYzMTIyZjdiNWUzZTNhNDYwMTM1NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtOTIsNiArOTIsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBCaWdJbnROb2RlOjpCaWdJbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlLCB1
aW50OF90IHJhZGl4KQorICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6YmlnSW50VHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9y
YWRpeChyYWRpeCkKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmlu
Z05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
dmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJp
bmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyMmNkOGQxN2NlZjJiM2RiZjcxNjhiMzJhOTkyYWFjZGNj
Li40ZDIzYTQxYTA3YzEwNGNkYzc0ZGIzMThlMjNiY2NlMjY3ZDhkMTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9OwogCisgICAgY2xhc3MgQmlnSW50
Tm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCBy
YWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1
ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92
YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3JhZGl4OworICAgIH07CisKICAgICBjbGFz
cyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggNDkwODk4NTk5M2FjMWJkNTQyNmM0YTExZjAyZGFhOGU5OGQ1MzE1MC4uODQ4Yzk3ZDQ0
M2IyMTZlNjlkMGIyODdjYWNmNTMxZWZmNjczMThkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFy
eUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShjb250
ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwsIHN0YXJ0LCBs
b2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5nOworICAgICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgpOwor
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50LCBtX3Rv
a2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2FmMmU5YzhlMzUyNzNj
Y2M3ZTc0NTliZDU5MDk2MTZjNS4uYzIwNThhZWViMGQzODhkODExOTMyY2ZjN2NhNTExNDA5NDMw
ODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBA
IC0xMTAsNiArMTEwLDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgQkFDS1FVT1RFLAogICAg
IElOVEVHRVIsCiAgICAgRE9VQkxFLAorICAgIEJJR0lOVCwKICAgICBJREVOVCwKICAgICBTVFJJ
TkcsCiAgICAgVEVNUExBVEUsCkBAIC0yMTgsNiArMjE5LDEwIEBAIHVuaW9uIEpTVG9rZW5EYXRh
IHsKICAgICAgICAgYm9vbCBlc2NhcGVkOwogICAgIH07CiAgICAgc3RydWN0IHsKKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogYmlnSW50U3RyaW5nOworICAgICAgICB1aW50OF90IHJhZGl4Owor
ICAgIH07CisgICAgc3RydWN0IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogY29va2VkOwog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiByYXc7CiAgICAgICAgIGJvb2wgaXNUYWlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRleCA0ZjY0NzFiNTRmZDVl
ODgxZGNkYzMyYmNmY2FmNDQ1ZmE1MmEyODQyLi4wM2NhZTJhNDdmOTAzYjZkMmRmZTdkNzc1MjA1
YWFkODhmNTIwMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jl
c3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUu
aApAQCAtMzEsMTggKzMxLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIGZyaWVuZCBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogCi0gICAgICAgIHR5cGVkZWYgdWludDhf
dCBUeXBlOworICAgICAgICB1c2luZyBUeXBlID0gdWludDhfdDsKICAgICAgICAgc3RhdGljIGNv
bnN0IFR5cGUgVHlwZUludDMyID0gMTsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1h
eWJlTnVtYmVyID0gMHgwMjsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlU3Ry
aW5nID0gMHgwNDsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVsbCAgID0g
MHgwODsKICAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQm9vbCAgID0gMHgxMDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHgyMDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFR5cGUgVHlwZU1heWJlQmlnSW50ID0gMHgyMDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFR5cGUgVHlwZU1heWJlT3RoZXIgID0gMHg0MDsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8
IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJlT3RoZXI7CisgICAgICAg
IHN0YXRpYyBjb25zdCBUeXBlIFR5cGVCaXRzID0gVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJl
U3RyaW5nIHwgVHlwZU1heWJlTnVsbCB8IFR5cGVNYXliZUJvb2wgfCBUeXBlTWF5YmVCaWdJbnQg
fCBUeXBlTWF5YmVPdGhlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBudW1CaXRzTmVlZGVkID0gNjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBudW1CaXRzTmVl
ZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0
c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVj
dG5lc3MuIik7CiAKICAgICAgICAgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpCkBAIC03
MCw2ICs3MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAobV9iaXRz
ICYgVHlwZUJpdHMpID09IFR5cGVNYXliZUJvb2w7CiAgICAgICAgIH0KIAorICAgICAgICBib29s
IGRlZmluaXRlbHlJc0JpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAgfQorCiAg
ICAgICAgIGJvb2wgbWlnaHRCZU51bWJlcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBUeXBlTWF5YmVOdW1iZXI7CkBAIC04MCw2ICs4NiwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAhbWlnaHRCZU51bWJlcigpOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBib29sIG1pZ2h0QmVCaWdJbnQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlQmlnSW50OworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBpc05vdEJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiAhbWlnaHRCZUJpZ0ludCgpOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSBudWxsVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZU51bGwpOwpAQCAtMTA1LDExICsxMjEsMjEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVO
dW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBz
dGF0aWMgUmVzdWx0VHlwZSBhZGRSZXN1bHRUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlw
ZU1heWJlQmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGljIFJlc3Vs
dFR5cGUgc3RyaW5nVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHRU
eXBlKFR5cGVNYXliZVN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRp
YyBSZXN1bHRUeXBlIGJpZ0ludFR5cGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
UmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQpOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBzdGF0aWMgUmVzdWx0VHlwZSB1bmtub3duVHlwZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBSZXN1bHRUeXBlKFR5cGVCaXRzKTsKQEAgLTEyMSw3ICsxNDcsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyVHlwZSgpOwogICAgICAgICAg
ICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSB8fCBvcDIuZGVmaW5pdGVseUlzU3RyaW5n
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGUoKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdHJpbmdPck51bWJlclR5cGUoKTsKKyAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVs
eUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBiaWdJbnRUeXBlKCk7CisgICAgICAgICAgICByZXR1cm4gYWRkUmVzdWx0VHlwZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gVW5saWtlIGluIEMsIGEgbG9naWNhbCBvcCBwcm9k
dWNlcyB0aGUgdmFsdWUgb2YgdGhlCkBAIC0xMzQsNiArMTYyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAgIGlmIChv
cDEuZGVmaW5pdGVseUlzU3RyaW5nKCkgJiYgb3AyLmRlZmluaXRlbHlJc1N0cmluZygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRl
ZmluaXRlbHlJc0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYmlnSW50VHlwZSgpOwogICAgICAgICAgICAgcmV0dXJuIHVua25vd25U
eXBlKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAppbmRleCA4ZGIzNWM3Nzk2ZjRkMzZmYTU0NTI1OTE2MGRjNTg5ZWI4NDlkOTU2
Li41MzljNDczNDBlYjZhNjQ1ZmU3Y2FmNDQxYzNmMDBkYjViM2NmNjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIGludCBNZXRhUHJvcGVydHlCaXQg
PSAweDgwMDAwMDAwOwogICAgIGVudW0gOiBpbnQgeyBOb25lRXhwciA9IDAsCi0gICAgICAgIFJl
c29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJp
bmdFeHByLAorICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhw
ciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIs
IE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAg
ICAgIEZ1bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNr
ZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKICAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9z
dEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKQEAgLTE3NSw2ICsxNzUsNyBAQCBwdWJsaWM6
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3VibGVFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1
cm4gRG91YmxlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUludGVnZXJFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gSW50ZWdlckV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCaWdJbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gQmlnSW50RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxOTNjOTFlMDdiNWNhOThhZDdiYzMwZjQ1OWNjMjUx
YmRlNTVmOThmLi5kNjQ3NjZhMzA0Zjc1NzJmZDMyY2QwNTRlMTE3MjM5MjIzODc0MTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKEFy
cmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAorICAgIG1hY3Jv
KEJpZ0ludCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKICAgICBtYWNybyhDb2xsYXRvcikgXAog
ICAgIG1hY3JvKENyZWRlbnRpYWwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2Y0NDUyNjFjODRkNGFhNWEzZWQyNDA1OWNjZWE4MzEx
OTM0MTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC0wLDAgKzEsNjM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKiBQYXJ0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3c6Cisg
KgorICogQ29weXJpZ2h0IDIwMTcgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMu
ICBQbGVhc2Ugc2VlIHRoZSBBVVRIT1JTIGZpbGUgWzFdCisgKiBmb3IgZGV0YWlscy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYQor
ICogQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZSBbMl0uCisgKgorICogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc2RrL2Jsb2Iv
bWFzdGVyL0FVVEhPUlMKKyAqIFsyXSBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3Nkay9i
bG9iL21hc3Rlci9MSUNFTlNFCisgKgorICogQ29weXJpZ2h0IDIwMDkgVGhlIEdvIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZQorICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlIFszXS4KKyAqCisgKiBbM10gaHR0cHM6Ly9nb2xhbmcub3JnL0xJQ0VOU0UK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAi
UGFyc2VJbnQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmVjdG9yLmg+CisKKyNkZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0
KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9CisgICAgeyAiSlNCaWdJbnQiLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9Owor
Cit2b2lkIEpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNCaWdJbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNCaWdJbnQq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKwor
SlNCaWdJbnQ6OkpTQmlnSW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5n
dGgpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCit7
IH0KKwordm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUgaW5pdFR5
cGUpCit7CisgICAgc2V0U2lnbihmYWxzZSk7CisgICAgaWYgKGluaXRUeXBlID09IEluaXRpYWxp
emF0aW9uVHlwZTo6V2l0aFplcm8pIHsKKyAgICAgICAgdm9pZCogZGF0YSA9IHN0YXRpY19jYXN0
PHZvaWQqPihkYXRhU3RvcmFnZSgpKTsKKyAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGxlbmd0aCgp
ICogRGlnaXRTaXplKTsKKyAgICB9Cit9CisKK1N0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtKQoreworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChl
eGVjLCB2bSwgMCk7CisgICAgemVyb0JpZ0ludC0+c2V0U2lnbihmYWxzZSk7CisgICAgcmV0dXJu
IHplcm9CaWdJbnQ7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6YWxsb2NhdGlvblNpemUoaW50IGxl
bmd0aCkKK3sKKyAgICBzaXplX3Qgc2l6ZVdpdGhQYWRkaW5nID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihzaXplX3QpPihzaXplb2YoSlNCaWdJbnQpKTsKKyAgICByZXR1cm4gc2l6
ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKK30KKworSlNCaWdJbnQqIEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBpbnQgbGVu
Z3RoKQoreworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0JpZ0ludD4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUobGVuZ3RoKSkpIEpTQmlnSW50KHZt
LCB2bS5iaWdJbnRTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgYmlnSW50LT5maW5pc2hD
cmVhdGlvbihleGVjLCB2bSk7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwordm9pZCBKU0JpZ0lu
dDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoRXhlY1N0
YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3Rf
Y2FzdDxKU0JpZ0ludCo+KHRoaXMpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmln
SW50Ojp0b1N0cmluZ09uZURpZ2l0KCkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIGlmIChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKKyAgICAg
ICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7CisgICAgICAgIGlmIChyRGlnaXQgPD0gOSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOworICAgIH0KKyAg
ICByZXR1cm4geyB9OworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgpCit7CisgICAgaWYg
KHMuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBwYXJzZUludChleGVjLCB2bSwgcy5jaGFyYWN0
ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworICAgIHJldHVybiBwYXJzZUlu
dChleGVjLCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNl
KTsKK30KKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGludCBy
YWRpeCkKK3sKKyAgICBpZiAodGhpcy0+aXNaZXJvKCkpCisgICAgICAgIHJldHVybiBleGVjLT52
bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKKworICAgIHJl
dHVybiB0b1N0cmluZ0dlbmVyaWMoZXhlYywgdGhpcywgcmFkaXgpOworfQorCitib29sIEpTQmln
SW50Ojppc1plcm8oKQoreworICAgIEFTU0VSVChsZW5ndGgoKSB8fCAhc2lnbigpKTsKKyAgICBy
ZXR1cm4gbGVuZ3RoKCkgPT0gMDsKK30KKworLy8gTXVsdGlwbGllcyB7dGhpc30gd2l0aCB7ZmFj
dG9yfSBhbmQgYWRkcyB7c3VtbWFuZH0gdG8gdGhlIHJlc3VsdC4KK3ZvaWQgSlNCaWdJbnQ6Omlu
cGxhY2VNdWx0aXBseUFkZCh1aW50cHRyX3QgZmFjdG9yLCB1aW50cHRyX3Qgc3VtbWFuZCkKK3sK
KyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihmYWN0b3IpID09IHNpemVvZihEaWdpdCkpOworICAg
IFNUQVRJQ19BU1NFUlQoc2l6ZW9mKHN1bW1hbmQpID09IHNpemVvZihEaWdpdCkpOworCisgICAg
aW50ZXJuYWxNdWx0aXBseUFkZCh0aGlzLCBmYWN0b3IsIHN1bW1hbmQsIGxlbmd0aCgpLCB0aGlz
KTsKK30KKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lUIDEK
K3R5cGVkZWYgdWludDY0X3QgVHdvRGlnaXQ7CisjZWxpZiBIQVZFKElOVDEyOF9UKQorI2RlZmlu
ZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIF9fdWludDEyOF90IFR3b0RpZ2l0OworI2Vsc2UK
KyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMAorI2VuZGlmCisKKy8vIHtjYXJyeX0gbXVzdCBwb2lu
dCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2lsbCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQK
Ky8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdp
dEFkZChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgY2FycnkpCit7CisjaWYgSEFWRV9UV09fRElH
SVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgKyBzdGF0
aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgY2FycnkgKz0gcmVzdWx0ID4+IERpZ2l0Qml0czsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGln
aXQgcmVzdWx0ID0gYSArIGI7CisKKyAgICBpZiAocmVzdWx0IDwgYSkKKyAgICAgICAgY2Fycnkg
Kz0gMTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworI2VuZGlmCit9CisKKy8vIHtib3Jyb3d9
IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGlu
Y3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0Jp
Z0ludDo6ZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGJvcnJvdykKK3sKKyNpZiBI
QVZFX1RXT19ESUdJVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0RpZ2l0
PihhKSAtIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICBib3Jyb3cgKz0gKHJlc3VsdCA+
PiBEaWdpdEJpdHMpICYgMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJl
c3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgLSBiOworICAgIGlmIChyZXN1bHQg
PiBhKQorICAgICAgICBib3Jyb3cgKz0gMTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RGlnaXQ+KHJlc3VsdCk7CisjZW5kaWYKK30KKworLy8gUmV0dXJucyB0aGUgbG93IGhhbGYgb2Yg
dGhlIHJlc3VsdC4gSGlnaCBoYWxmIGlzIGluIHtoaWdofS4KK0pTQmlnSW50OjpEaWdpdCBKU0Jp
Z0ludDo6ZGlnaXRNdWwoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGhpZ2gpCit7CisjaWYgSEFW
RV9UV09fRElHSVQKKyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4o
YSkgKiBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYik7CisgICAgaGlnaCA9IHJlc3VsdCA+PiBEaWdp
dEJpdHM7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQor
ICAgIC8vIE11bHRpcGx5IGluIGhhbGYtcG9pbnRlci1zaXplZCBjaHVua3MuCisgICAgLy8gRm9y
IGlucHV0cyBbQUggQUxdKltCSCBCTF0sIHRoZSByZXN1bHQgaXM6CisgICAgLy8KKyAgICAvLyAg
ICAgICAgICAgIFtBTCpCTF0gIC8vIHJMb3cKKyAgICAvLyAgICArICAgIFtBTCpCSF0gICAgIC8v
IHJNaWQxCisgICAgLy8gICAgKyAgICBbQUgqQkxdICAgICAvLyByTWlkMgorICAgIC8vICAgICsg
W0FIKkJIXSAgICAgICAgLy8gckhpZ2gKKyAgICAvLyAgICA9IFtSNCBSMyBSMiBSMV0gIC8vIGhp
Z2ggPSBbUjQgUjNdLCBsb3cgPSBbUjIgUjFdCisgICAgLy8KKyAgICAvLyBXaGVyZSBvZiBjb3Vy
c2Ugd2UgbXVzdCBiZSBjYXJlZnVsIHdpdGggY2FycmllcyBiZXR3ZWVuIHRoZSBjb2x1bW5zLgor
ICAgIERpZ2l0IGFMb3cgPSBhICYgSGFsZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBhSGlnaCA9IGEg
Pj4gSGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCBiTG93ID0gYiAmIEhhbGZEaWdpdE1hc2s7Cisg
ICAgRGlnaXQgYkhpZ2ggPSBiID4+IEhhbGZEaWdpdEJpdHM7CisgICAgCisgICAgRGlnaXQgckxv
dyA9IGFMb3cgKiBiTG93OworICAgIERpZ2l0IHJNaWQxID0gYUxvdyAqIGJIaWdoOworICAgIERp
Z2l0IHJNaWQyID0gYUhpZ2ggKiBiTG93OworICAgIERpZ2l0IHJIaWdoID0gYUhpZ2ggKiBiSGln
aDsKKyAgICAKKyAgICBEaWdpdCBjYXJyeSA9IDA7CisgICAgRGlnaXQgbG93ID0gZGlnaXRBZGQo
ckxvdywgck1pZDEgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworICAgIGxvdyA9IGRpZ2l0QWRk
KGxvdywgck1pZDIgPDwgSGFsZkRpZ2l0Qml0cywgY2FycnkpOworCisgICAgaGlnaCA9IChyTWlk
MSA+PiBIYWxmRGlnaXRCaXRzKSArIChyTWlkMiA+PiBIYWxmRGlnaXRCaXRzKSArIHJIaWdoICsg
Y2Fycnk7CisKKyAgICByZXR1cm4gbG93OworI2VuZGlmCit9CisKKy8vIFJhaXNlcyB7YmFzZX0g
dG8gdGhlIHBvd2VyIG9mIHtleHBvbmVudH0uIERvZXMgbm90IGNoZWNrIGZvciBvdmVyZmxvdy4K
K0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRQb3coRGlnaXQgYmFzZSwgRGlnaXQgZXhw
b25lbnQpCit7CisgICAgRGlnaXQgcmVzdWx0ID0gMXVsbDsKKyAgICB3aGlsZSAoZXhwb25lbnQg
PiAwKSB7CisgICAgICAgIGlmIChleHBvbmVudCAmIDEpCisgICAgICAgICAgICByZXN1bHQgKj0g
YmFzZTsKKworICAgICAgICBleHBvbmVudCA+Pj0gMTsKKyAgICAgICAgYmFzZSAqPSBiYXNlOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFJldHVybnMgdGhlIHF1b3RpZW50
LgorLy8gcXVvdGllbnQgPSAoaGlnaCA8PCBEaWdpdEJpdHMgKyBsb3cgLSByZW1haW5kZXIpIC8g
ZGl2aXNvcgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdERpdihEaWdpdCBoaWdoLCBE
aWdpdCBsb3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpCit7CisgICAgQVNTRVJU
KGhpZ2ggPCBkaXZpc29yKTsKKyNpZiBDUFUoWDg2XzY0KSAmJiBDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9fYXNtX18oImRp
dnEgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0gd2lsbCBiZSBp
biByYXgsIHtyZW19IGluIHJkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwgIj1kIihyZW0p
CisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIHJkeCwge2xvd30gaW50byByYXgs
IGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Igc3RhY2sgc2xv
dC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJtIihkaXZpc29y
KSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbGlmIENQ
VShYODYpICYmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAg
ICBEaWdpdCByZW07CisgICAgX19hc21fXygiZGl2bCAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8g
T3V0cHV0czoge3F1b3RpZW50fSB3aWxsIGJlIGluIGVheCwge3JlbX0gaW4gZWR4LgorICAgICAg
ICA6ICI9YSIocXVvdGllbnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hp
Z2h9IGludG8gZWR4LCB7bG93fSBpbnRvIGVheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAg
IC8vIGFueSByZWdpc3RlciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEi
KGxvdyksIFtkaXZpc29yXSAicm0iKGRpdmlzb3IpKTsKKyAgICByZW1haW5kZXIgPSByZW07Cisg
ICAgcmV0dXJuIHF1b3RpZW50OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgRGlnaXQga0hhbGZE
aWdpdEJhc2UgPSAxdWxsIDw8IEhhbGZEaWdpdEJpdHM7CisgICAgLy8gQWRhcHRlZCBmcm9tIFdh
cnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgcC4gMTUyLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
aW50IHMgPSBjbHo2NChkaXZpc29yKTsKKyNlbHNlCisgICAgaW50IHMgPSBjbHozMihkaXZpc29y
KTsKKyNlbmRpZgorICAgIGRpdmlzb3IgPDw9IHM7CisgICAgCisgICAgRGlnaXQgdm4xID0gZGl2
aXNvciA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHZuMCA9IGRpdmlzb3IgJiBIYWxmRGln
aXRNYXNrOworCisgICAgLy8ge3N9IGNhbiBiZSAwLiAibG93ID4+IERpZ2l0Qml0cyA9PSBsb3ci
IG9uIHg4Niwgc28gd2UgIiYiIGl0IHdpdGgKKyAgICAvLyB7c196ZXJvX21hc2t9IHdoaWNoIGlz
IDAgaWYgcyA9PSAwIGFuZCBhbGwgMS1iaXRzIG90aGVyd2lzZS4KKyAgICBTVEFUSUNfQVNTRVJU
KHNpemVvZihpbnRwdHJfdCkgPT0gc2l6ZW9mKERpZ2l0KSk7CisgICAgRGlnaXQgc1plcm9NYXNr
ID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PGludHB0cl90PigtcykgPj4gKERpZ2l0
Qml0cyAtIDEpKTsKKyAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwgcykgfCAoKGxvdyA+PiAoRGln
aXRCaXRzIC0gcykpICYgc1plcm9NYXNrKTsKKyAgICBEaWdpdCB1bjEwID0gbG93IDw8IHM7Cisg
ICAgRGlnaXQgdW4xID0gdW4xMCA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IHVuMCA9IHVu
MTAgJiBIYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IHExID0gdW4zMiAvIHZuMTsKKyAgICBEaWdp
dCByaGF0ID0gdW4zMiAtIHExICogdm4xOworCisgICAgd2hpbGUgKHExID49IGtIYWxmRGlnaXRC
YXNlIHx8IHExICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4xKSB7CisgICAgICAg
IHExLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRp
Z2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIERpZ2l0IHVuMjEgPSB1
bjMyICoga0hhbGZEaWdpdEJhc2UgKyB1bjEgLSBxMSAqIGRpdmlzb3I7CisgICAgRGlnaXQgcTAg
PSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAgKiB2bjE7CisKKyAgICB3aGlsZSAo
cTAgPj0ga0hhbGZEaWdpdEJhc2UgfHwgcTAgKiB2bjAgPiByaGF0ICoga0hhbGZEaWdpdEJhc2Ug
KyB1bjApIHsKKyAgICAgICAgcTAtLTsKKyAgICAgICAgcmhhdCArPSB2bjE7CisgICAgICAgIGlm
IChyaGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmVtYWluZGVyID0gKHVuMjEgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMCAtIHEwICogZGl2aXNv
cikgPj4gczsKKyAgICByZXR1cm4gcTEgKiBrSGFsZkRpZ2l0QmFzZSArIHEwOworI2VuZGlmCit9
CisKKy8vIE11bHRpcGxpZXMge3NvdXJjZX0gd2l0aCB7ZmFjdG9yfSBhbmQgYWRkcyB7c3VtbWFu
ZH0gdG8gdGhlIHJlc3VsdC4KKy8vIHtyZXN1bHR9IGFuZCB7c291cmNlfSBtYXkgYmUgdGhlIHNh
bWUgQmlnSW50IGZvciBpbnBsYWNlIG1vZGlmaWNhdGlvbi4KK3ZvaWQgSlNCaWdJbnQ6OmludGVy
bmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1t
YW5kLCBpbnQgbiwgSlNCaWdJbnQqIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoc291cmNlLT5sZW5n
dGgoKSA+PSBuKTsKKyAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA+PSBuKTsKKworICAgIERp
Z2l0IGNhcnJ5ID0gc3VtbWFuZDsKKyAgICBEaWdpdCBoaWdoID0gMDsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBEaWdpdCBjdXJyZW50ID0gc291cmNlLT5kaWdp
dChpKTsKKyAgICAgICAgRGlnaXQgbmV3Q2FycnkgPSAwOworCisgICAgICAgIC8vIENvbXB1dGUg
dGhpcyByb3VuZCdzIG11bHRpcGxpY2F0aW9uLgorICAgICAgICBEaWdpdCBuZXdIaWdoID0gMDsK
KyAgICAgICAgY3VycmVudCA9IGRpZ2l0TXVsKGN1cnJlbnQsIGZhY3RvciwgbmV3SGlnaCk7CisK
KyAgICAgICAgLy8gQWRkIGxhc3Qgcm91bmQncyBjYXJyeW92ZXJzLgorICAgICAgICBjdXJyZW50
ID0gZGlnaXRBZGQoY3VycmVudCwgaGlnaCwgbmV3Q2FycnkpOworICAgICAgICBjdXJyZW50ID0g
ZGlnaXRBZGQoY3VycmVudCwgY2FycnksIG5ld0NhcnJ5KTsKKworICAgICAgICAvLyBTdG9yZSBy
ZXN1bHQgYW5kIHByZXBhcmUgZm9yIG5leHQgcm91bmQuCisgICAgICAgIHJlc3VsdC0+c2V0RGln
aXQoaSwgY3VycmVudCk7CisgICAgICAgIGNhcnJ5ID0gbmV3Q2Fycnk7CisgICAgICAgIGhpZ2gg
PSBuZXdIaWdoOworICAgIH0KKworICAgIGlmIChyZXN1bHQtPmxlbmd0aCgpID4gbikgeworICAg
ICAgICByZXN1bHQtPnNldERpZ2l0KG4rKywgY2FycnkgKyBoaWdoKTsKKworICAgICAgICAvLyBD
dXJyZW50IGNhbGxlcnMgZG9uJ3QgcGFzcyBpbiBzdWNoIGxhcmdlIHJlc3VsdHMsIGJ1dCBsZXQn
cyBiZSByb2J1c3QuCisgICAgICAgIHdoaWxlIChuIDwgcmVzdWx0LT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC0+c2V0RGlnaXQobisrLCAwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIShjYXJyeSArIGhpZ2gpKTsKK30KKworYm9vbCBKU0JpZ0ludDo6ZXF1YWxU
b0JpZ0ludChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCit7CisgICAgaWYgKHgtPnNpZ24oKSAh
PSB5LT5zaWduKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh4LT5sZW5ndGgo
KSAhPSB5LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB4LT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICh4LT5kaWdpdChpKSAh
PSB5LT5kaWdpdChpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLy8gRGl2aWRlcyB7eH0gYnkge2Rpdmlzb3J9LCByZXR1cm5pbmcg
dGhlIHJlc3VsdCBpbiB7cXVvdGllbnR9IGFuZCB7cmVtYWluZGVyfS4KKy8vIE1hdGhlbWF0aWNh
bGx5LCB0aGUgY29udHJhY3QgaXM6CisvLyBxdW90aWVudCA9ICh4IC0gcmVtYWluZGVyKSAvIGRp
dmlzb3IsIHdpdGggMCA8PSByZW1haW5kZXIgPCBkaXZpc29yLgorLy8gSWYge3F1b3RpZW50fSBp
cyBhbiBlbXB0eSBoYW5kbGUsIGFuIGFwcHJvcHJpYXRlbHkgc2l6ZWQgQmlnSW50IHdpbGwgYmUK
Ky8vIGFsbG9jYXRlZCBmb3IgaXQ7IG90aGVyd2lzZSB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRo
YXQgaXQgaXMgYmlnIGVub3VnaC4KKy8vIHtxdW90aWVudH0gY2FuIGJlIHRoZSBzYW1lIGFzIHt4
fSBmb3IgYW4gaW4tcGxhY2UgZGl2aXNpb24uIHtxdW90aWVudH0gY2FuCisvLyBhbHNvIGJlIG51
bGxwdHIgaWYgdGhlIGNhbGxlciBpcyBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJlbWFpbmRlci4K
K3ZvaWQgSlNCaWdJbnQ6OmFic29sdXRlRGl2U21hbGwoRXhlY1N0YXRlKiBleGVjLCBKU0JpZ0lu
dCogeCwgRGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRl
cikKK3sKKyAgICBBU1NFUlQoZGl2aXNvcik7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOworICAgIHJlbWFpbmRlciA9IDA7CisgICAgaWYgKGRp
dmlzb3IgPT0gMSkgeworICAgICAgICBpZiAocXVvdGllbnQgIT0gbnVsbHB0cikKKyAgICAgICAg
ICAgICpxdW90aWVudCA9IHg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbGVu
Z3RoID0geC0+bGVuZ3RoKCk7CisgICAgaWYgKHF1b3RpZW50ICE9IG51bGxwdHIpIHsKKyAgICAg
ICAgaWYgKCpxdW90aWVudCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICAqcXVvdGllbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbmd0aChleGVjLCB2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIERpZ2l0IHEg
PSBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCByZW1haW5kZXIpOwor
ICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0KGksIHEpOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQor
ICAgICAgICAgICAgZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVt
YWluZGVyKTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0YWJsZSBmb3IgdGhlIG1heGltdW0gbnVt
YmVyIG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCisvLyBiYXNlLU4gc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1cmFjeSwgdGhlIGFy
cmF5CisvLyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVlIG11bHRpcGxpZWQgYnkgMzIuIFRvIGdl
bmVyYXRlIHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBpID0gMDsgaSA8PSAzNjsgaSsrKSB7IHBy
aW50KE1hdGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikgKyAiLCIpOyB9Citjb25zdGV4cHIgdWlu
dDhfdCBNYXhCaXRzUGVyQ2hhcltdID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3
NSwgIDgzLCAgOTAsICA5NiwgLy8gMC4uOAorICAgIDEwMiwgMTA3LCAxMTEsIDExNSwgMTE5LCAx
MjIsIDEyNiwgMTI4LCAgICAgLy8gOS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwg
MTQzLCAxNDUsIDE0NywgICAgIC8vIDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2
LCAxNTgsIDE1OSwgMTYwLCAgICAgLy8gMjUuLjMyCisgICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQg
Qml0c1BlckNoYXJUYWJsZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlckNo
YXJUYWJsZU11bHRpcGxpZXIgPSAxdSA8PCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKKy8vIENv
bXB1dGUgKGFuIG92ZXJhcHByb3hpbWF0aW9uIG9mKSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRp
bmcgc3RyaW5nOgorLy8gRGl2aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJl
cHJlc2VudGFibGUgcGVyIGNoYXJhY3Rlci4KK3VpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVN
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQgbGFz
dERpZ2l0LCBib29sIHNpZ24pCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpbnQgbGVhZGlu
Z1plcm9zID0gY2x6NjQobGFzdERpZ2l0KTsKKyNlbHNlCisgICAgaW50IGxlYWRpbmdaZXJvcyA9
IGNsejMyKGxhc3REaWdpdCk7CisjZW5kaWYKKyAgICBzaXplX3QgYml0TGVuZ3RoID0gbGVuZ3Ro
ICogRGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2Yg
Yml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNoYXJhY3Rlci4gV2UnbGwgdXNlIHRoaXMK
KyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNodW5rIHNpemUgYmVsb3cuCisgICAgdWlu
dDhfdCBtYXhCaXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKworICAgIC8vIEZv
ciBlc3RpbWF0aW5nIHJlc3VsdCBsZW5ndGgsIHdlIGhhdmUgdG8gYmUgcGVzc2ltaXN0aWMgYW5k
IHdvcmsgd2l0aAorICAgIC8vIHRoZSBtaW5pbXVtIG51bWJlciBvZiBiaXRzIG9uZSBjaGFyYWN0
ZXIgY2FuIHJlcHJlc2VudC4KKyAgICB1aW50OF90IG1pbkJpdHNQZXJDaGFyID0gbWF4Qml0c1Bl
ckNoYXIgLSAxOworCisgICAgLy8gUGVyZm9ybSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIHdp
dGggdWludDY0X3QgdG8gYXZvaWQgb3ZlcmZsb3dzLgorICAgIHVpbnQ2NF90IG1heGltdW1DaGFy
YWN0ZXJzUmVxdWlyZWQgPSBiaXRMZW5ndGg7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJl
ZCAqPSBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllcjsKKworICAgIC8vIFJvdW5kIHVwLgorICAg
IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgKz0gbWluQml0c1BlckNoYXIgLSAxOworICAgIG1h
eGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgLz0gbWluQml0c1BlckNoYXI7CisgICAgbWF4aW11bUNo
YXJhY3RlcnNSZXF1aXJlZCArPSBzaWduOworICAgIAorICAgIHJldHVybiBtYXhpbXVtQ2hhcmFj
dGVyc1JlcXVpcmVkOworfQorCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQmlnSW50KiB4LCBpbnQgcmFkaXgpCit7CisgICAgU3RyaW5nVmVjdG9y
PExDaGFyPiByZXN1bHRTdHJpbmc7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8
PSAzNik7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+
bGVuZ3RoKCk7CisgICAgYm9vbCBzaWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhC
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICB1aW50NjRfdCBtYXhpbXVt
Q2hhcmFjdGVyc1JlcXVpcmVkID0gY2FsY3VsYXRlTWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZChs
ZW5ndGgsIHJhZGl4LCB4LT5kaWdpdChsZW5ndGggLSAxKSwgc2lnbik7CisKKyAgICBpZiAobWF4
aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA+IEpTU3RyaW5nOjpNYXhMZW5ndGgpIHsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJ
bXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworICAgIH0KKworICAgIERpZ2l0IGxh
c3REaWdpdDsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhc3REaWdpdCA9IHgtPmRp
Z2l0KDApOworICAgIGVsc2UgeworICAgICAgICBpbnQgY2h1bmtDaGFycyA9IERpZ2l0Qml0cyAq
IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyIC8gbWF4Qml0c1BlckNoYXI7CisgICAgICAgIERp
Z2l0IGNodW5rRGl2aXNvciA9IGRpZ2l0UG93KHJhZGl4LCBjaHVua0NoYXJzKTsKKworICAgICAg
ICAvLyBCeSBjb25zdHJ1Y3Rpb24gb2YgY2h1bmtDaGFycywgdGhlcmUgY2FuJ3QgaGF2ZSBiZWVu
IG92ZXJmbG93LgorICAgICAgICBBU1NFUlQoY2h1bmtEaXZpc29yKTsKKyAgICAgICAgaW50IG5v
blplcm9EaWdpdCA9IGxlbmd0aCAtIDE7CisgICAgICAgIEFTU0VSVCh4LT5kaWdpdChub25aZXJv
RGlnaXQpKTsKKworICAgICAgICAvLyB7cmVzdH0gaG9sZHMgdGhlIHBhcnQgb2YgdGhlIEJpZ0lu
dCB0aGF0IHdlIGhhdmVuJ3QgbG9va2VkIGF0IHlldC4KKyAgICAgICAgLy8gTm90IHRvIGJlIGNv
bmZ1c2VkIHdpdGggInJlbWFpbmRlciIhCisgICAgICAgIEpTQmlnSW50KiByZXN0ID0gbnVsbHB0
cjsKKworICAgICAgICAvLyBJbiB0aGUgZmlyc3Qgcm91bmQsIGRpdmlkZSB0aGUgaW5wdXQsIGFs
bG9jYXRpbmcgYSBuZXcgQmlnSW50IGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0ID09IHJlc3Q7
IGZyb20gdGhlbiBvbiBkaXZpZGUgdGhlIHJlc3QgaW4tcGxhY2UuCisgICAgICAgIEpTQmlnSW50
KiogZGl2aWRlbmQgPSAmeDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlnaXQgY2h1bms7
CisgICAgICAgICAgICBhYnNvbHV0ZURpdlNtYWxsKGV4ZWMsICpkaXZpZGVuZCwgY2h1bmtEaXZp
c29yLCAmcmVzdCwgY2h1bmspOworICAgICAgICAgICAgQVNTRVJUKHJlc3QpOworCisgICAgICAg
ICAgICBkaXZpZGVuZCA9ICZyZXN0OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
aHVua0NoYXJzOyBpKyspIHsKKyAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKHJh
ZGl4RGlnaXRzW2NodW5rICUgcmFkaXhdKTsKKyAgICAgICAgICAgICAgICBjaHVuayAvPSByYWRp
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghY2h1bmspOworCisgICAgICAg
ICAgICBpZiAoIXJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpCisgICAgICAgICAgICAgICAgbm9u
WmVyb0RpZ2l0LS07CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBuZXZlciBjbGVhciBtb3JlIHRo
YW4gb25lIGRpZ2l0IHBlciBpdGVyYXRpb24sIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGNodW5r
RGl2aXNvciBpcyBzbWFsbGVyIHRoYW4gbWF4IGRpZ2l0IHZhbHVlLgorICAgICAgICAgICAgQVNT
RVJUKHJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworICAgICAgICB9IHdoaWxlIChub25aZXJv
RGlnaXQgPiAwKTsKKworICAgICAgICBsYXN0RGlnaXQgPSByZXN0LT5kaWdpdCgwKTsKKyAgICB9
CisKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbbGFz
dERpZ2l0ICUgcmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJhZGl4OworICAgIH0gd2hp
bGUgKGxhc3REaWdpdCA+IDApOworICAgIEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpKTsKKyAg
ICBBU1NFUlQocmVzdWx0U3RyaW5nLnNpemUoKSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGlt
dW1DaGFyYWN0ZXJzUmVxdWlyZWQpKTsKKworICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9lcy4K
KyAgICBpbnQgbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyA9IHJlc3VsdFN0cmluZy5zaXplKCk7Cisg
ICAgd2hpbGUgKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMgID4gMSAmJiByZXN1bHRTdHJpbmdbbmV3
U2l6ZU5vTGVhZGluZ1plcm9lcyAtIDFdID09ICcwJykKKyAgICAgICAgbmV3U2l6ZU5vTGVhZGlu
Z1plcm9lcy0tOworCisgICAgcmVzdWx0U3RyaW5nLnNocmluayhuZXdTaXplTm9MZWFkaW5nWmVy
b2VzKTsKKworICAgIGlmIChzaWduKQorICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKCctJyk7
CisKKyAgICBzdGQ6OnJldmVyc2UocmVzdWx0U3RyaW5nLmJlZ2luKCksIHJlc3VsdFN0cmluZy5l
bmQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoV1RGTW92ZShyZXN1bHRTdHJp
bmcpKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRyaW0oRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0pCit7CisgICAgaWYgKGlzWmVybygpKQorICAgICAgICByZXR1cm4gdGhpczsKKwor
ICAgIGludCBub25aZXJvSW5kZXggPSBtX2xlbmd0aCAtIDE7CisgICAgd2hpbGUgKG5vblplcm9J
bmRleCA+PSAwICYmICFkaWdpdChub25aZXJvSW5kZXgpKQorICAgICAgICBub25aZXJvSW5kZXgt
LTsKKworICAgIGlmIChub25aZXJvSW5kZXggPT0gbV9sZW5ndGggLSAxKQorICAgICAgICByZXR1
cm4gdGhpczsKKworICAgIGludCBuZXdMZW5ndGggPSBub25aZXJvSW5kZXggKyAxOworICAgIEpT
QmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChleGVjLCB2bSwgbmV3TGVu
Z3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0cmltbWVkQmlnSW50KTsKKyAgICBEaWdpdCogZGF0
YSA9IHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9yYWdlKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBuZXdMZW5ndGg7IGkrKykKKyAgICAgICAgZGF0YVtpXSA9IGRpZ2l0KGkpOworCisgICAgdHJp
bW1lZEJpZ0ludC0+c2V0U2lnbih0aGlzLT5zaWduKCkpOworCisgICAgcmV0dXJuIHRyaW1tZWRC
aWdJbnQ7Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0sIGludCByYWRpeCwgaW50IGNoYXJjb3VudCkKK3sKKyAgICBBU1NFUlQoMiA8
PSByYWRpeCAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJUKGNoYXJjb3VudCA+PSAwKTsKKwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHNpemVfdCBi
aXRzUGVyQ2hhciA9IE1heEJpdHNQZXJDaGFyW3JhZGl4XTsKKyAgICBzaXplX3QgY2hhcnMgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNoYXJjb3VudCk7CisgICAgY29uc3QgaW50IHJvdW5kdXAgPSBC
aXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciAtIDE7CisgICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gcm91bmR1cCkgLyBiaXRzUGVyQ2hhcikgewor
ICAgICAgICBzaXplX3QgYml0c01pbiA9IGJpdHNQZXJDaGFyICogY2hhcnM7CisKKyAgICAgICAg
Ly8gRGl2aWRlIGJ5IDMyIChzZWUgdGFibGUpLCByb3VuZGluZyB1cC4KKyAgICAgICAgYml0c01p
biA9IChiaXRzTWluICsgcm91bmR1cCkgPj4gQml0c1BlckNoYXJUYWJsZVNoaWZ0OworICAgICAg
ICBpZiAoYml0c01pbiA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KE1heEludCkpIHsKKyAgICAgICAg
ICAgIC8vIERpdmlkZSBieSBrRGlnaXRzQml0cywgcm91bmRpbmcgdXAuCisgICAgICAgICAgICBp
bnQgbGVuZ3RoID0gKHN0YXRpY19jYXN0PGludD4oYml0c01pbikgKyBEaWdpdEJpdHMgLSAxKSAv
IERpZ2l0Qml0czsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPD0gTWF4TGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3Ro
KGV4ZWMsIHZtLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhlYykKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c2l6ZV90IEpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU0Jp
Z0ludCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIHNpemVfdCBi
dWZmZXJFc3RpbWF0ZWRTaXplID0gdGhpc09iamVjdC0+bV9sZW5ndGggKiBEaWdpdFNpemU7Cisg
ICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUoY2VsbCkgKyBidWZmZXJFc3RpbWF0ZWRTaXpl
OworfQorCitkb3VibGUgSlNCaWdJbnQ6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJDb252ZXJ0aW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
IikpOworICAgIHJldHVybiAwLjA7Cit9CisKK2Jvb2wgSlNCaWdJbnQ6OmdldFByaW1pdGl2ZU51
bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNv
bnN0Cit7CisgICAgcmVzdWx0ID0gdGhpczsKKyAgICBudW1iZXIgPSB0b051bWJlcihleGVjKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmU5NDY4MzE5NTM0YmFiY2Nl
MTIzYWMzNDExYTIzOTMyMDI5ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTQmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKwor
cHVibGljOgorCisgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRo
WmVybyB9OworICAgIAorICAgIEpTQmlnSW50KFZNJiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCk7
CisKKyAgICB2b2lkIGluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlKTsKKworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIHN0YXRp
YyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUoaW50IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhFeGVjU3RhdGUqLCBWTSYpOworCisgICAgc3Rh
dGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSosIFZNJiwgaW50IGxlbmd0
aCk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBWTSYpOworCisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2lnbihib29s
IHNpZ24pIHsgbV9zaWduID0gc2lnbjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2lnbjsgfQorCisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9
IGxlbmd0aDsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQor
CisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiB0b1N0cmluZ09uZURpZ2l0KCk7CisKKyAgICBz
dGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmlldywgdWlu
dDhfdCByYWRpeCk7CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSosIGludCBy
YWRpeCk7CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxUb0Jp
Z0ludChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworCisgICAgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7
CisgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJpdmF0ZToK
KyAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJfdDsKKyAgICBzdGF0aWMgY29uc3QgaW50IEJpdHNQ
ZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29uc3QgaW50IERpZ2l0U2l6ZSA9IHNpemVvZihEaWdp
dCk7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdpdEJpdHMgPSBEaWdpdFNpemUgKiBCaXRzUGVy
Qnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50IEhhbGZEaWdpdEJpdHMgPSBEaWdpdEJpdHMgLyAy
OworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBIYWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgSGFsZkRp
Z2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4SW50ID0gMHg3RkZGRkZGRjsK
KyAgICAKKyAgICAvLyBUaGUgbWF4aW11bSBsZW5ndGggdGhhdCB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBzdXBwb3J0cyB3b3VsZCBiZQorICAgIC8vIE1heEludCAvIERpZ2l0Qml0cy4gSG93
ZXZlciwgd2UgdXNlIGEgbG93ZXIgbGltaXQgZm9yIG5vdywgYmVjYXVzZQorICAgIC8vIHJhaXNp
bmcgaXQgbGF0ZXIgaXMgZWFzaWVyIHRoYW4gbG93ZXJpbmcgaXQuCisgICAgLy8gU3VwcG9ydCB1
cCB0byAxIG1pbGxpb24gYml0cy4KKyAgICBzdGF0aWMgY29uc3QgaW50IE1heExlbmd0aCA9IDEw
MjQgKiAxMDI0IC8gKHNpemVvZih2b2lkKikgKiBCaXRzUGVyQnl0ZSk7CisgICAgCisgICAgc3Rh
dGljIHVpbnQ2NF90IGNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0
aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2lnbik7CisgICAgCisgICAgc3Rh
dGljIHZvaWQgYWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwgRGlnaXQg
ZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7CisgICAgc3Rh
dGljIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0
b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNCaWdJbnQqIHJlc3VsdCk7CisKKyAgICAvLyBEaWdp
dCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0IGEs
IERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0U3ViKERpZ2l0
IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdE11bChE
aWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGlnaCk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0RGl2
KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcik7
CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KTsK
KworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpTQmlnSW50
KiwgaW50IHJhZGl4KTsKKworICAgIGJvb2wgaXNaZXJvKCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUq
IGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4
LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpCisgICAgeworICAgICAg
ICBBU1NFUlQobGVuZ3RoID49IDApOworICAgICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisKKyAg
ICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6
ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykKKyAgICAg
ICAgICAgICsrcDsKKworICAgICAgICBpbnQgZW5kSW5kZXggPSBsZW5ndGggLSAxOworICAgICAg
ICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgd2hpbGUgKGVuZEluZGV4ID49
IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAgICAgICAgICAgIC0tZW5k
SW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOworCisgICAgICAgIGlmIChw
ID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZtKTsKKwor
ICAgICAgICBpbnQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAg
ICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChyYWRpeCAtIDEwKTsKKyAgICAgICAgaW50IGxpbWl0
QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxs
b2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKKyAgICAgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXN1bHQtPmluaXRp
YWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisKKyAgICAgICAgZm9yIChpbnQg
aSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgICAgICB1aW50MzJfdCBkaWdp
dDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQor
ICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAgICAgICAgICAgICAg
ZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ld
ID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0
YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihkaWdpdCkpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+cmlnaHRUcmltKGV4ZWMsIHZtKTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZNJiwgaW50
IHJhZGl4LCBpbnQgY2hhcmNvdW50KTsKKworICAgIEpTQmlnSW50KiByaWdodFRyaW0oRXhlY1N0
YXRlKiwgVk0mKTsKKworICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IG11bHRpcGxp
ZXIsIERpZ2l0IHBhcnQpOworICAgIAorICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKERp
Z2l0KT4oc2l6ZW9mKEpTQmlnSW50KSk7CisgICAgfQorICAgIAorICAgIERpZ2l0KiBkYXRhU3Rv
cmFnZSgpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PERpZ2l0Kj4oYml0d2lz
ZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICB9CisKKyAgICBEaWdp
dCBkaWdpdChpbnQgbikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0
aCgpKTsKKyAgICAgICAgRGlnaXQqIGRhdGFQdHIgPSBkYXRhU3RvcmFnZSgpOworICAgICAgICBy
ZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpZ2l0KGludCBuLCBEaWdp
dCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsK
KyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0gZGF0YVN0b3JhZ2UoKTsKKyAgICAgICAgZGlnaXRQ
dHJbbl0gPSB2YWx1ZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBzaXplRm9yKGludCBs
ZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoICogRGlnaXRTaXplOworICAgIH0K
KworICAgIGludCBtX2xlbmd0aDsKKyAgICBib29sIG1fc2lnbjsKK307CisKK2lubGluZSBKU0Jp
Z0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxs
KCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0Nl
bGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBkMDMwNDUyMjBkNWU5NTI2N2VkOWY4ZjdiOWQz
MzY1YTgzMTc5ZGQzLi4xNGFkZDdjYjkzMzhlM2IyOGM0YTIyMWQzNzI4NWQ0OTJmNTI5YzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMTMwLDYgKzEzMSw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVl
OjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAoaXND
ZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKKyAgICAgICAgLy8g
RklYTUU6IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludENvbnN0cnVjdG9yIGFuZCBC
aWdJbnRQcm90b3R5cGUKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM1OQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCaWdJbnQoKSk7CiAg
ICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+c3ltYm9sUHJvdG90eXBlKCk7CiAgICAgfQpAQCAtMzc2LDYgKzM4MCwx
MyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMs
IGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmlu
ZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmln
SW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBkaWdpdCA9IGJpZ0ludC0+dG9TdHJpbmdPbmVE
aWdpdCgpOworICAgICAgICBpZiAoZGlnaXQpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygqZGlnaXQgKyAnMCcpOworICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgYmlnSW50LT50b1N0cmluZyhleGVjLCAxMCkpOwor
ICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2Vs
bCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGMyNGVhNWJiZjM1NDdiNGZmZDQ1ZGVlYmE2
ZGU0MWYyNjE5NmUzOGUuLjlmMzlhM2M3ZGUwNzdkMjNkZTAyZGIxOTJhYTQzZDIwZTIwMjdkNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIyMiw2
ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FueUludCgpIGNvbnN0OwogICAgIGJvb2wg
aXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBp
c0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlz
UHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5k
ZXggYTI3ZjZhMTExYmJkNWJjZWViYTIzY2ZjZjI4M2ZmZDVmYTEwNGM3Ny4uNTYyOTUxOGEyZmIy
YWQ3NTY0ZTE1NDBkNDc4NjNhNWFlMzlmMDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKQEAgLTU3OCw2ICs1NzksMTEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNT
dHJpbmcoKSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmco
KTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKK30KKwogaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0Nl
bGwoKS0+aXNTeW1ib2woKTsKQEAgLTEwMjAsNiArMTAyNiw4IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCkt
PmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFz
U3RyaW5nKHYyKSk7CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbFRvQmlnSW50KGFzQmlnSW50KHYxLmFzQ2VsbCgp
KSwgYXNCaWdJbnQodjIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZThhYzBlZTdm
YmMxYmMzNTc5ZWU2M2Y1Y2IxNmE5NjA4MzcuLjc2N2U4YWRjMmVmM2Y3ODdhOWVhYjY3NTc4NjBl
MDQzNmY3Yjg4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwt
PmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmco
KSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBz
bG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEpT
Q2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgSlNWYWx1ZQogCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5
bWJvbCgpKSB7CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8
fCBjZWxsLT5pc0JpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGws
IHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRp
dmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3Qp
OwogICAgIH0KQEAgLTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRp
dmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywg
cHJlZmVycmVkVHlwZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJy
ZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+
dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE2NCw2ICsxNjYsOCBA
QCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFs
dWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVl
KTsKKyAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVl
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJp
bWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwogfQogCkBAIC0xNzMsNiArMTc3LDgg
QEAgZG91YmxlIEpTQ2VsbDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZXhl
Yyk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBTeW1ib2wqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJl
cihleGVjKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+
dG9OdW1iZXIoZXhlYyk7CiB9CiAKQEAgLTE4MSw2ICsxODcsOSBAQCBKU09iamVjdCogSlNDZWxs
Ojp0b09iamVjdFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjbwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVj
dChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIElt
cGxlbWVudCBKU0JpZ0ludCwgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKyAg
ICBSRUxFQVNFX0FTU0VSVCghaXNCaWdJbnQoKSk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggMmU5MTk3M2VmZDQ0NmQ4ZjQyN2NkNzVkMWJiOGIzYmIyNzI1YjE0ZS4uNGRhNzdhYmRi
NDk1MDY1MmZkNTM0OTQyYTJiYjY1MTAyZGEwMGMxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAg
ICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAg
IGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCA2
NzM2ZjVmOGMyYWIxYzU5MGNjYzQ5ZTRlMjc0M2VmMThkMWQwMTYxLi44OTM0Yzg0NWRiNmE1M2Vh
NDUwNTUzNDA2YmI4OWE5MjRlMzlmNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0xOTIsNiArMTkyLDExIEBAIGlubGluZSBib29sIEpT
Q2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsK
IH0KIAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHlwZSA9PSBCaWdJbnRUeXBlOworfQorCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9s
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlID09IFN5bWJvbFR5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDg1MzU2ZDM5NzdhZWQ1YzczYjg5YWZmMDVj
OTdjMjQyZjk1YmI0ZWEuLjU3N2QxOGUwMjVjMTFhOTkyY2UxNmM4NTBjYjIyMThlMjFjNmMwMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0zMyw2ICszMyw3IEBA
IGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwK
ICAgICBTeW1ib2xUeXBlLAorICAgIEJpZ0ludFR5cGUsCiAKICAgICBDdXN0b21HZXR0ZXJTZXR0
ZXJUeXBlLAogICAgIEFQSVZhbHVlV3JhcHBlclR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggZThmMzE2Y2Y0MmI4ZTkyODlmY2EwODliNDgzMTIx
NWI3YTMwMjAzMy4uMGZkYzdjMzU2NWNlOGFiMWRkZWM1MWRlZmQ0Y2YzODUyYzM5OTg1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtNjYsNiArNjYs
MjUgQEAgaW5saW5lIGludCBjbHozMih1aW50MzJfdCBudW1iZXIpCiAjZW5kaWYKIH0KIAoraW5s
aW5lIGludCBjbHo2NCh1aW50NjRfdCBudW1iZXIpCit7CisjaWYgQ09NUElMRVIoR0NDX09SX0NM
QU5HKQorICAgIGludCB6ZXJvQ291bnQgPSA2NDsKKyAgICBpZiAobnVtYmVyKQorICAgICAgICB6
ZXJvQ291bnQgPSBfX2J1aWx0aW5fY2x6bGwobnVtYmVyKTsKKyAgICByZXR1cm4gemVyb0NvdW50
OworI2Vsc2UKKyAgICBpbnQgemVyb0NvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gNjM7IGkg
Pj0gMDsgaS0tKSB7CisgICAgICAgIGlmICghKG51bWJlciA+PiBpKSkKKyAgICAgICAgICAgIHpl
cm9Db3VudCsrOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHplcm9Db3VudDsKKyNlbmRpZgorfQorCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9w
ZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgog
Ly8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhl
ciB0aGFuIHRvIGludGVycHJldGF0aW9uCiAvLyBvZiB0aGUgcmVzdWx0aW5nIGJpdC1wYXR0ZXJu
IChhcyBzdWNoIHRoaXMgbWV0aG9kIGlzIGFsc28gY2FsbGVkIHRvIGltcGxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXgg
NTUwYjhmNzBkN2M3NzJiMThmOWI2NDcyOTA1YTY0YjdmNzkwZTBiYi4uYTYzZDAxZTRkOGJkYWY4
ZDljOWE0NjEyMDdiNWI0MmEwODc0NTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgogI2luY2x1ZGUgIlVpbnQxNldpdGhG
cmFjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KQEAgLTEzOSw5ICsxNDAsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGdldElu
dGVnZXJBcmd1bWVudEluUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG93LCBpbgogLy8gZm8g
YW55IG51bWJlciBvZiBkaWdpdHMgYW4gSUVFRSBudW1iZXIgbWF5IHJlcXVpcmUgdG8gcmVwcmVz
ZW50LgogdHlwZWRlZiBjaGFyIFJhZGl4QnVmZmVyWzIxODBdOwogCi0vLyBNYXBwaW5nIGZyb20g
aW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4
IDIuLjM2Lgotc3RhdGljIGNvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotCiBzdGF0aWMgaW5saW5lIGNoYXIqIGludDUyVG9T
dHJpbmdXaXRoUmFkaXgoY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZywgaW50NjRfdCBpbnQ1MlZh
bHVlLCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDZkMTA1NTgy
NzA4YTI0YTNhZDRhNGE1MDBkMzk0MTNkOWI5OGRjMjAuLjk3Y2ZhMDdhOTY5NDAyMjI1NmM5YzM4
YTY2Yzc2NDMzNTE3Y2Q2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFs
dWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAg
ICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgaWYgKHYuaXNT
eW1ib2woKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zeW1ib2xTdHJpbmcoKTsK
KyAgICBpZiAodi5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmJp
Z2ludFN0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9y
IG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZApAQCAtMTEyLDcgKzExNCw3IEBAIGJvb2wg
anNJc09iamVjdFR5cGVPck51bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikKICAg
ICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCkt
PnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlw
ZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0
eXBlID09IEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+
PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNzhlNzdhZDE4NjRj
OGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5My4uZmJhMzI3ZjBkNWQyZDYwMDYyYWIzNTRkZmY5
ZTlkZGUxYzRiODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApA
QCAtNDc4LDYgKzQ3OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0g
ZmFsc2U7CiAgICAgdihib29sLCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQsIHRydWUsIE5vcm1h
bCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBpbiBmYXN0IFRMUy4gSWYgZmFsc2Us
IHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAogICAgIHYoYm9vbCwgdXNlQ2FsbElD
c0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxs
IHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdhc20gdG8gSlMgY2FsbHMuIikgXAog
ICAgIHYoYm9vbCwgdXNlT2JqZWN0UmVzdFNwcmVhZCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
d2Ugd2lsbCBlbmFibGUgT2JqZWN0IFJlc3QvU3ByZWFkIGZlYXR1cmUuIikgXAorICAgIHYoYm9v
bCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmln
SW50IHN1cHBvcnQuIikgXAogICAgIHYoYm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5n
LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFs
bG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxs
IGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIilcCiAgICAgdihib29sLCBmb3JjZVBvbHlQ
cm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNy
ZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCmluZGV4IGU0Nzk1ZWM0YWY1OTkzODI4NDZm
NGNkNzEyMjg1MGYyYzY4MjgwNzQuLmYzMTAxNTg2M2RkZjdkYTFlY2QwN2Y5MmVhZmI5MDhjZmI3
ODU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaApAQCAtMjI2
LDQgKzIyNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29m
PENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKFN0cmluZ1ZpZXcpCiAgICAgcmV0dXJuIGNhbGxiYWNr
KHZpZXdXaXRoU3RyaW5nLnZpZXcpOwogfQogCisvLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4u
MzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2LgorY29u
c3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eiI7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA4NWQ0Y2IxNTU4NTgzZTgwMWI5ZDAxMGIwMTNjMzE2
ZjZmOGQwZjM4Li44ODUwYzRhOWEzNDM5NGYxOGY3NWEzNWQ2N2JhM2E0NWExOWZlNDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtNDAsNiAr
NDAsNyBAQAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAgIG1hY3JvKHN0cmluZykgXAogICAg
IG1hY3JvKHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkgXAogICAgIG1hY3JvKHRydWUpCiAK
IG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpGdW5jdGlv
bjoKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmluZygpOworICAgICAgICBjYXNlIFR5
cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVybiBiaWdpbnRTdHJpbmcoKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApp
bmRleCBhZTUyMTA3MDlhN2Y1NDE2YTk4MmE3Yzc1YzBjMzM2MWMyZDAxY2U4Li4zYmZjZjU3MWY0
YTg3YTMxZWJmOTA1ZDY4ZDRiNTJkNmQ4YTU1YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMDMsNyArMjAzLDYgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IFN5bWJvbFR5cGUpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFBy
b3RvdHlwZSgpOwotCiB9CiAKIGlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBlRm9y
TG9va3VwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCmluZGV4IGRiMTYyYjdmNGY0Y2UyM2Zi
ODgwNTZkZGY0MWM0OGRlMzBkNTY0Y2QuLmFhM2ZmYTdjMzgyZTEwNWQ1ZGFlNGMxYTQ4MzYwZDQw
ZWY4YmJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVv
ZlR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUu
Y3BwCkBAIC01NCw2ICs1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBUeXBlb2ZUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlb2ZUeXBlOjpGdW5jdGlvbjoKICAgICAg
ICAgb3V0LnByaW50KCJmdW5jdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBl
b2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgIG91dC5wcmludCgiYmlnaW50Iik7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuaAppbmRleCAzMzJmYTgxMjE5
MmE1YTYyZWI2NmJjNjFiMjgwOGI2ZjUzNWE0ZWQ4Li45NjQ4NWQwMmQyNDFjNmRiNzYyY2U4MTA2
ZmYyODUzYTZjNTk3MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlb2ZUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9m
VHlwZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIFR5
cGVvZlR5cGUgewogICAgIFVuZGVmaW5lZCwKKyAgICBCaWdJbnQsCiAgICAgQm9vbGVhbiwKICAg
ICBOdW1iZXIsCiAgICAgU3RyaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDY4ZmJjZTdiZWZhM2JiMjhiODI1ZjIzY2I1NzNhY2M1YTVhODZiODguLmU5YzI5ODQwZTg1
ZTBmN2NiOThkYzYxMmE0ODRjOGU3ODY4MDdkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5Lmgi
CkBAIC0zMDUsNiArMzA2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgbWFwSXRl
cmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgYmlnSW50U3RydWN0dXJlLnNldCgqdGhpcywgSlNC
aWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKIAogICAgIHNlbnRp
bmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNlbnRpbmVs
KCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBCdWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6QnVja2V0
VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CmluZGV4IGE2YzJkNTNmYzgwMWQxY2RhZGRmZjFhMWZhY2M1NDU0OWNhYmFjZGYuLjljZTI2NDhh
NTFjNmMxOWFhYTEyM2MxNGU2ZjQxMGFjNDY0ODkwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaApAQCAtNDA2LDYgKzQwNiw3IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBoYXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNldEl0
ZXJhdG9yU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1hcEl0ZXJhdG9yU3RydWN0
dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKIAogICAgIFN0cm9u
ZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBTdHJvbmc8SlNDZWxs
PiBzZW50aW5lbFNldEJ1Y2tldDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAzYWMzZGU2YjUzNmU4ZWZhZDViNjNhYWU0M2M0ZDk4YzUyN2Q2MDQy
Li40OTdlZWNlOWQ5YmI4ODI0M2MxMDRkNzQxODMwMGU4ODgxNjdjMjcyIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTctMTItMDQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtF
U05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludCBsaXRlcmFscyBhbmQgSlNCaWdJbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNy0xMi0wNCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIEFYOiBBT006IEltcGxlbWVudCByZWxhdGlvbiB0eXBlIHByb3Bl
cnRpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGRkNTcxZTEzN2JiMTI3ZDYw
ZjRiOTdkNGI2YTkyNjdlMTdmMTRiNDkuLjYwM2M0ZDBjOWQ0YzdjNDJjY2U5M2U0YWRiMjI4MjYx
YmFkMWQzNzUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwx
MCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1
bigiZGVmYXVsdCIsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlv
bnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZU
TF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVu
RlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0
bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVz
dFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzE4MmI2YTM0MjM4MDk5YTIxODdlYThlNTcwMjViZDM2
NzA4MWQzOC4uMzc4YjhjMjlkNTFmOGFkYmI2MDUwZDE4YmRiZGE2MTNhN2ExMGUwOSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAxNy0xMi0wNCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBK
U0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1saXRl
cmFsLWxpbmUtdGVybWluYXRvci5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICAqIHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChhc3NlcnRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKGNhdGNoKToKKyAg
ICAgICAgKiBzdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1R5cGVFcnJvcik6CisgICAgICAgICog
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAqIHN0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydFRocm93U3ludGF4RXJyb3Ip
OgorCiAyMDE3LTEyLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQcm94eSBhbGwgZnVuY3Rpb25zLCBleGNlcHQgdGhlICQgb2JqZWN0cwpAQCAtMzUsNiAr
NTgsMTggQEAKIAogMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgSmF2YVNjcmlwdENvcmU6IG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrcyBpbiBN
YXRoIGZ1bmN0aW9ucyB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1bWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjk3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNTc0NTU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4K
KworICAgICAgICAqIHN0cmVzcy9tYXRoLWV4Y2VwdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAo
Z2V0IHRyeSk6CisgICAgICAgIChjYXRjaCk6CisKKzIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFRyeSBwcm94eWluZyBhbGwgZnVuY3Rpb24g
YXJndW1lbnRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODAzMDYKIApAQCAtNTEsMTggKzg2LDYgQEAKIAogMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAg
PGpmYmFzdGllbkBhcHBsZS5jb20+CiAKLSAgICAgICAgSmF2YVNjcmlwdENvcmU6IG1pc3Npbmcg
ZXhjZXB0aW9uIGNoZWNrcyBpbiBNYXRoIGZ1bmN0aW9ucyB0aGF0IHRha2UgbW9yZSB0aGFuIG9u
ZSBhcmd1bWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMjk3Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTc0NTU1Nj4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBNYXJrIExhbS4KLQotICAgICAgICAqIHN0cmVzcy9tYXRoLWV4Y2VwdGlvbnMu
anM6IEFkZGVkLgotICAgICAgICAoZ2V0IHRyeSk6Ci0gICAgICAgIChjYXRjaCk6Ci0KLTIwMTct
MTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgotCiAgICAgICAgIEphdmFT
Y3JpcHRDb3JlOiBhZGQgdGVzdCBmb3Igd2VpcmQgY2xhc3Mgc3RhdGljIGdldHRlcnMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI4MQogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzU1OTIxMzk+CmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRl
c3RzLnlhbWwgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJiMTc3ZTI2
MjZjMjU0ODhjM2EyOGQ5NWQxNmU3NTQ2MjU3MjVmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvYmlnSW50VGVzdHMueWFtbApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAx
NyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBCaWdJ
bnQgdGVzdHMuIFRvIGJlIHJlbW92ZWQgb25jZSBCaWdJbnQKKyMgYXJlIG5vIGxvbmdlciBiZWhp
bmQgYSBmZWF0dXJlIGZsYWcuCisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFs
cy5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC10
eXBlLW9mLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LWxpdGVyYWwtbGluZS10ZXJtaW5hdG9yLmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWZiNDk5
OWVlNDBkYmIwNzJiYTBjYWUwZjI3NjY0ZDIwYmE0YjI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpAQCAtMCwwICsx
LDMzIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAg
IGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisK
K3ZhciBkOworCithc3NlcnQoZXZhbCgiZD01blx1MDAwQSIpID09PSA1bik7Cithc3NlcnQoZCA9
PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD0xNW5cdTAwMEQiKSA9PT0gMTVuKTsKK2Fzc2VydChk
ID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD0xOW5cdTIwMjg7IikgPT09IDE5bik7Cithc3Nl
cnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUyMDI5OyIpID09PSA5NW4pOwor
YXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQTVuIikgPT09IDVuKTsK
K2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwRDE1biIpID09PSAxNW4p
OworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MjAyODE5bjsiKSA9PT0g
MTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD1cdTIwMjk5NW47Iikg
PT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1saXRlcmFscy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmM0ODA5MGJlY2NkOTdjZGI0N2U0OTRlMmEyYWFhNDljZGUzYTQxOAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKQEAg
LTAsMCArMSwxMTMgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChh
KSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24i
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1dCkgeworICAgIHRy
eSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcik7Cisg
ICAgfQorfQorCisvLyBUZXN0IDAgY29udmVyc2lvbnMKK2xldCBuID0gMG47Cithc3NlcnQobiA9
PT0gMG4pOworCituID0gMDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworLy8gQmluYXJ5IHJlcHJl
c2VudGF0aW9uCisKK24gPSAwYjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwYjEw
bjsKK2Fzc2VydChuID09PSAybik7CisKK24gPSAwYjAxMG47Cithc3NlcnQobiA9PT0gMm4pOwor
CitsZXQgYmluYXJ5U3RyaW5nID0gIjBiMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsr
KQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJu
Iik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2
bik7CisKK24gPSAwQjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwQjEwbjsKK2Fz
c2VydChuID09PSAybik7CisKK2JpbmFyeVN0cmluZyA9ICIwQjEiOworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChiaW5h
cnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYw
NzQzMTc2ODIxMTQ1Nm4pOworCisvLyBPY3RhbCByZXByZXNlbnRhdGlvbgorCituID0gMG83bjsK
K2Fzc2VydChuID09PSA3bik7CisKK24gPSAwbzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24g
PSAwbzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gMG8wMDAyMG47Cithc3NlcnQobiA9
PT0gMTZuKTsKKworbiA9IDBPN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gME8xMG47Cith
c3NlcnQobiA9PT0gOG4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9
IDBPMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKKy8vIEhleGFkZWNpbWFsIHJlcHJlc2VudGF0
aW9uCisKK24gPSAweGFuOworYXNzZXJ0KG4gPT09IDEwbik7CisKK24gPSAweGZmbjsKK2Fzc2Vy
dChuID09PSAyNTVuKTsKKworbiA9IDB4MDAwZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCitu
ID0gMHhmYWJjbjsKK2Fzc2VydChuID09PSA2NDE4OG4pOworCithc3NlcnRUaHJvd1N5bnRheEVy
cm9yKCIwYjJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjAybiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMGIxbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvODluIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwbzA4biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMG83bm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Z24iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjB4MGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGZubiIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTAwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjFhMG5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMEUyMG4iKTsKKwordHJ5IHsKKyAg
ICBldmFsKCItLTEwbiIpOworICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBh
c3NlcnQoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGU0N2I3Y2Y3ZDc0Zjc5MTlj
NGJlNTBhZDQ0Yjc1M2M2ODM0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8vQCBydW5CaWdJ
bnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhy
b3dUeXBlRXJyb3IoaW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAg
ICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChl
IGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICB9Cit9CisKK2Fzc2VydCgiYSIgKyAxMDBuLCAi
YTEwMCIpOworYXNzZXJ0KDEyOG4gKyAiYmFiYSIsICIxMjhiYWJhIik7CisKK2Fzc2VydFRocm93
VHlwZUVycm9yKCIxMG4gKyAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICsgMTVuIik7
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiArIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVy
cm9yKCI0NC41ICsgMTEyMDM0biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuIC0gMzAi
KTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIzNiAtIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJy
b3IoIjEyMG4gLSAzMC41Iik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAtIDExMjAzNG4i
KTsKKworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEwbiAqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVF
cnJvcigiMzYgKiAxNW4iKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMjBuICogMzAuNSIpOwor
YXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0LjUgKiAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlw
ZUVycm9yKCIxMG4gLyAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2IC8gMTVuIik7Cith
c3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiAvIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9y
KCI0NC41IC8gMTEyMDM0biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuICoqIDMwIik7
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgKiogMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJv
cigiMTIwbiAqKiAzMC41Iik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAqKiAxMTIwMzRu
Iik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTNjZDMwMTI0NmI5
NThmNGM2ZDRkYTExYWY3Y2QwYTZiNDA5MmFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYmlnLWludC10eXBlLW9mLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRF
bmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0g
ImJpZ2ludCIpOworYXNzZXJ0KHR5cGVvZiAxbiAhPT0gIm9iamVjdCIpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTIxYTc3NjE1YjliNDU3YzE1NGI1ZjVlOGI3MzE1YWUyNTQxZGFjNAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxp
bmctbGVhZGluZy5qcwpAQCAtMCwwICsxLDExMSBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9y
KGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2Vy
dChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IFN5bnRheEVycm9yKTsKKyAgICB9Cit9CisKK3ZhciBkOworCithc3NlcnQoZXZhbCgiZD1cdTAw
MEM1biIpID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAw
MDkxNW4iKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD1c
dTAwMEIxOW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0
KGV2YWwoImQ9XHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisK
K2Fzc2VydChldmFsKCJkPVx1MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4p
OworCithc3NlcnQoZXZhbCgiZD1cdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0g
NTNuKTsKKworYXNzZXJ0KGV2YWwoImQ9XHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQg
PT09IDM5bik7CisKK2Fzc2VydChldmFsKCJkPTVuXHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChk
ID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPTE1blx1MDAwOSIpID09PSAxNW4pOworYXNzZXJ0
KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPTE5blx1MDAwQjsiKSA9PT0gMTluKTsKK2Fz
c2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD0xMTluXHUwMDBDOyIpID09PSAxMTlu
KTsKK2Fzc2VydChkID09PSAxMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUwMDIwOyIpID09
PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPTUzblx1MDBBMDsi
KSA9PT0gNTNuKTsKK2Fzc2VydChkID09PSA1M24pOworCithc3NlcnQoZXZhbCgiZD0zOW5cdUZF
RkY7IikgPT09IDM5bik7Cithc3NlcnQoZCA9PT0gMzluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAw
Q1x1MDAwQ2RcdTAwMENcdTAwMEM9XHUwMDBDXHUwMDBDNW5cdTAwMEM7XHUwMDBDIikgPT09IDVu
KTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJcdTAwMDlcdTAwMDlkXHUwMDA5
XHUwMDA5PVx1MDAwOVx1MDAwOTE1blx1MDAwOTsiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAx
NW4pOworCithc3NlcnQoZXZhbCgiXHUwMDBCXHUwMDBCZFx1MDAwQlx1MDAwQj1cdTAwMEJcdTAw
MEIxOW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2
YWwoIlx1MDAwQ1x1MDAwQ2RcdTAwMEM9XHUwMDBDXHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cith
c3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJcdTAwMjBkXHUwMDIwPVx1MDAyMFx1
MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgi
XHUwMEEwZFx1MDBBMD1cdTAwQTBcdTAwQTA1M247IikgPT09IDUzbik7Cithc3NlcnQoZCA9PT0g
NTNuKTsKKworYXNzZXJ0KGV2YWwoIlx1RkVGRmRcdUZFRkY9XHVGRUZGXHVGRUZGMzluOyIpID09
PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKKy8vIEFzc2VydCBlcnJvcnMKKworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MGJcdTAwMEIxMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMDkxMTExMTFu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1MDAyMDEwMTAxbiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMGJcdTAwQTAxMDExbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MGJcdUZFRkYxMTEwMDBuIik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBDMm4i
KTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBCNDVuIik7Cithc3NlcnRUaHJvd1N5
bnRheEVycm9yKCIwb1x1MDAwOTc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAw
MjA3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDBBMDE3NzduIik7Cithc3Nl
cnRUaHJvd1N5bnRheEVycm9yKCIwb1x1RkVGRjE3MzYxbiIpOworCithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIweFx1MDAwQzJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQjQ1
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwMDk3N24iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjB4XHUwMDIwNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhc
dTAwQTAxNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdUZFRkYxNzM2MW4iKTsK
KworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMlx1MDAwQ24iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjQ1XHUwMDBCbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNzdcdTAwMDluIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCI3NzdcdTAwMjBuIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIxNzc3XHUwMEEwbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMTczNjFcdUZF
RkZuIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328927</attachid>
            <date>2017-12-09 17:51:46 -0800</date>
            <delta_ts>2017-12-11 19:35:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>big-int-base.diff</filename>
            <type>text/plain</type>
            <size>123063</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MTIzNmVmYy4uN2NmNjg1YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNy0xMi0wOSAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1l
bnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qczogQWRkZWQuCisg
ICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJvd1N5bnRheEVycm9y
KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1vcGVyYXRpb25z
LWVycm9yLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRUaHJv
d1R5cGVFcnJvcik6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNl
LXRyYWlsaW5nLWxlYWRpbmcuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAg
KGFzc2VydFRocm93U3ludGF4RXJyb3IpOgorCiAyMDE3LTEyLTA1ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogZG9uJ3QgZWFnZXJseSBj
aGVja3N1bQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9iaWdJbnRUZXN0cy55YW1sIGIvSlNUZXN0cy9i
aWdJbnRUZXN0cy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZTQz
MGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwKQEAgLTAsMCAr
MSw0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWls
LmNvbT4uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFByb3Zp
ZGVkIHRvIHNpbXBsaWZ5IHJ1bm5pbmcgQmlnSW50IHRlc3RzLiBUbyBiZSByZW1vdmVkIG9uY2Ug
QmlnSW50CisjIGFyZSBubyBsb25nZXIgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLgorCistLS0KKy0g
cGF0aDogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVk
CisKKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcworICBjbWQ6IHJ1bkJpZ0ludEVu
YWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5q
cworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC1vcGVy
YXRpb25zLWVycm9yLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAorCistIHBhdGg6IHN0cmVz
cy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMKKyAgY21kOiBydW5CaWdJ
bnRFbmFibGVkCisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbC1s
aW5lLXRlcm1pbmF0b3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWwtbGluZS10
ZXJtaW5hdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZmI0OTkK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWwtbGluZS10
ZXJtaW5hdG9yLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1
bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCBhc3NlcnRpb24iKTsKK30KKwordmFyIGQ7CisKK2Fzc2VydChldmFsKCJkPTVuXHUwMDBB
IikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPTE1blx1MDAw
RCIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPTE5blx1
MjAyODsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD05
NW5cdTIwMjk7IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDBBNW4iKSA9PT0gNW4pOworYXNzZXJ0KGQgPT09IDVuKTsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDBEMTVuIikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2
YWwoImQ9XHUyMDI4MTluOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fzc2Vy
dChldmFsKCJkPVx1MjAyOTk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYmlnLWludC1saXRlcmFscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42YzQ4MDkwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
aXRlcmFscy5qcwpAQCAtMCwwICsxLDExMyBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVu
Y3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRUaHJvd1N5bnRheEVycm9yKGlu
cHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1dCk7CisgICAgICAgIGFzc2VydChm
YWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5
bnRheEVycm9yKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgMCBjb252ZXJzaW9ucworbGV0IG4gPSAw
bjsKK2Fzc2VydChuID09PSAwbik7CisKK24gPSAwMG47Cithc3NlcnQobiA9PT0gMG4pOworCisv
LyBCaW5hcnkgcmVwcmVzZW50YXRpb24KKworbiA9IDBiMTExMW47Cithc3NlcnQobiA9PT0gMTVu
KTsKKworbiA9IDBiMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworbiA9IDBiMDEwbjsKK2Fzc2Vy
dChuID09PSAybik7CisKK2xldCBiaW5hcnlTdHJpbmcgPSAiMGIxIjsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9ICIwIjsKKworbiA9IGV2YWwoYmlu
YXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2
MDc0MzE3NjgyMTE0NTZuKTsKKworbiA9IDBCMTExMW47Cithc3NlcnQobiA9PT0gMTVuKTsKKwor
biA9IDBCMTBuOworYXNzZXJ0KG4gPT09IDJuKTsKKworYmluYXJ5U3RyaW5nID0gIjBCMSI7Citm
b3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFyeVN0cmluZyArPSAiMCI7CisK
K24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQobiA9PT0gMzQwMjgyMzY2OTIw
OTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKKy8vIE9jdGFsIHJlcHJlc2VudGF0aW9u
CisKK24gPSAwbzduOworYXNzZXJ0KG4gPT09IDduKTsKKworbiA9IDBvMTBuOworYXNzZXJ0KG4g
PT09IDhuKTsKKworbiA9IDBvMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwbzAwMDIw
bjsKK2Fzc2VydChuID09PSAxNm4pOworCituID0gME83bjsKK2Fzc2VydChuID09PSA3bik7CisK
K24gPSAwTzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09
PSAxNm4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworLy8gSGV4YWRlY2lt
YWwgcmVwcmVzZW50YXRpb24KKworbiA9IDB4YW47Cithc3NlcnQobiA9PT0gMTBuKTsKKworbiA9
IDB4ZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHgwMDBmZm47Cithc3NlcnQobiA9
PT0gMjU1bik7CisKK24gPSAweGZhYmNuOworYXNzZXJ0KG4gPT09IDY0MTg4bik7CisKK2Fzc2Vy
dFRocm93U3ludGF4RXJyb3IoIjBiMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMDJu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjFubiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMG84OW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvMDhuIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIwbzdubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhnbiIp
OworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHgwZ24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJy
b3IoIjB4Zm5uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMDBubiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMWEwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwRTIwbiIp
OworCit0cnkgeworICAgIGV2YWwoIi0tMTBuIik7CisgICAgYXNzZXJ0KGZhbHNlKTsKK30gY2F0
Y2goZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpOworfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjkwZTQ3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanMKQEAgLTAsMCArMSw0NCBAQAorLy9AIHJ1
bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3Nl
cnRUaHJvd1R5cGVFcnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQp
OworICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNz
ZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpOworICAgIH0KK30KKworYXNzZXJ0KCJhIiArIDEw
MG4sICJhMTAwIik7Cithc3NlcnQoMTI4biArICJiYWJhIiwgIjEyOGJhYmEiKTsKKworYXNzZXJ0
VGhyb3dUeXBlRXJyb3IoIjEwbiArIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgKyAx
NW4iKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMjBuICsgMzAuNSIpOworYXNzZXJ0VGhyb3dU
eXBlRXJyb3IoIjQ0LjUgKyAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4g
LSAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2IC0gMTVuIik7Cithc3NlcnRUaHJvd1R5
cGVFcnJvcigiMTIwbiAtIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41IC0gMTEy
MDM0biIpOworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuICogMzAiKTsKK2Fzc2VydFRocm93
VHlwZUVycm9yKCIzNiAqIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gKiAzMC41
Iik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAqIDExMjAzNG4iKTsKKworYXNzZXJ0VGhy
b3dUeXBlRXJyb3IoIjEwbiAvIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgLyAxNW4i
KTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMjBuIC8gMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBl
RXJyb3IoIjQ0LjUgLyAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKiog
MzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIzNiAqKiAxNW4iKTsKK2Fzc2VydFRocm93VHlw
ZUVycm9yKCIxMjBuICoqIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41ICoqIDEx
MjAzNG4iKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpz
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU1M2NkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXR5cGUtb2YuanMKQEAgLTAsMCArMSwxMCBAQAorLy9AIHJ1bkJpZ0ludEVuYWJs
ZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCithc3NlcnQodHlwZW9mIDBuID09PSAiYmln
aW50Iik7Cithc3NlcnQodHlwZW9mIDFuICE9PSAib2JqZWN0Iik7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtd2hpdGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFhNzc2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFkaW5nLmpz
CkBAIC0wLDAgKzEsMTExIEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3Nl
cnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4RXJyb3IoaW5wdXQpIHsKKyAg
ICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3Ip
OworICAgIH0KK30KKwordmFyIGQ7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQzVuIikgPT09IDVu
KTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwOTE1biIpID09PSAx
NW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQjE5blx1MDAw
QjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAw
MEMxMTluOyIpID09PSAxMTluKTsKK2Fzc2VydChkID09PSAxMTluKTsKKworYXNzZXJ0KGV2YWwo
ImQ9XHUwMDIwOTVuOyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChl
dmFsKCJkPVx1MDBBMDUzbjsiKSA9PT0gNTNuKTsKK2Fzc2VydChkID09PSA1M24pOworCithc3Nl
cnQoZXZhbCgiZD1cdUZFRkYzOW47IikgPT09IDM5bik7Cithc3NlcnQoZCA9PT0gMzluKTsKKwor
YXNzZXJ0KGV2YWwoImQ9NW5cdTAwMEMiKSA9PT0gNW4pOworYXNzZXJ0KGQgPT09IDVuKTsKKwor
YXNzZXJ0KGV2YWwoImQ9MTVuXHUwMDA5IikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsK
KworYXNzZXJ0KGV2YWwoImQ9MTluXHUwMDBCOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5
bik7CisKK2Fzc2VydChldmFsKCJkPTExOW5cdTAwMEM7IikgPT09IDExOW4pOworYXNzZXJ0KGQg
PT09IDExOW4pOworCithc3NlcnQoZXZhbCgiZD05NW5cdTAwMjA7IikgPT09IDk1bik7Cithc3Nl
cnQoZCA9PT0gOTVuKTsKKworYXNzZXJ0KGV2YWwoImQ9NTNuXHUwMEEwOyIpID09PSA1M24pOwor
YXNzZXJ0KGQgPT09IDUzbik7CisKK2Fzc2VydChldmFsKCJkPTM5blx1RkVGRjsiKSA9PT0gMzlu
KTsKK2Fzc2VydChkID09PSAzOW4pOworCithc3NlcnQoZXZhbCgiXHUwMDBDXHUwMDBDZFx1MDAw
Q1x1MDAwQz1cdTAwMENcdTAwMEM1blx1MDAwQztcdTAwMEMiKSA9PT0gNW4pOworYXNzZXJ0KGQg
PT09IDVuKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwOVx1MDAwOWRcdTAwMDlcdTAwMDk9XHUwMDA5
XHUwMDA5MTVuXHUwMDA5OyIpID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2Vy
dChldmFsKCJcdTAwMEJcdTAwMEJkXHUwMDBCXHUwMDBCPVx1MDAwQlx1MDAwQjE5blx1MDAwQjsi
KSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiXHUwMDBDXHUw
MDBDZFx1MDAwQz1cdTAwMENcdTAwMEMxMTluOyIpID09PSAxMTluKTsKK2Fzc2VydChkID09PSAx
MTluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAyMGRcdTAwMjA9XHUwMDIwXHUwMDIwOTVuOyIpID09
PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJcdTAwQTBkXHUwMEEw
PVx1MDBBMFx1MDBBMDUzbjsiKSA9PT0gNTNuKTsKK2Fzc2VydChkID09PSA1M24pOworCithc3Nl
cnQoZXZhbCgiXHVGRUZGZFx1RkVGRj1cdUZFRkZcdUZFRkYzOW47IikgPT09IDM5bik7Cithc3Nl
cnQoZCA9PT0gMzluKTsKKworLy8gQXNzZXJ0IGVycm9ycworCithc3NlcnRUaHJvd1N5bnRheEVy
cm9yKCIwYlx1MDAwQzJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1MDAwQjExMDFu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1MDAwOTExMTExMW4iKTsKK2Fzc2VydFRo
cm93U3ludGF4RXJyb3IoIjBiXHUwMDIwMTAxMDFuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIwYlx1MDBBMDEwMTFuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1RkVGRjExMTAw
MG4iKTsKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwMEMybiIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMG9cdTAwMEI0NW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBv
XHUwMDA5NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAyMDc3N24iKTsKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMEEwMTc3N24iKTsKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjBvXHVGRUZGMTczNjFuIik7CisKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUw
MDBDMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUwMDBCNDVuIik7Cithc3NlcnRU
aHJvd1N5bnRheEVycm9yKCIweFx1MDAwOTc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MHhcdTAwMjA3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDBBMDE3NzduIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1RkVGRjE3MzYxbiIpOworCithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIyXHUwMDBDbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiNDVcdTAw
MEJuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCI3N1x1MDAwOW4iKTsKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjc3N1x1MDAyMG4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjE3Nzdc
dTAwQTBuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxNzM2MVx1RkVGRm4iKTsKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwN2Y3Yy4uYzA1OTI4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDE3LTEyLTA5ICBDYWlvIExpbWEgIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgaW1wbGVtZW50YXRpb24g
b2YgQmlnSW50IHByaW1pdGl2ZSBvbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gV2UgYXJlIGlu
dHJvZHVjaW5nIEJpZ0ludCBwcmltaXRpdmUgYW5kCisgICAgICAgIGltcGxlbWVudGluZyBpdCBv
biBKU0JpZ0ludCBhcyBhIHN1YmNsYXNzIG9mIEpTQ2VsbCB3aXRoIFtbQmlnSW50RGF0YV1dCisg
ICAgICAgIGZpZWxkIGltcGxlbWVudGVkIGNvbnRpZ3Vvc2x5IG9uIG1lbW9yeSBhcyBpbmxpbmUg
c3RvcmFnZSBvZiBKU0JpZ0ludCB0bworICAgICAgICB0YWtlIGFkdmFudGFnZXMgb24gcGVyZm9y
bWFuY2UgZHVlIHRvIGNhY2hlIGxvY2FsaXR5LiBUaGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24g
YWxsb3dzIDY0IG9yIDMyIGJpdHdpc2UgYXJpdGhtZXRpYyBvcGVyYXRpb25zLgorICAgICAgICBK
U0JpZ0ludCBhbHNvIGhhcyBtX3NpZ24gdG8gc3RvcmUgdGhlIHNpZ24gb2YgW1tCaWdJbnREYXRh
XV0gYW5kCisgICAgICAgIG1fbGVuZ3RoIHRoYXQga2VlcHMgdHJhY2sgb2YgQmlnSW50IGxlbmd0
aC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGZvbGxvd2luZyB0aGUgVjggb25lLiBb
W0JpZ0ludERhdGFdXSBpcyBtYW5pcHVsYXRlZAorICAgICAgICBieSBKU0JpZ0ludDo6c2V0RGln
aXQoaW5kZXgsIHZhbHVlKSBhbmQgSlNCaWdJbnQ6OmRpZ2l0KGluZGV4KSBvcGVyYXRpb25zLgor
ICAgICAgICBXZSBhbHNvIGhhdmUgc29tZSBvcGVyYXRpb25zIHRvIHN1cHBvcnQgYXJpdGhtZXRp
Y3Mgb3ZlciBkaWdpdHMuCisKKyAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIG5vdGljZSB0aGF0
IG9uIG91ciByZXByZXNlbnRhdGlvbiwKKyAgICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKClb
MF0gcmVwcmVzZW50cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgYW5kCisgICAgICAgIEpT
QmlnSW50OjpkYXRhU3RvcmFnZSgpW21fbGVuZ3RoIC0gMV0gcmVwcmVzZW50cyB0aGUgbW9zdCBz
aWdpbmlmaWNhbnQgZGlnaXQuCisKKyAgICAgICAgV2UgYXJlIGFsc28gaW50cm9kdWNpbmcgaW50
byB0aGlzIFBhdGNoIHRoZSBCaWdJbnQgbGl0ZXJhbHMgbGV4ZXIgYW5kCisgICAgICAgIHN5bnRh
eCBwYXJzaW5nIHN1cHBvcnQuIFRoZSBvcGVyYXRpb24gU3RyaWN0IEVxdWFscyBvbiBCaWdJbnRz
IGlzIGFsc28gYmVpbmcKKyAgICAgICAgaW1wbGVtZW50ZWQgdG8gZW5hYmxlIHRlc3RzLgorICAg
ICAgICBUaGVzZSBmZWF0dXJlcyBhcmUgYmVpbmcgaW1wbGVtZW50ZWQgYmVoaW5kIGEgcnVudGlt
ZSBmbGFnZSAiLS11c2VCaWdJbnQiIGFuZAorICAgICAgICBhcmUgZGlzYWJsZWQgYnkgZGVmYXVs
dC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3ApOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6QmlnSW50RW50cnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJpZ0ludEVudHJ5SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpqc1ZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVCaWdJbnQpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPFQ+OjpwYXJzZUJpbmFyeSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJz
ZU9jdGFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlRGVjaW1hbCk6CisgICAgICAg
IChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VIZXgp
OiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAqIHBhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OkJpZ0ludE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9k
ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjp2YWx1ZSk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9r
ZW5zLmg6CisgICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVz
dWx0VHlwZTo6ZGVmaW5pdGVseUlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6bWlnaHRCZUJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6Omlz
Tm90QmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6YWRkUmVzdWx0VHlw
ZSk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmJpZ0ludFR5cGUpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjpmb3JBZGQpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpmb3JMb2dp
Y2FsT3ApOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6SlNCaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6Y3JlYXRlWmVybyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5n
T25lRGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aXNaZXJv
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZCk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpkaWdpdEFkZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdp
dFN1Yik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdE11bCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50OjpkaWdpdFBvdyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmVxdWFsVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
YWJzb2x1dGVEaXZTbWFsbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjYWxjdWxhdGVNYXhp
bXVtQ2hhcmFjdGVyc1JlcXVpcmVkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5n
R2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpyaWdodFRyaW0pOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWxsb2NhdGVGb3IpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXN0
aW1hdGVkU2l6ZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b051bWJlciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpz
ZXRTaWduKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnNpZ24gY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Omxlbmd0
aCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpwYXJzZUludCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpvZmZzZXRPZkRhdGEpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGF0
YVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6c2V0RGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2l6ZUZvcik6
CisgICAgICAgIChKU0M6OmFzQmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvUHJpbWl0
aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAg
ICAgICogcnVudGltZS9NYXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAg
ICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAg
ICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
Lmg6CisgICAgICAgICogcnVudGltZS9QYXJzZUludC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21h
bGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmluZyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlw
ZW9mVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1
bnRpbWUvVHlwZW9mVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0xMi0wNSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEluZmVycmVkVHlwZSBzaG91
bGQgbm90IHVzZSBVbmNvbmRpdGlvbmFsRmluYWxpemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGMwOTQ2M2EuLmMxYmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04MDUsNyArODA1LDcgQEAKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVj
dHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJGMzZGNzI0
NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9y
aWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07Ci0JCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJz
ZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdD
NzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87IH07CisJCTM3QzczOEQyMUVE
QjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUy
NzcxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVy
X2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNf
d3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRl
X2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzQxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc5MUQy
Q0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc1MUQyQ0Y2
QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE0Miw2ICsxMTQy
LDcgQEAKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4
MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyog
UHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2ODkyMUMyMUY5QzBDQjcw
MDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5RUJDQjcwRThD
NkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
REQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIg
LyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZB
REQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY3OCw2ICszNjc5LDgg
QEAKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
dmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzExRjlDMENC
NzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQmlnSW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMzMUY5QzI5
NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0JpZ0ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2OUVC
Q0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc3VsdFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZBMDU0NDYxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5h
c20uYXNtOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5hc207IHBhdGggPSBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZBMDU0
NDcxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFz
bS5hc207IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDk0LDkgKzY0OTcsOSBAQAogCQkJCUUxNzg2MzNGMEQ5QkVD
MDAwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8sCiAJCQkJRTM1RTAzNUQxQjdB
QjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8sCiAJ
CQkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5oICovLAotCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAq
LywKIAkJCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJ
CUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFG
MkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4
MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5
QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAogCQkJCUExQjlFMjMzMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLApAQCAtNjU0NCw2ICs2NTQ3LDggQEAK
IAkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJ
CQkJOEJDMDY0ODcxRTFBNTgzRjAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5j
cHAgKi8sCiAJCQkJOEJDMDY0ODgxRTFBNTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oICovLAorCQkJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5j
cHAgKi8sCisJCQkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJ
CQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJ
CQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJ
CTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC02NTk1LDkg
KzY2MDAsOSBAQAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmggKi8sCiAJCQkJNzlCODE5OTIxREQyNUNGNTAwRERDNzE0IC8q
IEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oICovLAotCQkJCTBGMkI2NkM5MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0ludDhBcnJheS5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0ludDE2QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQz
MkFycmF5LmggKi8sCisJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5
LmggKi8sCiAJCQkJRTMzRjUwN0UxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
LmNwcCAqLywKIAkJCQlFMzNGNTA3RjFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2UuaCAqLywKIAkJCQlFMzNGNTA3NjFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC02Njg2LDEwICs2NjkxLDEwIEBACiAJCQkJNTNGMjU2
RTExQjg3RTI4MDAwQjRCNzY4IC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwICovLAog
CQkJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmggKi8sCiAJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAqLywK
LQkJCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5LmggKi8sCi0JCQkJ
MEYyQjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJ
CQkwRjJCNjZENDE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oICovLAogCQkJCTBG
MkI2NkQ1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8sCisJCQkJMEYyQjY2
RDIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhBcnJheS5oICovLAorCQkJCTBGMkI2NkQzMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJQTdDQTNBRTEx
N0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8sCiAJCQkJQTdDQTNBRTIxN0RBNDFB
RTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovLAogCQkJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2
OSAvKiBKU1dlYWtTZXQuY3BwICovLApAQCAtNjkwMywxMSArNjkwOCwxMSBAQAogCQkJCTBGMkQ0
REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLywKIAkJCQkwRjJENERF
MzE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5jcHAgKi8sCiAJCQkJMEYyRDRERTQxOTgzMkQ5
MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLywKLQkJCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQg
LyogVWludDhBcnJheS5oICovLAotCQkJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
MTZBcnJheS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRo
RnJhY3Rpb24uaCAqLywKIAkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJy
YXkuaCAqLywKKwkJCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICov
LAorCQkJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICov
LAogCQkJCTBGRTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovLAogCQkJ
CTBGRTA1MDI0MUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLywKIAkJCQlFMThFM0E1
NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovLApAQCAtODAzOSw3ICs4MDQ0LDYgQEAKIAkJ
CQkwRkVDODU4ODFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1Q0Y5ODkxRTlFRDY1MjAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1OEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNrU2xv
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0MTU0NUIxRkQyMEIyMjAwMUI1OEY2IC8qIENvbnN0
cmFpbnRDb25jdXJyZW5jeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkJEOUUxQzVGRjQwNTAw
MjNFRjIzIC8qIEFpclN0YWNrU2xvdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NThF
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NThG
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
NTAsNyArODA1NCw5IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlk
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlG
OTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0Ux
MUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5NjMwM0ExRDQxOTJDODAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0
b3JGb3JNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA5MTFDMENENzBDMDAwNTJCRkEg
LyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFj
a0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTgsMTQgKzgwNjQsMTIgQEAKIAkJCQk1
MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkUwNTAxNDFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZCRjkyQkExRkQ3NzAwNDAwQUMyOEE4IC8qIEluZmVycmVkU3RydWN0dXJlV2F0
Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlBMjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8q
IEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFB
MjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNC
MkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYz
NTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtODExNSwxMCArODExOSw4IEBACiAJCQkJMEYzMzhERkExQkU5
NkFBODAwMTNDODhGIC8qIEIzQ0NhbGxWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZD
RkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIzQ0ZHLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUw
NjFCREFDREFDMDA4MEZGNzQgLyogQjNDaGVja1NwZWNpYWwuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZFMkIwQjczMUZEOUVGNzAwMDc1REE1RiAvKiBKU0NQb2lzb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NTA4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NTBBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEZEQ0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUwQzFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2
aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwQzFCRjAyNzZDMDAxM0M4OEYgLyogQjND
b21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkxOUI3ODAxRTAzNTU5QzAwNUJFRUQ4
IC8qIEIzQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTcwLDcgKzgxNzIsNiBAQAogCQkJ
CTBGRUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVDODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBp
biBIZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQb2lzb25l
ZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUwM0RFRDAw
QUQ5NDNBIC8qIEIzUHVyZUNTRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcxQzE2MjY3
ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04
MjQzLDcgKzgyNDQsNiBAQAogCQkJCTY1MTRGMjE5MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29k
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRl
Y29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1
IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0RDhDNzUxRkM3QTk3RDAwMUQz
MkFDIC8qIENvbnN0cmFpbnRQYXJhbGxlbGlzbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCODM5
MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVDM0M2MDFGMzc5RjUzMDBGNTlCNkMgLyogQ2FnZWRCYXJyaWVyUHRyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNFRDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtODI4OCw2ICs4Mjg4LDcgQEAKIAkJCQk2NTUzQTMzMjE3QTFGMUVFMDA4Q0Y2
RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
ODJFMzkxNDFBQjE0RDAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1
YnNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyog
Q29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJE
IC8qIENvbXBsZXhHZXRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREIyQ0VBMTc0ODk2
QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SlNMb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTgyOTks
NiArODMwMCw4IEBACiAJCQkJQTU1NzE0QkUxQ0Q4MDQ5RjAwMDREMkM2IC8qIENvbnNvbGVPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDc0MTg5QjAzOEMwMDYzMzIzMSAvKiBDb25z
b2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAv
KiBDb25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDE1NDVCMUZEMjBCMjIwMDFC
NThGNiAvKiBDb25zdHJhaW50Q29uY3VycmVuY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNEQ4
Qzc1MUZDN0E5N0QwMDFEMzJBQyAvKiBDb25zdHJhaW50UGFyYWxsZWxpc20uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0RGMTM0MUUyOTcwRDcwMDk1OTUxQiAvKiBDb25zdHJhaW50Vm9sYXRpbGl0
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0
cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0Y2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBDb25zdHJ1Y3REYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTgzMzcsNyArODM0MCw2IEBA
CiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50
ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAv
KiBERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2
NDUzMTgxRkQyNDZBNzAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MDIxQjYxOEFBRjAwQzgwRTFFIC8qIERG
R0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxOEQzRDAxQjU1QTZFMDAwMkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NTQ3LDcgKzg1NDksNiBAQAogCQkJCUE1NDk4
MjA0MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9y
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4
Y2VwdGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhG
MDFEMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtODYzNCw3
ICs4NjM1LDYgQEAKIAkJCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBB
N0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkFGMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGQkY5MkI5MUZENzZGRkYwMEFDMjhBOCAvKiBJbmZlcnJl
ZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2
IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzE1MzExRUIyOEJFRTAwQTE2
NDVEIC8qIEdDUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjAxOEJGRkJCQjAw
NTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtODY2NSw3ICs4
NjY1LDYgQEAKIAkJCQlDNDcwM0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5
NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgx
RTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MTkxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLApA
QCAtODY5Miw2ICs4NjkxLDcgQEAKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBD
ZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3MEE0OTFENTQzQTkzMDA2RTcyMzIgLyogSGVh
cENlbGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEyMjFGQUU4NThDMDA2RjM5
MDEgLyogSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDQUVGRjFFQzREQTg4
MDA5NzBEMTIgLyogSGVhcEZpbmFsaXplckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NzEyLDYgKzg3MTIsOCBAQAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdC
MiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlC
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
Mzg2QTc5MURENjk4OUMwMDg2NTJDNCAvKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkJGOTJCOTFGRDc2RkZGMDBBQzI4QTggLyogSW5mZXJyZWRTdHJ1Y3R1
cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkY5MkJBMUZENzcwMDQwMEFDMjhBOCAvKiBJbmZl
cnJlZFN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEE3NTIzMUI5
NEJGQTkwMDExMDY2MCAvKiBJbmZlcnJlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5
MjEyMUI5NEQ0REYwMDcxREQ2NiAvKiBJbmZlcnJlZFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFk
ZXJzICovLApAQCAtODc3Myw2ICs4Nzc1LDggQEAKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMx
NDYgLyogSW50bE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4
RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU0
MUU1M0JEMjkwMDIxM0Y2NCAvKiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkRDRTEzMjFGQjExREE0MDA2RjM5MDEgLyogSXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8q
IElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QjlGNkQ1NjFENTkxMkZBMDAxQzcz
OUYgLyogSXRlcmF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1QjgxQUU3MTZD
QTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNE
NEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CkBAIC04ODE0LDEzICs4ODE4LDEzIEBACiAJCQkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTcx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NkU5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEY5REFBMDkxRkQxQzNDRjAwNzlDNUIyIC8qIE1hcmtpbmdDb25z
dHJhaW50U29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlG
QjhCQTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVCNzBDRkRFMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCThCQzA2NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAv
KiBKU0Jhc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAx
MTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUw
MDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDFBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLApAQCAtODg0Miw2ICs4ODQ2LDkgQEAKIAkJCQlBNUVBNzBFRTE5RjVCNUM0
MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDhDRDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0
UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUyQjBCNzMxRkQ5RUY3MDAwNzVEQTVG
IC8qIEpTQ1BvaXNvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUyQjBCNjkxRkQyMjdFMDAwNzVE
QTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTJCMEI2OTFGRDIy
N0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtODkwMiw3ICs4OTA5LDYgQEAKIAkJCQlF
M0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDk3MjI3NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZG
MzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzOURB
NEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMzRThEMUQxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04OTMyLDEzICs4OTM4LDEzIEBACiAJCQkJQTc5MERENzAxODJGNDk5
NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJC
RTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY3REYxM0YxRTJBRkM0RDAwOTU5NTFCIC8qIEpTU3RyaW5nSGVhcENlbGxUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJp
bmdJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVG
IC8qIEpTU3RyaW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4
RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRjdERjEzRjFFMkFGQzREMDA5NTk1MUIgLyogSlNTdHJpbmdIZWFwQ2VsbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3
MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZF
QTFGNzVBRDZBMDAwQkNBQUYgLyogSlNUb1dhc20uaCBpbiBIZWFkZXJzICovLApAQCAtODk2Myw3
ICs4OTY5LDYgQEAKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0
TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNC
MDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBCMjg2QjFFQjhFNkNGMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY0RDhDNzQxRkM3QTk3QTAwMUQzMkFDIC8qIFZpc2l0Q291bnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUQ1QzM2RUIxRjc1QUQ3MzAwMEJDQUFGIC8qIEpTV2ViQXNzZW1ibHku
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEOUU4NTJGMUU4QTBDN0MwMDhERTM5RSAvKiBKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTkwMzksNyArOTA0NCw5IEBACiAJ
CQkJMEY3REYxMzUxRTI5NzBEQzAwOTU5NTFCIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2NjBFMzgxRTA1MTdCQjAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJh
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2MEUzQTFFMDUxN0MxMDAzMTQ2MkMgLyogTWFy
a2luZ0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOURBQTA5MUZEMUMzQ0Yw
MDc5QzVCMiAvKiBNYXJraW5nQ29uc3RyYWludFNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY2NDUzMTgxRkQyNDZBNzAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hS
ZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNDBBNDg1MUE5MDUxQUYwMEQ3M0NDQSAvKiBN
YXRoQ29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAg
LyogTWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDgzLDcgKzkwOTAsNiBAQAogCQkJ
CUUzQzI5NUREMUVEMkNCREEwMEQzMDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEExQjYxOEI2NjAwQzgwRTFF
IC8qIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzRTQw
QzFCNjE4QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29u
c3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDYwRTE2RjVDRDAwQjM0NDYwIC8q
IE9iamVjdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNEE4RjcwRTU1NTc3NTAw
MzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5QjBF
RDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTkwOTEsNiArOTA5
Nyw3IEBACiAJCQkJQTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFy
YWxsZWxTb3VyY2VBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M3MzhEMjFFREI1NkU0
MDAzRjJCMEIgLyogUGFyc2VJbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDRCMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDUyQzM1MEZCNzky
MTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjEwLDYgKzky
MTcsNyBAQAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hp
Y2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5
MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjREOEM3ODFG
Q0EzQ0ZBMDAxRDMyQUMgLyogU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNs
b3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjE2MEZFNzE1RjdFOTVFMDA5NDJERkMg
LyogU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTEsNyArOTI5OSw2
IEBACiAJCQkJMEY5NTJBQkQxQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eUFkYXB0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwODE3QjZCNUFCMDBBN0FFM0Yg
LyogVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOURBQTBBMUZE
MUMzRDMwMDc5QzVCMiAvKiBQYXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNEI5NERDMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY3MDkxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTMwMSw3ICs5MzA4LDYgQEAKIAkJCQkwRkZCNkMz
OTFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJD
OTUyQjcxOUEyODk4NTAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEZEQ0UxMjIxRkFFODU4QzAwNkYzOTAxIC8qIEhlYXBDZWxsVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5IC8qIFR5cGVTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQxMTU4RUJFOEQwMDRDQjlGRiAvKiB1ZGlzODZfZGVj
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMzIsNiArOTMzOCw3IEBACiAJCQkJMEY2QzczNTEx
QUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMgLyogVmlzaXRDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk1MkFBMTFERjc4NjA5MDBFMDZGQkQgLyogVmlz
aXRSYWNlS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyMDBFMTZGNUNEMDBCMzQ0NjAg
LyogVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBW
TUVudHJ5UmVjb3JkLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCA2MDRjMzk5Li5iMWQ2YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03
NzIsNiArNzcyLDcgQEAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogcnVu
dGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmlnSW50LmNwcAog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50
aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA4NTAyOTQ0Li4yZDIxMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1
ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VE1hdGhJQy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDI1YjY0YmQuLjQxMzYzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNzg0LDYg
KzE3ODUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9w
KE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QKICAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoU3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRz
dDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAm
JiB2YWx1ZSA9PSAiYmlnaW50IikgeworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsK
KyAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsKKyAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZHN0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJvYmplY3Qi
KSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kVW5hcnlPcCgpOwogICAgICAgICAgICAgICAgIGVt
aXRPcGNvZGUob3BfaXNfb2JqZWN0X29yX251bGwpOwpAQCAtMzEyMSw2ICszMTMwLDI1IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRz
dCkKICAgICByZXR1cm4gZHN0OwogfQogCitKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRC
aWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50OF90IHJhZGl4
KQoreworICAgIEJpZ0ludE1hcEVudHJ5IGVudHJ5S2V5ID0gQmlnSW50TWFwRW50cnkoaWRlbnRp
Zmllci5pbXBsKCksIHJhZGl4KTsKKyAgICBhdXRvIGl0ID0gbV9iaWdJbnRNYXAuZmluZChlbnRy
eUtleSk7CisgICAgaWYgKGl0ICE9IG1fYmlnSW50TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4g
aXQtPnZhbHVlOworICAgIAorICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50Ojpw
YXJzZUludChudWxscHRyLCAqdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgpOworICAg
IC8vIEZJWE1FOiBbRVNOZXh0XSBFbmFibGVzIGEgd2F5IHRvIHRocm93IGFuIGVycm9yIG9uIEJ5
dGVDb2RlR2VuZXJhdG9yIHN0ZXAKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMTM5CisgICAgUkVMRUFTRV9BU1NFUlQoYmlnSW50SW5NYXApOworICAg
IGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworCisgICAgYXV0byBhZGRlZEVudHJ5ID0g
bV9iaWdJbnRNYXAuYWRkKGVudHJ5S2V5LCBiaWdJbnRJbk1hcCk7CisgICAgQVNTRVJUKGFkZGVk
RW50cnkuaXNOZXdFbnRyeSk7CisKKyAgICByZXR1cm4gYWRkZWRFbnRyeS5pdGVyYXRvci0+dmFs
dWU7Cit9CisKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBKU1N0cmluZyomIHN0cmluZ0lu
TWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk1MzRiYi4uMjBhODJlMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC00Niw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMDAsMTAg
KzEwMDIsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVDYWxsZWVT
YXZlU3BhY2UoKTsKICAgICAgICAgdm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+IE51bWJlck1hcDsKLSAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVy
UmVwSGFzaD4gSWRlbnRpZmllclN0cmluZ01hcDsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJl
ZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+IFRlbXBsYXRlUmVnaXN0cnlLZXlN
YXA7Ci0gICAgICAgIAorICAgICAgICB1c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6cGFpcjxV
bmlxdWVkU3RyaW5nSW1wbCosIHVpbnQ4X3Q+OworICAgICAgICBzdHJ1Y3QgQmlnSW50RW50cnlI
YXNoIHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEJpZ0ludE1hcEVudHJ5IGtl
eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5LmZpcnN0LT5leGlz
dGluZ1N5bWJvbEF3YXJlSGFzaCgpICsgV1RGOjppbnRIYXNoKGtleS5zZWNvbmQpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChCaWdJ
bnRNYXBFbnRyeSBhLCBCaWdJbnRNYXBFbnRyeSBiKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhLmZpcnN0ID09IGIuZmlyc3QgJiYgYS5zZWNvbmQgPT0gYi5zZWNvbmQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKwor
ICAgICAgICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CisgICAg
ICAgIHVzaW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBs
KiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47CisgICAgICAgIHVzaW5nIElkZW50aWZp
ZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCosIEJpZ0ludEVu
dHJ5SGFzaD47CisgICAgICAgIHVzaW5nIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgPSBIYXNoTWFw
PFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+OworCiAgICAgICAgIC8vIEhl
bHBlciBmb3IgZW1pdENhbGwoKSBhbmQgZW1pdENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1
c2UgdGhlIHNldCBvZgogICAgICAgICAvLyBleHBlY3RlZCBmdW5jdGlvbnMgaGF2ZSBpZGVudGlj
YWwgYmVoYXZpb3IgZm9yIGJvdGggY2FsbCBhbmQgY29uc3RydWN0CiAgICAgICAgIC8vIChpLmUu
ICJPYmplY3QoKSIgaXMgaWRlbnRpY2FsIHRvICJuZXcgT2JqZWN0KCkiKS4KQEAgLTEwODYsNiAr
MTEwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmlu
ZyogYWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU1ZhbHVl
IGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFJlZjxUZW1w
bGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKIAogICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlv
biwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2lu
c3RydWN0aW9uczsgfQpAQCAtMTE4NSw2ICsxMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiwgdW5z
aWduZWQsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCwgRW5jb2RlZEpTVmFs
dWVXaXRoUmVwcmVzZW50YXRpb25IYXNoVHJhaXRzPiBKU1ZhbHVlTWFwOwogICAgICAgICBKU1Zh
bHVlTWFwIG1fanNWYWx1ZU1hcDsKICAgICAgICAgSWRlbnRpZmllclN0cmluZ01hcCBtX3N0cmlu
Z01hcDsKKyAgICAgICAgSWRlbnRpZmllckJpZ0ludE1hcCBtX2JpZ0ludE1hcDsKICAgICAgICAg
VGVtcGxhdGVSZWdpc3RyeUtleU1hcCBtX3RlbXBsYXRlUmVnaXN0cnlLZXlNYXA7CiAKICAgICAg
ICAgU3RhdGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgeyAmbV9p
bnN0cnVjdGlvbnMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyMzVhYTZiLi43ZjNkYzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0x
MjIsNiArMTIyLDExIEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yKSBjb25zdAogICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5nQ29u
c3RhbnQobV92YWx1ZSk7CiB9CiAKK0pTVmFsdWUgQmlnSW50Tm9kZTo6anNWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAoreworICAgIHJldHVybiBnZW5lcmF0b3IuYWRk
QmlnSW50Q29uc3RhbnQobV92YWx1ZSwgbV9yYWRpeCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBmNjhlYWRmLi42NWFiOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNzcsNyArMTc3LDcg
QEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlz
U3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMg
PSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBl
ID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmpl
Y3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJv
bFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUo
KSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBl
KCkgPT0gQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggMzVlODRhNS4uZGMyOTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgdW5zaWdu
ZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMs
IHVpbnQzMl90IGZpcnN0VmEKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgog
ICAgIGNhc2UgU3ltYm9sVHlwZToKKyAgICBjYXNlIEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFy
YW1ldGVyRXJyb3IoY2FsbEZyYW1lLCAgYXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YWQ4NjlmMi4uNGNmOGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZN
JiB2bSkKICAgICBBU1NFUlQoU3RyaW5nSW1wbDo6c19oYXNoRmxhZzhCaXRCdWZmZXIgPT0gOCk7
CiAKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDEyMDAwMDsKKyAgICAgICAgdWlu
dDMyX3QgYml0cyA9IDB4NDgwMDAwOwogICAgICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAg
ICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNT
YXdJbnQzMigpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIHVp
bnQzMl90IGJpdHMgPSAweDIyMDAwMDsKKyAgICAgICAgdWludDMyX3QgYml0cyA9IDB4ODgwMDAw
OwogICAgICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAgIEFyaXRoUHJvZmlsZSBhcml0
aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAg
QVNTRVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyNDAw
MDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDkwMDAwMDsKICAgICAgICAgVU5VU0VEX1BB
UkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBh
cml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6
OmZyb21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0K
ICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDE0MDAwMDsKKyAgICAgICAgdWludDMy
X3QgYml0cyA9IDB4NTAwMDAwOwogICAgICAgICBVTlVTRURfUEFSQU0oYml0cyk7CiAgICAgICAg
IEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJ
bnQzMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGY0ZDM2MDAuLjRlMmI4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1MywxMiAr
MjUzLDEyIEBAIGNvbnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAog
Y29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJrZXIgPSBjb25zdGV4cHIgU2hhZG93Q2hpY2tlbjo6
UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAogIyBBcml0aFByb2ZpbGUgZGF0YQotY29uc3QgQXJp
dGhQcm9maWxlSW50ID0gMHgxMDAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IDB4MTIw
MDAwCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSAweDIwMDAwMAotY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVySW50ID0gMHgyMjAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9
IDB4MjQwMDAwCi1jb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSAweDE0MDAwMAorY29uc3Qg
QXJpdGhQcm9maWxlSW50ID0gMHg0MDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IDB4
NDgwMDAwCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSAweDgwMDAwMAorY29uc3QgQXJpdGhQ
cm9maWxlTnVtYmVySW50ID0gMHg4ODAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJl
ciA9IDB4OTAwMDAwCitjb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSAweDUwMDAwMAogCiAj
IFNvbWUgcmVnaXN0ZXIgY29udmVudGlvbnMuCiBpZiBKU1ZBTFVFNjQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYWI5NTYxMy4uM2FkMzg4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIzMiw2ICsyMzIsMTIg
QEAgcHVibGljOgogICAgICAgICBpbmNDb25zdGFudHMoKTsKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KKyAgICAKKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludCwgdWludDhfdCByYWRpeCkKKyAgICB7Cisg
ICAgICAgIGluY0NvbnN0YW50cygpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBCaWdJbnROb2RlKGxvY2F0aW9uLCAqYmlnSW50LCByYWRpeCk7CisgICAgfQogCiAgICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAppbmRleCA2ZWU2YzVkLi43NDAzY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTE1MDAsNyArMTUwMSw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJz
ZVJlc3VsdCBMZXhlcjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJz
ZUhleChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJsZSwg
Y29uc3QgSWRlbnRpZmllcio+IExleGVyPFQ+OjpwYXJzZUhleCgpCiB7CiAgICAgLy8gT3B0aW1p
emF0aW9uOiBtb3N0IGhleGFkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAgIHVp
bnQzMl90IGhleFZhbHVlID0gMDsKQEAgLTE1MTIsMTAgKzE1MTMsOCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0t
bWF4aW11bURpZ2l0czsKICAgICB9IHdoaWxlIChpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSAm
JiBtYXhpbXVtRGlnaXRzID49IDApOwogCi0gICAgaWYgKG1heGltdW1EaWdpdHMgPj0gMCkgewot
ICAgICAgICByZXR1cm5WYWx1ZSA9IGhleFZhbHVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChMSUtFTFkobWF4aW11bURpZ2l0cyA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQor
ICAgICAgICByZXR1cm4gaGV4VmFsdWU7CiAKICAgICAvLyBObyBtb3JlIHBsYWNlIGluIHRoZSBo
ZXhWYWx1ZSBidWZmZXIuCiAgICAgLy8gVGhlIHZhbHVlcyBhcmUgc2hpZnRlZCBvdXQgYW5kIHBs
YWNlZCBpbnRvIHRoZSBtX2J1ZmZlcjggdmVjdG9yLgpAQCAtMTUzMywxMSArMTUzMiwxNCBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUp
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92
ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDE2KTsKKyAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAg
ICAgIHJldHVybiBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6
ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgp
LCBtX2J1ZmZlcjguc2l6ZSgpLCAxNik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVl
KQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVu
dGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpCiB7CiAgICAgLy8gT3B0aW1pemF0aW9u
OiBtb3N0IGJpbmFyeSB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBiaW5h
cnlWYWx1ZSA9IDA7CkBAIC0xNTU0LDEwICsxNTU2LDggQEAgQUxXQVlTX0lOTElORSBib29sIExl
eGVyPFQ+OjpwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRpZ2l0
OwogICAgIH0gd2hpbGUgKGlzQVNDSUlCaW5hcnlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49
IDApOwogCi0gICAgaWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKSB7
Ci0gICAgICAgIHJldHVyblZhbHVlID0gYmluYXJ5VmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdp
dCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihiaW5hcnlWYWx1ZSk7CiAKICAg
ICBmb3IgKGludCBpID0gbWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAg
ICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNTY3LDE3ICsxNTY3LDE3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKICAgICAg
ICAgc2hpZnQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24n
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNvbnN0IElk
ZW50aWZpZXIqPj4obWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSkpOwogCi0gICAgcmV0dXJuVmFsdWUgPSBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5k
YXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDIpOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVy
Kj4+KHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwg
MikpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+Ojpw
YXJzZU9jdGFsKCkKIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3Qgb2N0YWwgdmFsdWVzIGZp
dCBpbnRvIDQgYnl0ZXMuCiAgICAgdWludDMyX3Qgb2N0YWxWYWx1ZSA9IDA7CkBAIC0xNTk0LDEw
ICsxNTk0LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9jdGFsKGRvdWJs
ZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIC0tZGlnaXQ7CiAgICAgfSB3aGlsZSAoaXNBU0NJSU9j
dGFsRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURp
Z2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IG9j
dGFsVmFsdWU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoTElLRUxZKCFp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwICYmIG1fY3VycmVudCAhPSAnbicp
KQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRl
bnRpZmllcio+PihvY3RhbFZhbHVlKTsKKwogCiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdp
dHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsKQEAg
LTE2MDcsMTcgKzE2MDYsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU9j
dGFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAg
aWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+KG1ha2VJZGVudGlmaWVy
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpKTsKIAotICAgIHJldHVyblZhbHVl
ID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCA4
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxW
YXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PihwYXJzZUludE92ZXJmbG93KG1fYnVm
ZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3VibGUm
IHJldHVyblZhbHVlKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91Ymxl
LCBjb25zdCBJZGVudGlmaWVyKj4+IExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKQogewogICAgIC8v
IE9wdGltaXphdGlvbjogbW9zdCBkZWNpbWFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAg
IHVpbnQzMl90IGRlY2ltYWxWYWx1ZSA9IDA7CkBAIC0xNjM4LDEwICsxNjM3LDggQEAgQUxXQVlT
X0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSkK
ICAgICAgICAgICAgIC0tZGlnaXQ7CiAgICAgICAgIH0gd2hpbGUgKGlzQVNDSUlEaWdpdChtX2N1
cnJlbnQpICYmIGRpZ2l0ID49IDApOwogCi0gICAgICAgIGlmIChkaWdpdCA+PSAwICYmIG1fY3Vy
cmVudCAhPSAnLicgJiYgKG1fY3VycmVudCB8IDB4MjApICE9ICdlJykgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBkZWNpbWFsVmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmICFp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSAmJiBtX2N1cnJlbnQgIT0g
J24nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIGNv
bnN0IElkZW50aWZpZXIqPj4oZGVjaW1hbFZhbHVlKTsKIAogICAgICAgICBmb3IgKGludCBpID0g
bWF4aW11bURpZ2l0cyAtIDE7IGkgPiBkaWdpdDsgLS1pKQogICAgICAgICAgICAgcmVjb3JkOChk
aWdpdHNbaV0pOwpAQCAtMTY1MSw4ICsxNjQ4LDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgIHJlY29yZDgo
bV9jdXJyZW50KTsKICAgICAgICAgc2hpZnQoKTsKICAgICB9CisgICAgCisgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+Piht
YWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSk7CiAKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CkBAIC0yMTAwLDEwICsyMTAwLDMwIEBAIHN0YXJ0OgogICAgICAgICAgICAg
dG9rZW4gPSBET1Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBnb3Rv
IGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7CisgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNp
bWFsUG9pbnQoKTsKKyAgICAgICAgdG9rZW4gPSBET1VCTEU7CisgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSkgeworICAgICAgICAgICAgaWYgKCFw
YXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4
cG9uZW50IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVO
VEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElU
RVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAg
IHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICBpZiAodG9rZW4gPT0gSU5U
RUdFUikKKyAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0
YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxp
dGVyYWwiKTsKKyAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1F
UklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsK
KyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZm
ZXI4LnNocmluaygwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgog
ICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICd4Jykg
eworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICd4Jykp
IHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGhleGFkZWNpbWFs
IGRpZ2l0cyBhZnRlciAnMHgnIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFU
RURfSEVYX05VTUJFUl9FUlJPUlRPSzsKQEAgLTIxMTMsMTcgKzIxMzMsMjcgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhlICd4JyBwcmVmaXguCiAgICAgICAgICAgICBzaGlm
dCgpOwogCi0gICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAg
ICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZUhleCgpOworICAgICAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihwYXJzZU51bWJlclJlc3VsdCkp
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJs
ZT4ocGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIq
PihwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9
IDE2OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJZGVudFN0YXJ0KG1fY3Vy
cmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVjaW1hbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIik7
CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfSEVYX05VTUJFUl9FUlJPUlRP
SzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBCSUdJTlQpKQor
ICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4
MjApID09ICdiJykgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1
cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUJpbmFyeURpZ2l0KHBlZWso
MSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
Ik5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyIpOwogICAgICAgICAgICAgICAgIHRva2VuID0g
VU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTMzLDE4ICsyMTYzLDI4
IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAnYicgcHJlZml4LgogICAg
ICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VCaW5hcnkodG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VC
aW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlTnVtYmVyUmVzdWx0ID8gV1RGOjpnZXQ8
ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpIDogMDsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRT
dGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50aWZp
ZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVS
X0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJ
R0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRv
a2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmlu
aygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtX2N1
cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlPY3RhbERp
Z2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRlciAnMG8nIik7CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjE1NCwxMyAr
MjE5NCwyMyBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHByZWZp
eC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0g
cGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VOdW1iZXJSZXN1bHQgPyBXVEY6
OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkgOiAwOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CisgICAgICAgICAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNv
bnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+cmFkaXggPSA4OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVu
dGlmaWVyIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVN
QkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9
IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlr
ZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNo
cmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTcyLDM0ICsyMjIy
LDQ2IEBAIHN0YXJ0OgogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAg
aWYgKHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGF1
dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFsKCk7CisgICAgICAgICAgICBpZiAocGFy
c2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51
bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0g
V1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAgICAgIHRv
a2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIENoYXJhY3Rlck51bWJlcjoKICAgICAgICAgaWYgKExJS0VMWSh0b2tlbiAhPSBJTlRFR0VS
ICYmIHRva2VuICE9IERPVUJMRSkpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VEZWNpbWFsKHRv
a2VuRGF0YS0+ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBJTlRFR0VS
OwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICBh
dXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VEZWNpbWFsKCk7CisgICAgICAgICAgICBpZiAo
cGFyc2VOdW1iZXJSZXN1bHQgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJz
ZU51bWJlclJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVl
ID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAg
IHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlTnVt
YmVyUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIHRv
a2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotaW5OdW1iZXJBZnRl
ckRlY2ltYWxQb2ludDoKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2lt
YWxQb2ludCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IERPVUJMRTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRp
Y2F0b3IoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURf
TlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JU
T0s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IFdURjo6Z2V0PGNvbnN0IElkZW50
aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPnJhZGl4ID0gMTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBJTlRFR0VSOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
ID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwg
J2UnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhw
b25lbnRJbmRpY2F0b3IoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50
IGluZGljYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQo
KSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJl
dHVybkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CisgICAgICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsK
LSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT0gSU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4g
PSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwot
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQp
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGQ4NDVlMmUuLjA1MmY5
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3MsIExl
eGVyRXNjYXBlUGFyc2VNb2RlIGVzY2FwZVBhcnNlTW9kZT4gQUxXQVlTX0lOTElORSBTdHJpbmdQ
YXJzZVJlc3VsdCBwYXJzZUNvbXBsZXhFc2NhcGUoYm9vbCBzdHJpY3RNb2RlLCBUIHN0cmluZ1F1
b3RlQ2hhcmFjdGVyKTsKICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNl
VGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKiwgUmF3U3RyaW5nc0J1aWxkTW9kZSk7Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpOworICAg
IEFMV0FZU19JTkxJTkUgVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiBwYXJzZUhl
eCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29u
c3QgSWRlbnRpZmllcio+PiBwYXJzZUJpbmFyeSgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpv
cHRpb25hbDxWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBwYXJzZU9jdGFsKCk7
CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj4+IHBhcnNlRGVjaW1hbCgpOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJz
ZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNl
TnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpOwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBw
YXJzZU11bHRpbGluZUNvbW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYWNkYWM2Yy4uYmJjZGEwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTkyLDYgKzky
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAgICBpbmxpbmUgQmlnSW50
Tm9kZTo6QmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiB2YWx1ZSwgdWludDhfdCByYWRpeCkKKyAgICAgICAgOiBDb25zdGFudE5vZGUo
bG9jYXRpb24sIFJlc3VsdFR5cGU6OmJpZ0ludFR5cGUoKSkKKyAgICAgICAgLCBtX3ZhbHVlKHZh
bHVlKQorICAgICAgICAsIG1fcmFkaXgocmFkaXgpCisgICAgeworICAgIH0KKwogICAgIGlubGlu
ZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQogICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlv
biwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMmE2ZGRkMi4uNGQyM2E0MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JpZ0ludCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVjdExpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJheUxpdGVyYWwo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMyOCw2ICszMjksMTkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdmFsdWU7CiAgICAgfTsKIAorICAgIGNs
YXNzIEJpZ0ludE5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIEJpZ0ludE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYs
IHVpbnQ4X3QgcmFkaXgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIEpTVmFsdWUganNWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fdmFsdWU7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgbV9yYWRpeDsKKyAgICB9Owor
CiAgICAgY2xhc3MgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IDQ5MDg5ODUuLjg0OGM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTQ0OTIsNiArNDQ5MiwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1h
cnlFeHByZQogCiAgICAgICAgIHJldHVybiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoY29u
dGV4dCwgaWRlbnQsICppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBzdGFydCwg
bG9jYXRpb24pOwogICAgIH0KKyAgICBjYXNlIEJJR0lOVDogeworICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmJpZ0ludFN0cmluZzsKKyAgICAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgICAgIG5leHQoKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmlnSW50KGxvY2F0aW9uLCBpZGVudCwgbV90
b2tlbi5tX2RhdGEucmFkaXgpOworICAgIH0KICAgICBjYXNlIFNUUklORzogewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDUxZmQ0YTdhLi5jMjA1OGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExMCw2
ICsxMTAsNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBCQUNLUVVPVEUsCiAgICAgSU5URUdF
UiwKICAgICBET1VCTEUsCisgICAgQklHSU5ULAogICAgIElERU5ULAogICAgIFNUUklORywKICAg
ICBURU1QTEFURSwKQEAgLTIxOCw2ICsyMTksMTAgQEAgdW5pb24gSlNUb2tlbkRhdGEgewogICAg
ICAgICBib29sIGVzY2FwZWQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgeworICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBiaWdJbnRTdHJpbmc7CisgICAgICAgIHVpbnQ4X3QgcmFkaXg7CisgICAgfTsK
KyAgICBzdHJ1Y3QgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBjb29rZWQ7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIHJhdzsKICAgICAgICAgYm9vbCBpc1RhaWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCmluZGV4IDRmNjQ3MWIuLjAzY2FlMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCkBAIC0zMSwxOCArMzEs
MTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIHN0cnVj
dCBPcGVyYW5kVHlwZXM7CiAKLSAgICAgICAgdHlwZWRlZiB1aW50OF90IFR5cGU7CisgICAgICAg
IHVzaW5nIFR5cGUgPSB1aW50OF90OwogICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlSW50
MzIgPSAxOwogICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVOdW1iZXIgPSAweDAy
OwogICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVTdHJpbmcgPSAweDA0OwogICAg
ICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVOdWxsICAgPSAweDA4OwogICAgICAgICBz
dGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVCb29sICAgPSAweDEwOwotICAgICAgICBzdGF0aWMg
Y29uc3QgVHlwZSBUeXBlTWF5YmVPdGhlciAgPSAweDIwOworICAgICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBUeXBlTWF5YmVCaWdJbnQgPSAweDIwOworICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBU
eXBlTWF5YmVPdGhlciAgPSAweDQwOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVC
aXRzID0gVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nIHwgVHlwZU1heWJlTnVsbCB8
IFR5cGVNYXliZUJvb2wgfCBUeXBlTWF5YmVPdGhlcjsKKyAgICAgICAgc3RhdGljIGNvbnN0IFR5
cGUgVHlwZUJpdHMgPSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBUeXBlTWF5
YmVOdWxsIHwgVHlwZU1heWJlQm9vbCB8IFR5cGVNYXliZUJpZ0ludCB8IFR5cGVNYXliZU90aGVy
OwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgY29uc3QgaW50IG51bUJpdHNOZWVkZWQg
PSA2OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG51bUJpdHNOZWVkZWQgPSA3OwogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAtIDEpKSA9
PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsKIAogICAg
ICAgICBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKQEAgLTcwLDYgKzcxLDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBlQml0cykgPT0g
VHlwZU1heWJlQm9vbDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgZGVmaW5pdGVseUlzQmln
SW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBl
Qml0cykgPT0gVHlwZU1heWJlQmlnSW50OworICAgICAgICB9CisKICAgICAgICAgYm9vbCBtaWdo
dEJlTnVtYmVyKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAm
IFR5cGVNYXliZU51bWJlcjsKQEAgLTgwLDYgKzg2LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuICFtaWdodEJlTnVtYmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIGJvb2wgbWlnaHRCZUJpZ0ludCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKworICAgICAgICBi
b29sIGlzTm90QmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFt
aWdodEJlQmlnSW50KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1
bHRUeXBlIG51bGxUeXBlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5
cGUoVHlwZU1heWJlTnVsbCk7CkBAIC0xMDUsMTEgKzEyMSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXli
ZVN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBl
IGFkZFJlc3VsdFR5cGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlw
ZShUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBUeXBlTWF5YmVCaWdJbnQpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBzdHJpbmdUeXBl
KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlU3Ry
aW5nKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgYmln
SW50VHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVN
YXliZUJpZ0ludCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRU
eXBlIHVua25vd25UeXBlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5
cGUoVHlwZUJpdHMpOwpAQCAtMTIxLDcgKzE0Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmlu
aXRlbHlJc1N0cmluZygpIHx8IG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RyaW5nVHlwZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ09yTnVt
YmVyVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJbnQoKSAmJiBv
cDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJpZ0ludFR5
cGUoKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRSZXN1bHRUeXBlKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBVbmxpa2UgaW4gQywgYSBsb2dpY2FsIG9wIHByb2R1Y2VzIHRoZSB2YWx1ZSBv
ZiB0aGUKQEAgLTEzNCw2ICsxNjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVtYmVyVHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNT
dHJpbmcoKSAmJiBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0cmluZ1R5cGUoKTsKKyAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50
KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBi
aWdJbnRUeXBlKCk7CiAgICAgICAgICAgICByZXR1cm4gdW5rbm93blR5cGUoKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4
IDhkYjM1YzcuLjUzOWM0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgaW50IE1ldGFQcm9wZXJ0eUJpdCA9IDB4ODAwMDAwMDA7CiAgICAgZW51bSA6
IGludCB7IE5vbmVFeHByID0gMCwKLSAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhw
ciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsCisgICAgICAgIFJlc29sdmVF
dmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHBy
LCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdF
eHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4
cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHBy
LAogICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlF
eHByLApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlM
aXRlcmFsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdWJsZUV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlKSB7IHJldHVybiBEb3VibGVFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlSW50ZWdlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91
YmxlKSB7IHJldHVybiBJbnRlZ2VyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJp
Z0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJl
dHVybiBCaWdJbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4
IDE5M2M5MWUuLmQ2NDc2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzAsNiArMzAsNyBAQAogICAgIG1hY3JvKEFycmF5
QnVmZmVyKSBcCiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BF
Ul9FTEVNRU5UKSBcCisgICAgbWFjcm8oQmlnSW50KSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAog
ICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oQ3JlZGVudGlhbCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmQ3ZjQ0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTAsMCArMSw2MzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFBhcnRzIG9mIHRoZSBpbXBsZW1lbnRh
dGlvbiBiZWxvdzoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNyB0aGUgVjggcHJvamVjdCBhdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorICogZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE0IHRoZSBEYXJ0IHBy
b2plY3QgYXV0aG9ycy4gIFBsZWFzZSBzZWUgdGhlIEFVVEhPUlMgZmlsZSBbMV0KKyAqIGZvciBk
ZXRhaWxzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhCisgKiBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlIFsyXS4KKyAqCisgKiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQt
bGFuZy9zZGsvYmxvYi9tYXN0ZXIvQVVUSE9SUworICogWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9k
YXJ0LWxhbmcvc2RrL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSBU
aGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCisgKiBsaWNlbnNlIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzNdLgorICoKKyAqIFszXSBodHRwczovL2dvbGFu
Zy5vcmcvTElDRU5TRQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0Jp
Z0ludC5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24u
aCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWZWN0b3IuaD4KKworI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQp
IHN0YXRpY19hc3NlcnQoY29uZCwgIkpTQmlnSW50IGFzc3VtZXMgIiAjY29uZCkKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0JpZ0ludDo6c19pbmZvID0KKyAgICB7ICJK
U0JpZ0ludCIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNCaWdJbnQpIH07CisKK3ZvaWQgSlNCaWdJbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0JpZ0ludCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworfQorCitKU0JpZ0ludDo6SlNCaWdJbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IGxlbmd0aCkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKK3sgfQorCit2b2lkIEpTQmlnSW50Ojppbml0aWFsaXplKEluaXRpYWxpemF0
aW9uVHlwZSBpbml0VHlwZSkKK3sKKyAgICBzZXRTaWduKGZhbHNlKTsKKyAgICBpZiAoaW5pdFR5
cGUgPT0gSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybykgeworICAgICAgICB2b2lkKiBkYXRh
ID0gc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFTdG9yYWdlKCkpOworICAgICAgICBtZW1zZXQoZGF0
YSwgMCwgbGVuZ3RoKCkgKiBEaWdpdFNpemUpOworICAgIH0KK30KKworU3RydWN0dXJlKiBKU0Jp
Z0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0pCit7CisgICAgSlNCaWdJbnQqIHplcm9CaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKGV4ZWMsIHZtLCAwKTsKKyAgICB6ZXJvQmlnSW50LT5zZXRTaWduKGZhbHNl
KTsKKyAgICByZXR1cm4gemVyb0JpZ0ludDsKK30KKworc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0
aW9uU2l6ZShpbnQgbGVuZ3RoKQoreworICAgIHNpemVfdCBzaXplV2l0aFBhZGRpbmcgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHNpemVfdCk+KHNpemVvZihKU0JpZ0ludCkpOwor
ICAgIHJldHVybiBzaXplV2l0aFBhZGRpbmcgKyBsZW5ndGggKiBzaXplb2YoRGlnaXQpOworfQor
CitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBW
TSYgdm0sIGludCBsZW5ndGgpCit7CisgICAgSlNCaWdJbnQqIGJpZ0ludCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQmlnSW50Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShsZW5ndGgp
KSkgSlNCaWdJbnQodm0sIHZtLmJpZ0ludFN0cnVjdHVyZS5nZXQoKSwgbGVuZ3RoKTsKKyAgICBi
aWdJbnQtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKKyAgICByZXR1cm4gYmlnSW50OworfQor
Cit2b2lkIEpTQmlnSW50OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitKU1ZhbHVlIEpTQmlnSW50Ojp0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAoreworICAg
IHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
dWludDhfdD4gSlNCaWdJbnQ6OnRvU3RyaW5nT25lRGlnaXQoKQoreworICAgIGlmIChpc1plcm8o
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKGxlbmd0aCgpID09IDEgJiYgIXNp
Z24oKSkgeworICAgICAgICBEaWdpdCByRGlnaXQgPSBkaWdpdCgwKTsKKyAgICAgICAgaWYgKHJE
aWdpdCA8PSA5KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJEaWdp
dCk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6cGFy
c2VJbnQoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRp
eCkKK3sKKyAgICBpZiAocy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50KGV4ZWMs
IHZtLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBmYWxzZSk7CisgICAg
cmV0dXJuIHBhcnNlSW50KGV4ZWMsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAw
LCByYWRpeCwgZmFsc2UpOworfQorCitTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgaW50IHJhZGl4KQoreworICAgIGlmICh0aGlzLT5pc1plcm8oKSkKKyAgICAgICAg
cmV0dXJuIGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCgn
MCcpOworCisgICAgcmV0dXJuIHRvU3RyaW5nR2VuZXJpYyhleGVjLCB0aGlzLCByYWRpeCk7Cit9
CisKK2Jvb2wgSlNCaWdJbnQ6OmlzWmVybygpCit7CisgICAgQVNTRVJUKGxlbmd0aCgpIHx8ICFz
aWduKCkpOworICAgIHJldHVybiBsZW5ndGgoKSA9PSAwOworfQorCisvLyBNdWx0aXBsaWVzIHt0
aGlzfSB3aXRoIHtmYWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgordm9p
ZCBKU0JpZ0ludDo6aW5wbGFjZU11bHRpcGx5QWRkKHVpbnRwdHJfdCBmYWN0b3IsIHVpbnRwdHJf
dCBzdW1tYW5kKQoreworICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGZhY3RvcikgPT0gc2l6ZW9m
KERpZ2l0KSk7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2Yoc3VtbWFuZCkgPT0gc2l6ZW9mKERp
Z2l0KSk7CisKKyAgICBpbnRlcm5hbE11bHRpcGx5QWRkKHRoaXMsIGZhY3Rvciwgc3VtbWFuZCwg
bGVuZ3RoKCksIHRoaXMpOworfQorCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgSEFW
RV9UV09fRElHSVQgMQordHlwZWRlZiB1aW50NjRfdCBUd29EaWdpdDsKKyNlbGlmIEhBVkUoSU5U
MTI4X1QpCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lUIDEKK3R5cGVkZWYgX191aW50MTI4X3QgVHdv
RGlnaXQ7CisjZWxzZQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAwCisjZW5kaWYKKworLy8ge2Nh
cnJ5fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBi
ZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQg
SlNCaWdJbnQ6OmRpZ2l0QWRkKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSkKK3sKKyNp
ZiBIQVZFX1RXT19ESUdJVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19jYXN0PFR3b0Rp
Z2l0PihhKSArIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICBjYXJyeSArPSByZXN1bHQg
Pj4gRGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOwor
I2Vsc2UKKyAgICBEaWdpdCByZXN1bHQgPSBhICsgYjsKKworICAgIGlmIChyZXN1bHQgPCBhKQor
ICAgICAgICBjYXJyeSArPSAxOworICAgIAorICAgIHJldHVybiByZXN1bHQ7CisjZW5kaWYKK30K
KworLy8ge2JvcnJvd30gbXVzdCBwb2ludCB0byBhbiBpbml0aWFsaXplZCBEaWdpdCBhbmQgd2ls
bCBlaXRoZXIgYmUgaW5jcmVtZW50ZWQKKy8vIGJ5IG9uZSBvciBsZWZ0IGFsb25lLgorSlNCaWdJ
bnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFN1YihEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgYm9y
cm93KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VHdvRGlnaXQ+KGEpIC0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAgIGJvcnJv
dyArPSAocmVzdWx0ID4+IERpZ2l0Qml0cykgJiAxOworICAgIAorICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbHNlCisgICAgRGlnaXQgcmVzdWx0ID0gYSAtIGI7Cisg
ICAgaWYgKHJlc3VsdCA+IGEpCisgICAgICAgIGJvcnJvdyArPSAxOworICAgIAorICAgIHJldHVy
biBzdGF0aWNfY2FzdDxEaWdpdD4ocmVzdWx0KTsKKyNlbmRpZgorfQorCisvLyBSZXR1cm5zIHRo
ZSBsb3cgaGFsZiBvZiB0aGUgcmVzdWx0LiBIaWdoIGhhbGYgaXMgaW4ge2hpZ2h9LgorSlNCaWdJ
bnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGln
aCkKK3sKKyNpZiBIQVZFX1RXT19ESUdJVAorICAgIFR3b0RpZ2l0IHJlc3VsdCA9IHN0YXRpY19j
YXN0PFR3b0RpZ2l0PihhKSAqIHN0YXRpY19jYXN0PFR3b0RpZ2l0PihiKTsKKyAgICBoaWdoID0g
cmVzdWx0ID4+IERpZ2l0Qml0czsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaWdpdD4ocmVz
dWx0KTsKKyNlbHNlCisgICAgLy8gTXVsdGlwbHkgaW4gaGFsZi1wb2ludGVyLXNpemVkIGNodW5r
cy4KKyAgICAvLyBGb3IgaW5wdXRzIFtBSCBBTF0qW0JIIEJMXSwgdGhlIHJlc3VsdCBpczoKKyAg
ICAvLworICAgIC8vICAgICAgICAgICAgW0FMKkJMXSAgLy8gckxvdworICAgIC8vICAgICsgICAg
W0FMKkJIXSAgICAgLy8gck1pZDEKKyAgICAvLyAgICArICAgIFtBSCpCTF0gICAgIC8vIHJNaWQy
CisgICAgLy8gICAgKyBbQUgqQkhdICAgICAgICAvLyBySGlnaAorICAgIC8vICAgID0gW1I0IFIz
IFIyIFIxXSAgLy8gaGlnaCA9IFtSNCBSM10sIGxvdyA9IFtSMiBSMV0KKyAgICAvLworICAgIC8v
IFdoZXJlIG9mIGNvdXJzZSB3ZSBtdXN0IGJlIGNhcmVmdWwgd2l0aCBjYXJyaWVzIGJldHdlZW4g
dGhlIGNvbHVtbnMuCisgICAgRGlnaXQgYUxvdyA9IGEgJiBIYWxmRGlnaXRNYXNrOworICAgIERp
Z2l0IGFIaWdoID0gYSA+PiBIYWxmRGlnaXRCaXRzOworICAgIERpZ2l0IGJMb3cgPSBiICYgSGFs
ZkRpZ2l0TWFzazsKKyAgICBEaWdpdCBiSGlnaCA9IGIgPj4gSGFsZkRpZ2l0Qml0czsKKyAgICAK
KyAgICBEaWdpdCByTG93ID0gYUxvdyAqIGJMb3c7CisgICAgRGlnaXQgck1pZDEgPSBhTG93ICog
YkhpZ2g7CisgICAgRGlnaXQgck1pZDIgPSBhSGlnaCAqIGJMb3c7CisgICAgRGlnaXQgckhpZ2gg
PSBhSGlnaCAqIGJIaWdoOworICAgIAorICAgIERpZ2l0IGNhcnJ5ID0gMDsKKyAgICBEaWdpdCBs
b3cgPSBkaWdpdEFkZChyTG93LCByTWlkMSA8PCBIYWxmRGlnaXRCaXRzLCBjYXJyeSk7CisgICAg
bG93ID0gZGlnaXRBZGQobG93LCByTWlkMiA8PCBIYWxmRGlnaXRCaXRzLCBjYXJyeSk7CisKKyAg
ICBoaWdoID0gKHJNaWQxID4+IEhhbGZEaWdpdEJpdHMpICsgKHJNaWQyID4+IEhhbGZEaWdpdEJp
dHMpICsgckhpZ2ggKyBjYXJyeTsKKworICAgIHJldHVybiBsb3c7CisjZW5kaWYKK30KKworLy8g
UmFpc2VzIHtiYXNlfSB0byB0aGUgcG93ZXIgb2Yge2V4cG9uZW50fS4gRG9lcyBub3QgY2hlY2sg
Zm9yIG92ZXJmbG93LgorSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdFBvdyhEaWdpdCBi
YXNlLCBEaWdpdCBleHBvbmVudCkKK3sKKyAgICBEaWdpdCByZXN1bHQgPSAxdWxsOworICAgIHdo
aWxlIChleHBvbmVudCA+IDApIHsKKyAgICAgICAgaWYgKGV4cG9uZW50ICYgMSkKKyAgICAgICAg
ICAgIHJlc3VsdCAqPSBiYXNlOworCisgICAgICAgIGV4cG9uZW50ID4+PSAxOworICAgICAgICBi
YXNlICo9IGJhc2U7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gUmV0dXJu
cyB0aGUgcXVvdGllbnQuCisvLyBxdW90aWVudCA9IChoaWdoIDw8IERpZ2l0Qml0cyArIGxvdyAt
IHJlbWFpbmRlcikgLyBkaXZpc29yCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2
KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRlcikK
K3sKKyAgICBBU1NFUlQoaGlnaCA8IGRpdmlzb3IpOworI2lmIENQVShYODZfNjQpICYmIENPTVBJ
TEVSKEdDQ19PUl9DTEFORykKKyAgICBEaWdpdCBxdW90aWVudDsKKyAgICBEaWdpdCByZW07Cisg
ICAgX19hc21fXygiZGl2cSAgJVtkaXZpc29yXSIKKyAgICAgICAgLy8gT3V0cHV0czoge3F1b3Rp
ZW50fSB3aWxsIGJlIGluIHJheCwge3JlbX0gaW4gcmR4LgorICAgICAgICA6ICI9YSIocXVvdGll
bnQpLCAiPWQiKHJlbSkKKyAgICAgICAgLy8gSW5wdXRzOiBwdXQge2hpZ2h9IGludG8gcmR4LCB7
bG93fSBpbnRvIHJheCwgYW5kIHtkaXZpc29yfSBpbnRvCisgICAgICAgIC8vIGFueSByZWdpc3Rl
ciBvciBzdGFjayBzbG90LgorICAgICAgICA6ICJkIihoaWdoKSwgImEiKGxvdyksIFtkaXZpc29y
XSAicm0iKGRpdmlzb3IpKTsKKyAgICByZW1haW5kZXIgPSByZW07CisgICAgcmV0dXJuIHF1b3Rp
ZW50OworI2VsaWYgQ1BVKFg4NikgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0
IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZsICAlW2Rpdmlzb3Jd
IgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gZWF4LCB7cmVtfSBp
biBlZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJ
bnB1dHM6IHB1dCB7aGlnaH0gaW50byBlZHgsIHtsb3d9IGludG8gZWF4LCBhbmQge2Rpdmlzb3J9
IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDog
ImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJlbWFp
bmRlciA9IHJlbTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxzZQorICAgIHN0YXRpYyBjb25z
dCBEaWdpdCBrSGFsZkRpZ2l0QmFzZSA9IDF1bGwgPDwgSGFsZkRpZ2l0Qml0czsKKyAgICAvLyBB
ZGFwdGVkIGZyb20gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBwLiAxNTIuCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpbnQgcyA9IGNsejY0KGRpdmlzb3IpOworI2Vsc2UKKyAgICBpbnQgcyA9
IGNsejMyKGRpdmlzb3IpOworI2VuZGlmCisgICAgZGl2aXNvciA8PD0gczsKKyAgICAKKyAgICBE
aWdpdCB2bjEgPSBkaXZpc29yID4+IEhhbGZEaWdpdEJpdHM7CisgICAgRGlnaXQgdm4wID0gZGl2
aXNvciAmIEhhbGZEaWdpdE1hc2s7CisKKyAgICAvLyB7c30gY2FuIGJlIDAuICJsb3cgPj4gRGln
aXRCaXRzID09IGxvdyIgb24geDg2LCBzbyB3ZSAiJiIgaXQgd2l0aAorICAgIC8vIHtzX3plcm9f
bWFza30gd2hpY2ggaXMgMCBpZiBzID09IDAgYW5kIGFsbCAxLWJpdHMgb3RoZXJ3aXNlLgorICAg
IFNUQVRJQ19BU1NFUlQoc2l6ZW9mKGludHB0cl90KSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBE
aWdpdCBzWmVyb01hc2sgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC1zKSA+PiAoRGlnaXRCaXRzIC0gMSkpOworICAgIERpZ2l0IHVuMzIgPSAoaGlnaCA8PCBzKSB8
ICgobG93ID4+IChEaWdpdEJpdHMgLSBzKSkgJiBzWmVyb01hc2spOworICAgIERpZ2l0IHVuMTAg
PSBsb3cgPDwgczsKKyAgICBEaWdpdCB1bjEgPSB1bjEwID4+IEhhbGZEaWdpdEJpdHM7CisgICAg
RGlnaXQgdW4wID0gdW4xMCAmIEhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQgcTEgPSB1bjMyIC8g
dm4xOworICAgIERpZ2l0IHJoYXQgPSB1bjMyIC0gcTEgKiB2bjE7CisKKyAgICB3aGlsZSAocTEg
Pj0ga0hhbGZEaWdpdEJhc2UgfHwgcTEgKiB2bjAgPiByaGF0ICoga0hhbGZEaWdpdEJhc2UgKyB1
bjEpIHsKKyAgICAgICAgcTEtLTsKKyAgICAgICAgcmhhdCArPSB2bjE7CisgICAgICAgIGlmIChy
aGF0ID49IGtIYWxmRGlnaXRCYXNlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
RGlnaXQgdW4yMSA9IHVuMzIgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSAtIHExICogZGl2aXNvcjsK
KyAgICBEaWdpdCBxMCA9IHVuMjEgLyB2bjE7CisgICAgcmhhdCA9IHVuMjEgLSBxMCAqIHZuMTsK
KworICAgIHdoaWxlIChxMCA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMCAqIHZuMCA+IHJoYXQgKiBr
SGFsZkRpZ2l0QmFzZSArIHVuMCkgeworICAgICAgICBxMC0tOworICAgICAgICByaGF0ICs9IHZu
MTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZW1haW5kZXIgPSAodW4yMSAqIGtIYWxmRGlnaXRCYXNlICsgdW4w
IC0gcTAgKiBkaXZpc29yKSA+PiBzOworICAgIHJldHVybiBxMSAqIGtIYWxmRGlnaXRCYXNlICsg
cTA7CisjZW5kaWYKK30KKworLy8gTXVsdGlwbGllcyB7c291cmNlfSB3aXRoIHtmYWN0b3J9IGFu
ZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0LgorLy8ge3Jlc3VsdH0gYW5kIHtzb3VyY2V9
IG1heSBiZSB0aGUgc2FtZSBCaWdJbnQgZm9yIGlucGxhY2UgbW9kaWZpY2F0aW9uLgordm9pZCBK
U0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdpdCBmYWN0
b3IsIERpZ2l0IHN1bW1hbmQsIGludCBuLCBKU0JpZ0ludCogcmVzdWx0KQoreworICAgIEFTU0VS
VChzb3VyY2UtPmxlbmd0aCgpID49IG4pOworICAgIEFTU0VSVChyZXN1bHQtPmxlbmd0aCgpID49
IG4pOworCisgICAgRGlnaXQgY2FycnkgPSBzdW1tYW5kOworICAgIERpZ2l0IGhpZ2ggPSAwOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIERpZ2l0IGN1cnJlbnQg
PSBzb3VyY2UtPmRpZ2l0KGkpOworICAgICAgICBEaWdpdCBuZXdDYXJyeSA9IDA7CisKKyAgICAg
ICAgLy8gQ29tcHV0ZSB0aGlzIHJvdW5kJ3MgbXVsdGlwbGljYXRpb24uCisgICAgICAgIERpZ2l0
IG5ld0hpZ2ggPSAwOworICAgICAgICBjdXJyZW50ID0gZGlnaXRNdWwoY3VycmVudCwgZmFjdG9y
LCBuZXdIaWdoKTsKKworICAgICAgICAvLyBBZGQgbGFzdCByb3VuZCdzIGNhcnJ5b3ZlcnMuCisg
ICAgICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJyZW50LCBoaWdoLCBuZXdDYXJyeSk7CisgICAg
ICAgIGN1cnJlbnQgPSBkaWdpdEFkZChjdXJyZW50LCBjYXJyeSwgbmV3Q2FycnkpOworCisgICAg
ICAgIC8vIFN0b3JlIHJlc3VsdCBhbmQgcHJlcGFyZSBmb3IgbmV4dCByb3VuZC4KKyAgICAgICAg
cmVzdWx0LT5zZXREaWdpdChpLCBjdXJyZW50KTsKKyAgICAgICAgY2FycnkgPSBuZXdDYXJyeTsK
KyAgICAgICAgaGlnaCA9IG5ld0hpZ2g7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC0+bGVuZ3Ro
KCkgPiBuKSB7CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQobisrLCBjYXJyeSArIGhpZ2gpOwor
CisgICAgICAgIC8vIEN1cnJlbnQgY2FsbGVycyBkb24ndCBwYXNzIGluIHN1Y2ggbGFyZ2UgcmVz
dWx0cywgYnV0IGxldCdzIGJlIHJvYnVzdC4KKyAgICAgICAgd2hpbGUgKG4gPCByZXN1bHQtPmxl
bmd0aCgpKQorICAgICAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyssIDApOworICAgIH0gZWxz
ZQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGNhcnJ5ICsgaGlnaCkpOworfQorCitib29sIEpT
QmlnSW50OjplcXVhbFRvQmlnSW50KEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKK3sKKyAgICBp
ZiAoeC0+c2lnbigpICE9IHktPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHgtPmxlbmd0aCgpICE9IHktPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHgtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYg
KHgtPmRpZ2l0KGkpICE9IHktPmRpZ2l0KGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBEaXZpZGVzIHt4fSBieSB7ZGl2aXNv
cn0sIHJldHVybmluZyB0aGUgcmVzdWx0IGluIHtxdW90aWVudH0gYW5kIHtyZW1haW5kZXJ9Lgor
Ly8gTWF0aGVtYXRpY2FsbHksIHRoZSBjb250cmFjdCBpczoKKy8vIHF1b3RpZW50ID0gKHggLSBy
ZW1haW5kZXIpIC8gZGl2aXNvciwgd2l0aCAwIDw9IHJlbWFpbmRlciA8IGRpdmlzb3IuCisvLyBJ
ZiB7cXVvdGllbnR9IGlzIGFuIGVtcHR5IGhhbmRsZSwgYW4gYXBwcm9wcmlhdGVseSBzaXplZCBC
aWdJbnQgd2lsbCBiZQorLy8gYWxsb2NhdGVkIGZvciBpdDsgb3RoZXJ3aXNlIHRoZSBjYWxsZXIg
bXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBiaWcgZW5vdWdoLgorLy8ge3F1b3RpZW50fSBjYW4gYmUg
dGhlIHNhbWUgYXMge3h9IGZvciBhbiBpbi1wbGFjZSBkaXZpc2lvbi4ge3F1b3RpZW50fSBjYW4K
Ky8vIGFsc28gYmUgbnVsbHB0ciBpZiB0aGUgY2FsbGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB0
aGUgcmVtYWluZGVyLgordm9pZCBKU0JpZ0ludDo6YWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUq
IGV4ZWMsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBE
aWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChkaXZpc29yKTsKKworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisgICAgcmVtYWluZGVyID0g
MDsKKyAgICBpZiAoZGl2aXNvciA9PSAxKSB7CisgICAgICAgIGlmIChxdW90aWVudCAhPSBudWxs
cHRyKQorICAgICAgICAgICAgKnF1b3RpZW50ID0geDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBpZiAocXVvdGllbnQgIT0gbnVs
bHB0cikgeworICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpIHsKKyAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgICpxdW90
aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKGV4ZWMsIHZtLCBsZW5ndGgpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAg
ICAgICAgRGlnaXQgcSA9IGRpZ2l0RGl2KHJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3Is
IHJlbWFpbmRlcik7CisgICAgICAgICAgICAoKnF1b3RpZW50KS0+c2V0RGlnaXQoaSwgcSk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsg
aSA+PSAwOyBpLS0pCisgICAgICAgICAgICBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkp
LCBkaXZpc29yLCByZW1haW5kZXIpOworICAgIH0KK30KKworLy8gTG9va3VwIHRhYmxlIGZvciB0
aGUgbWF4aW11bSBudW1iZXIgb2YgYml0cyByZXF1aXJlZCBwZXIgY2hhcmFjdGVyIG9mIGEKKy8v
IGJhc2UtTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIuIFRvIGluY3JlYXNlIGFj
Y3VyYWN5LCB0aGUgYXJyYXkKKy8vIHZhbHVlIGlzIHRoZSBhY3R1YWwgdmFsdWUgbXVsdGlwbGll
ZCBieSAzMi4gVG8gZ2VuZXJhdGUgdGhpcyB0YWJsZToKKy8vIGZvciAodmFyIGkgPSAwOyBpIDw9
IDM2OyBpKyspIHsgcHJpbnQoTWF0aC5jZWlsKE1hdGgubG9nMihpKSAqIDMyKSArICIsIik7IH0K
K2NvbnN0ZXhwciB1aW50OF90IE1heEJpdHNQZXJDaGFyW10gPSB7CisgICAgMCwgICAwLCAgIDMy
LCAgNTEsICA2NCwgIDc1LCAgODMsICA5MCwgIDk2LCAvLyAwLi44CisgICAgMTAyLCAxMDcsIDEx
MSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAvLyA5Li4xNgorICAgIDEzMSwgMTM0LCAx
MzYsIDEzOSwgMTQxLCAxNDMsIDE0NSwgMTQ3LCAgICAgLy8gMTcuLjI0CisgICAgMTQ5LCAxNTEs
IDE1MywgMTU0LCAxNTYsIDE1OCwgMTU5LCAxNjAsICAgICAvLyAyNS4uMzIKKyAgICAxNjIsIDE2
MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMzLi4zNgorfTsKKworc3Rh
dGljIGNvbnN0IGludCBCaXRzUGVyQ2hhclRhYmxlU2hpZnQgPSA1Oworc3RhdGljIGNvbnN0IHNp
emVfdCBCaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciA9IDF1IDw8IEJpdHNQZXJDaGFyVGFibGVT
aGlmdDsKKworLy8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBsZW5ndGgg
b2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisvLyBEaXZpZGUgYml0IGxlbmd0aCBvZiB0aGUgQmln
SW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIgY2hhcmFjdGVyLgordWludDY0X3QgSlNCaWdJ
bnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0aCwgaW50IHJh
ZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2lnbikKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGludCBsZWFkaW5nWmVyb3MgPSBjbHo2NChsYXN0RGlnaXQpOworI2Vsc2UKKyAgICBpbnQg
bGVhZGluZ1plcm9zID0gY2x6MzIobGFzdERpZ2l0KTsKKyNlbmRpZgorICAgIHNpemVfdCBiaXRM
ZW5ndGggPSBsZW5ndGggKiBEaWdpdEJpdHMgLSBsZWFkaW5nWmVyb3M7CisKKyAgICAvLyBNYXhp
bXVtIG51bWJlciBvZiBiaXRzIHdlIGNhbiByZXByZXNlbnQgd2l0aCBvbmUgY2hhcmFjdGVyLiBX
ZSdsbCB1c2UgdGhpcworICAgIC8vIHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgY2h1bmsgc2l6ZSBi
ZWxvdy4KKyAgICB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNoYXJbcmFkaXhd
OworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVzdWx0IGxlbmd0aCwgd2UgaGF2ZSB0byBiZSBw
ZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAgLy8gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJp
dHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50LgorICAgIHVpbnQ4X3QgbWluQml0c1BlckNo
YXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAgICAvLyBQZXJmb3JtIHRoZSBmb2xsb3dpbmcg
Y29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBhdm9pZCBvdmVyZmxvd3MuCisgICAgdWludDY0
X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9IGJpdExlbmd0aDsKKyAgICBtYXhpbXVtQ2hh
cmFjdGVyc1JlcXVpcmVkICo9IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyOworCisgICAgLy8g
Um91bmQgdXAuCisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCArPSBtaW5CaXRzUGVyQ2hh
ciAtIDE7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCAvPSBtaW5CaXRzUGVyQ2hhcjsK
KyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICs9IHNpZ247CisgICAgCisgICAgcmV0dXJu
IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQ7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6dG9TdHJp
bmdHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNCaWdJbnQqIHgsIGludCByYWRpeCkKK3sKKyAg
ICBTdHJpbmdWZWN0b3I8TENoYXI+IHJlc3VsdFN0cmluZzsKKworICAgIEFTU0VSVChyYWRpeCA+
PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKKworICAgIGlu
dCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBib29sIHNpZ24gPSB4LT5zaWduKCk7CisKKyAg
ICB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHVp
bnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgPSBjYWxjdWxhdGVNYXhpbXVtQ2hhcmFj
dGVyc1JlcXVpcmVkKGxlbmd0aCwgcmFkaXgsIHgtPmRpZ2l0KGxlbmd0aCAtIDEpLCBzaWduKTsK
KworICAgIGlmIChtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkID4gSlNTdHJpbmc6Ok1heExlbmd0
aCkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KFdURk1vdmUocmVzdWx0U3RyaW5nKSk7CisgICAgfQor
CisgICAgRGlnaXQgbGFzdERpZ2l0OworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgbGFz
dERpZ2l0ID0geC0+ZGlnaXQoMCk7CisgICAgZWxzZSB7CisgICAgICAgIGludCBjaHVua0NoYXJz
ID0gRGlnaXRCaXRzICogQml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgLyBtYXhCaXRzUGVyQ2hh
cjsKKyAgICAgICAgRGlnaXQgY2h1bmtEaXZpc29yID0gZGlnaXRQb3cocmFkaXgsIGNodW5rQ2hh
cnMpOworCisgICAgICAgIC8vIEJ5IGNvbnN0cnVjdGlvbiBvZiBjaHVua0NoYXJzLCB0aGVyZSBj
YW4ndCBoYXZlIGJlZW4gb3ZlcmZsb3cuCisgICAgICAgIEFTU0VSVChjaHVua0Rpdmlzb3IpOwor
ICAgICAgICBpbnQgbm9uWmVyb0RpZ2l0ID0gbGVuZ3RoIC0gMTsKKyAgICAgICAgQVNTRVJUKHgt
PmRpZ2l0KG5vblplcm9EaWdpdCkpOworCisgICAgICAgIC8vIHtyZXN0fSBob2xkcyB0aGUgcGFy
dCBvZiB0aGUgQmlnSW50IHRoYXQgd2UgaGF2ZW4ndCBsb29rZWQgYXQgeWV0LgorICAgICAgICAv
LyBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCAicmVtYWluZGVyIiEKKyAgICAgICAgSlNCaWdJbnQq
IHJlc3QgPSBudWxscHRyOworCisgICAgICAgIC8vIEluIHRoZSBmaXJzdCByb3VuZCwgZGl2aWRl
IHRoZSBpbnB1dCwgYWxsb2NhdGluZyBhIG5ldyBCaWdJbnQgZm9yCisgICAgICAgIC8vIHRoZSBy
ZXN1bHQgPT0gcmVzdDsgZnJvbSB0aGVuIG9uIGRpdmlkZSB0aGUgcmVzdCBpbi1wbGFjZS4KKyAg
ICAgICAgSlNCaWdJbnQqKiBkaXZpZGVuZCA9ICZ4OworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBEaWdpdCBjaHVuazsKKyAgICAgICAgICAgIGFic29sdXRlRGl2U21hbGwoZXhlYywgKmRpdmlk
ZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0LCBjaHVuayk7CisgICAgICAgICAgICBBU1NFUlQocmVz
dCk7CisKKyAgICAgICAgICAgIGRpdmlkZW5kID0gJnJlc3Q7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdFN0
cmluZy5hcHBlbmQocmFkaXhEaWdpdHNbY2h1bmsgJSByYWRpeF0pOworICAgICAgICAgICAgICAg
IGNodW5rIC89IHJhZGl4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCFjaHVu
ayk7CisKKyAgICAgICAgICAgIGlmICghcmVzdC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSkKKyAgICAg
ICAgICAgICAgICBub25aZXJvRGlnaXQtLTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5ldmVy
IGNsZWFyIG1vcmUgdGhhbiBvbmUgZGlnaXQgcGVyIGl0ZXJhdGlvbiwgYmVjYXVzZQorICAgICAg
ICAgICAgLy8gY2h1bmtEaXZpc29yIGlzIHNtYWxsZXIgdGhhbiBtYXggZGlnaXQgdmFsdWUuCisg
ICAgICAgICAgICBBU1NFUlQocmVzdC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisgICAgICAgIH0g
d2hpbGUgKG5vblplcm9EaWdpdCA+IDApOworCisgICAgICAgIGxhc3REaWdpdCA9IHJlc3QtPmRp
Z2l0KDApOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChy
YWRpeERpZ2l0c1tsYXN0RGlnaXQgJSByYWRpeF0pOworICAgICAgICBsYXN0RGlnaXQgLz0gcmFk
aXg7CisgICAgfSB3aGlsZSAobGFzdERpZ2l0ID4gMCk7CisgICAgQVNTRVJUKHJlc3VsdFN0cmlu
Zy5zaXplKCkpOworICAgIEFTU0VSVChyZXN1bHRTdHJpbmcuc2l6ZSgpIDw9IHN0YXRpY19jYXN0
PHNpemVfdD4obWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCkpOworCisgICAgLy8gUmVtb3ZlIGxl
YWRpbmcgemVyb2VzLgorICAgIGludCBuZXdTaXplTm9MZWFkaW5nWmVyb2VzID0gcmVzdWx0U3Ry
aW5nLnNpemUoKTsKKyAgICB3aGlsZSAobmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAgPiAxICYmIHJl
c3VsdFN0cmluZ1tuZXdTaXplTm9MZWFkaW5nWmVyb2VzIC0gMV0gPT0gJzAnKQorICAgICAgICBu
ZXdTaXplTm9MZWFkaW5nWmVyb2VzLS07CisKKyAgICByZXN1bHRTdHJpbmcuc2hyaW5rKG5ld1Np
emVOb0xlYWRpbmdaZXJvZXMpOworCisgICAgaWYgKHNpZ24pCisgICAgICAgIHJlc3VsdFN0cmlu
Zy5hcHBlbmQoJy0nKTsKKworICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRTdHJpbmcuYmVnaW4oKSwg
cmVzdWx0U3RyaW5nLmVuZCgpKTsKKworICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZN
b3ZlKHJlc3VsdFN0cmluZykpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKK3sKKyAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgIHJl
dHVybiB0aGlzOworCisgICAgaW50IG5vblplcm9JbmRleCA9IG1fbGVuZ3RoIC0gMTsKKyAgICB3
aGlsZSAobm9uWmVyb0luZGV4ID49IDAgJiYgIWRpZ2l0KG5vblplcm9JbmRleCkpCisgICAgICAg
IG5vblplcm9JbmRleC0tOworCisgICAgaWYgKG5vblplcm9JbmRleCA9PSBtX2xlbmd0aCAtIDEp
CisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgaW50IG5ld0xlbmd0aCA9IG5vblplcm9JbmRl
eCArIDE7CisgICAgSlNCaWdJbnQqIHRyaW1tZWRCaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGV4
ZWMsIHZtLCBuZXdMZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKHRyaW1tZWRCaWdJbnQpOwor
ICAgIERpZ2l0KiBkYXRhID0gdHJpbW1lZEJpZ0ludC0+ZGF0YVN0b3JhZ2UoKTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKQorICAgICAgICBkYXRhW2ldID0gZGlnaXQo
aSk7CisKKyAgICB0cmltbWVkQmlnSW50LT5zZXRTaWduKHRoaXMtPnNpZ24oKSk7CisKKyAgICBy
ZXR1cm4gdHJpbW1lZEJpZ0ludDsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjphbGxvY2F0ZUZv
cihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50KQorewor
ICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoY2hhcmNv
dW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gTWF4Qml0c1BlckNoYXJbcmFkaXhdOworICAgIHNp
emVfdCBjaGFycyA9IHN0YXRpY19jYXN0PHNpemVfdD4oY2hhcmNvdW50KTsKKyAgICBjb25zdCBp
bnQgcm91bmR1cCA9IEJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyIC0gMTsKKyAgICBpZiAoY2hh
cnMgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSByb3VuZHVwKSAvIGJp
dHNQZXJDaGFyKSB7CisgICAgICAgIHNpemVfdCBiaXRzTWluID0gYml0c1BlckNoYXIgKiBjaGFy
czsKKworICAgICAgICAvLyBEaXZpZGUgYnkgMzIgKHNlZSB0YWJsZSksIHJvdW5kaW5nIHVwLgor
ICAgICAgICBiaXRzTWluID0gKGJpdHNNaW4gKyByb3VuZHVwKSA+PiBCaXRzUGVyQ2hhclRhYmxl
U2hpZnQ7CisgICAgICAgIGlmIChiaXRzTWluIDw9IHN0YXRpY19jYXN0PHNpemVfdD4oTWF4SW50
KSkgeworICAgICAgICAgICAgLy8gRGl2aWRlIGJ5IGtEaWdpdHNCaXRzLCByb3VuZGluZyB1cC4K
KyAgICAgICAgICAgIGludCBsZW5ndGggPSAoc3RhdGljX2Nhc3Q8aW50PihiaXRzTWluKSArIERp
Z2l0Qml0cyAtIDEpIC8gRGlnaXRCaXRzOworICAgICAgICAgICAgaWYgKGxlbmd0aCA8PSBNYXhM
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmNy
ZWF0ZVdpdGhMZW5ndGgoZXhlYywgdm0sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChleGVjKQor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxs
KQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7
CisgICAgc2l6ZV90IGJ1ZmZlckVzdGltYXRlZFNpemUgPSB0aGlzT2JqZWN0LT5tX2xlbmd0aCAq
IERpZ2l0U2l6ZTsKKyAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGJ1ZmZl
ckVzdGltYXRlZFNpemU7Cit9CisKK2RvdWJsZSBKU0JpZ0ludDo6dG9OdW1iZXIoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkNvbnZlcnRpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBp
cyBub3QgYWxsb3dlZC4iKSk7CisgICAgcmV0dXJuIDAuMDsKK30KKworYm9vbCBKU0JpZ0ludDo6
Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFs
dWUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICByZXN1bHQgPSB0aGlzOworICAgIG51bWJlciA9IHRv
TnVtYmVyKGV4ZWMpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM2ZTk0NjgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTQmlnSW50IDogcHVibGljIEpTQ2VsbCB7CisgICAgdXNpbmcgQmFzZSA9IEpTQ2Vs
bDsKKworcHVibGljOgorCisgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25l
LCBXaXRoWmVybyB9OworICAgIAorICAgIEpTQmlnSW50KFZNJiwgU3RydWN0dXJlKiwgaW50IGxl
bmd0aCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlKTsKKworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGlvblNpemUoaW50IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsK
KworICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhFeGVjU3RhdGUqLCBWTSYpOworCisg
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoKEV4ZWNTdGF0ZSosIFZNJiwgaW50
IGxlbmd0aCk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBWTSYpOworCisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVj
U3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2ln
bihib29sIHNpZ24pIHsgbV9zaWduID0gc2lnbjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2lnbjsgfQorCisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xl
bmd0aCA9IGxlbmd0aDsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQorCisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiB0b1N0cmluZ09uZURpZ2l0KCk7CisK
KyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmll
dywgdWludDhfdCByYWRpeCk7CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSos
IGludCByYWRpeCk7CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1
YWxUb0JpZ0ludChKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOworCisgICAgYm9vbCBnZXRQcmlt
aXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkg
Y29uc3Q7CisgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJfdDsKKyAgICBzdGF0aWMgY29uc3QgaW50
IEJpdHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29uc3QgaW50IERpZ2l0U2l6ZSA9IHNpemVv
ZihEaWdpdCk7CisgICAgc3RhdGljIGNvbnN0IGludCBEaWdpdEJpdHMgPSBEaWdpdFNpemUgKiBC
aXRzUGVyQnl0ZTsKKyAgICBzdGF0aWMgY29uc3QgaW50IEhhbGZEaWdpdEJpdHMgPSBEaWdpdEJp
dHMgLyAyOworICAgIHN0YXRpYyBjb25zdCBEaWdpdCBIYWxmRGlnaXRNYXNrID0gKDF1bGwgPDwg
SGFsZkRpZ2l0Qml0cykgLSAxOworICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4SW50ID0gMHg3RkZG
RkZGRjsKKyAgICAKKyAgICAvLyBUaGUgbWF4aW11bSBsZW5ndGggdGhhdCB0aGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB3b3VsZCBiZQorICAgIC8vIE1heEludCAvIERpZ2l0Qml0
cy4gSG93ZXZlciwgd2UgdXNlIGEgbG93ZXIgbGltaXQgZm9yIG5vdywgYmVjYXVzZQorICAgIC8v
IHJhaXNpbmcgaXQgbGF0ZXIgaXMgZWFzaWVyIHRoYW4gbG93ZXJpbmcgaXQuCisgICAgLy8gU3Vw
cG9ydCB1cCB0byAxIG1pbGxpb24gYml0cy4KKyAgICBzdGF0aWMgY29uc3QgaW50IE1heExlbmd0
aCA9IDEwMjQgKiAxMDI0IC8gKHNpemVvZih2b2lkKikgKiBCaXRzUGVyQnl0ZSk7CisgICAgCisg
ICAgc3RhdGljIHVpbnQ2NF90IGNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50
IGxlbmd0aCwgaW50IHJhZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2lnbik7CisgICAgCisg
ICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZTbWFsbChFeGVjU3RhdGUqLCBKU0JpZ0ludCogeCwg
RGlnaXQgZGl2aXNvciwgSlNCaWdJbnQqKiBxdW90aWVudCwgRGlnaXQmIHJlbWFpbmRlcik7Cisg
ICAgc3RhdGljIHZvaWQgaW50ZXJuYWxNdWx0aXBseUFkZChKU0JpZ0ludCogc291cmNlLCBEaWdp
dCBmYWN0b3IsIERpZ2l0IHN1bW1hbmQsIGludCwgSlNCaWdJbnQqIHJlc3VsdCk7CisKKyAgICAv
LyBEaWdpdCBhcml0aG1ldGljIGhlbHBlcnMuCisgICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERp
Z2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0U3Vi
KERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpOworICAgIHN0YXRpYyBEaWdpdCBkaWdp
dE11bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGlnaCk7CisgICAgc3RhdGljIERpZ2l0IGRp
Z2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQmIHJlbWFp
bmRlcik7CisgICAgc3RhdGljIERpZ2l0IGRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9u
ZW50KTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSosIEpT
QmlnSW50KiwgaW50IHJhZGl4KTsKKworICAgIGJvb2wgaXNaZXJvKCk7CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFy
dEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpCisgICAgewor
ICAgICAgICBBU1NFUlQobGVuZ3RoID49IDApOworICAgICAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7
CisKKyAgICAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gU2tpcHBpbmcgbGVh
ZGluZyB6ZXJvcworICAgICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykK
KyAgICAgICAgICAgICsrcDsKKworICAgICAgICBpbnQgZW5kSW5kZXggPSBsZW5ndGggLSAxOwor
ICAgICAgICAvLyBSZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgd2hpbGUgKGVuZElu
ZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAgICAgICAgICAg
IC0tZW5kSW5kZXg7CisKKyAgICAgICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOworCisgICAgICAg
IGlmIChwID09IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKGV4ZWMsIHZt
KTsKKworICAgICAgICBpbnQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEw
KTsKKyAgICAgICAgaW50IGxpbWl0YSA9ICdhJyArIChyYWRpeCAtIDEwKTsKKyAgICAgICAgaW50
IGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKKworICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gYWxsb2NhdGVGb3IoZXhlYywgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXN1bHQt
PmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisKKyAgICAgICAgZm9y
IChpbnQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgICAgICB1aW50MzJf
dCBkaWdpdDsKKyAgICAgICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGlt
aXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAgICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChk
YXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0
ID0gZGF0YVtpXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihkaWdpdCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC0+cmlnaHRUcmltKGV4ZWMsIHZtKTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZN
JiwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50KTsKKworICAgIEpTQmlnSW50KiByaWdodFRyaW0o
RXhlY1N0YXRlKiwgVk0mKTsKKworICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IG11
bHRpcGxpZXIsIERpZ2l0IHBhcnQpOworICAgIAorICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZE
YXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6
ZW9mKERpZ2l0KT4oc2l6ZW9mKEpTQmlnSW50KSk7CisgICAgfQorICAgIAorICAgIERpZ2l0KiBk
YXRhU3RvcmFnZSgpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PERpZ2l0Kj4o
Yml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKKyAgICB9CisKKyAg
ICBEaWdpdCBkaWdpdChpbnQgbikKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8
IGxlbmd0aCgpKTsKKyAgICAgICAgRGlnaXQqIGRhdGFQdHIgPSBkYXRhU3RvcmFnZSgpOworICAg
ICAgICByZXR1cm4gZGF0YVB0cltuXTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpZ2l0KGludCBu
LCBEaWdpdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0
aCgpKTsKKyAgICAgICAgRGlnaXQqIGRpZ2l0UHRyID0gZGF0YVN0b3JhZ2UoKTsKKyAgICAgICAg
ZGlnaXRQdHJbbl0gPSB2YWx1ZTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBzaXplRm9y
KGludCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoICogRGlnaXRTaXplOwor
ICAgIH0KKworICAgIGludCBtX2xlbmd0aDsKKyAgICBib29sIG1fc2lnbjsKK307CisKK2lubGlu
ZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUu
YXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1
ZS5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBiYWY0ZGZkLi5kMWY0MzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgpAQCAtMTI5LDYgKzEzMCw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpz
eW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAoaXNDZWxs
KCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKKyAgICAgICAgLy8gRklY
TUU6IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludENvbnN0cnVjdG9yIGFuZCBCaWdJ
bnRQcm90b3R5cGUKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTM1OQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCaWdJbnQoKSk7CiAgICAg
ICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+c3ltYm9sUHJvdG90eXBlKCk7CiAgICAgfQpAQCAtMzc1LDYgKzM3OSwxMyBA
QCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIp
KTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50
KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBkaWdpdCA9IGJpZ0ludC0+dG9TdHJpbmdPbmVEaWdp
dCgpOworICAgICAgICBpZiAoZGlnaXQpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJp
bmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygqZGlnaXQgKyAnMCcpOworICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKCZ2bSwgYmlnSW50LT50b1N0cmluZyhleGVjLCAxMCkpOworICAg
IH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgp
LT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGMyNGVhNWJiLi45ZjM5YTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNBbnlJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTEu
LjU2Mjk1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01Nzgs
NiArNTc5LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29s
IEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmlzQmlnSW50KCk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBA
IC0xMDIwLDYgKzEwMjYsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1
YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYx
LmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAg
ICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmluZyh2MikpOworICAgIGlm
ICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6ZXF1YWxUb0JpZ0ludChhc0JpZ0ludCh2MS5hc0NlbGwoKSksIGFzQmlnSW50KHYyLmFzQ2Vs
bCgpKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxNDM0NmU4Li43NjdlOGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBDb25zdHJ1Y3RU
eXBlIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQogCiBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9s
KCkpCisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxs
LT5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2
ZShleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUKIAogYm9vbCBKU0Nl
bGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlk
ZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgaWYgKGNl
bGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSkgeworICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgewogICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhl
YywgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKICAgICB9CkBAIC0xNTUsNiArMTU1LDggQEAg
SlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBwcmVmZXJyZWRUeXAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOworICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5
cGUpOwogfQogCkBAIC0xNjQsNiArMTY2LDggQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51
bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1p
dGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT5nZXRQcmltaXRp
dmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT5nZXRQcmltaXRp
dmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTT2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZh
bHVlKTsKIH0KIApAQCAtMTczLDYgKzE3Nyw4IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
U3RyaW5nKj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVyKGV4
ZWMpOworICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogfQogCkBAIC0xODEs
NiArMTg3LDkgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY28KICAgICBBU1NFUlQoIWlzT2JqZWN0
KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAv
LyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgSlNCaWdJbnQsIEJpZ0ludENvbnN0
cnVjdG9yIGFuZCBCaWdJbnRQcm90b3R5cGUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzQmlnSW50KCkp
OwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDJlOTE5NzMuLjRkYTc3YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJv
dGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNT
dHJpbmcoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5
bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0
dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgKaW5kZXggNjczNmY1Zi4uODkzNGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBpbmxp
bmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0
cmluZ1R5cGU7CiB9CiAKK2lubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKK30KKwogaW5saW5lIGJvb2wgSlNDZWxs
Ojppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTeW1ib2xUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IGMxYzAzODYuLjZmYTJmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTI2LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJCdWlsdGlu
TmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
KyNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODUzNTZkMy4uNTc3ZDE4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTMzLDYgKzMzLDcg
QEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdUeXBl
LAogICAgIFN5bWJvbFR5cGUsCisgICAgQmlnSW50VHlwZSwKIAogICAgIEN1c3RvbUdldHRlclNl
dHRlclR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCBlOGYzMTZjLi4wZmRjN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC02Niw2ICs2NiwyNSBAQCBp
bmxpbmUgaW50IGNsejMyKHVpbnQzMl90IG51bWJlcikKICNlbmRpZgogfQogCitpbmxpbmUgaW50
IGNsejY0KHVpbnQ2NF90IG51bWJlcikKK3sKKyNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisg
ICAgaW50IHplcm9Db3VudCA9IDY0OworICAgIGlmIChudW1iZXIpCisgICAgICAgIHplcm9Db3Vu
dCA9IF9fYnVpbHRpbl9jbHpsbChudW1iZXIpOworICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZWxz
ZQorICAgIGludCB6ZXJvQ291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSA2MzsgaSA+PSAwOyBp
LS0pIHsKKyAgICAgICAgaWYgKCEobnVtYmVyID4+IGkpKQorICAgICAgICAgICAgemVyb0NvdW50
Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4g
emVyb0NvdW50OworI2VuZGlmCit9CisKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9u
IGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3Rl
IHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4g
dG8gaW50ZXJwcmV0YXRpb24KIC8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1
Y2ggdGhpcyBtZXRob2QgaXMgYWxzbyBjYWxsZWQgdG8gaW1wbGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA1NTBiOGY3
Li5hNjNkMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2lu
Y2x1ZGUgIlBhcnNlSW50LmgiCiAjaW5jbHVkZSAiVWludDE2V2l0aEZyYWN0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMTM5LDkg
KzE0MCw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgZ2V0SW50ZWdlckFyZ3VtZW50SW5S
YW5nZShFeGVjU3RhdGUqIGV4ZWMsIGludCBsb3csIGluCiAvLyBmbyBhbnkgbnVtYmVyIG9mIGRp
Z2l0cyBhbiBJRUVFIG51bWJlciBtYXkgcmVxdWlyZSB0byByZXByZXNlbnQuCiB0eXBlZGVmIGNo
YXIgUmFkaXhCdWZmZXJbMjE4MF07CiAKLS8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0
byBkaWdpdCBpZGVudGlmeWluZyB0aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCi1zdGF0aWMg
Y29uc3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5eiI7Ci0KIHN0YXRpYyBpbmxpbmUgY2hhciogaW50NTJUb1N0cmluZ1dpdGhSYWRpeChj
aGFyKiBzdGFydE9mUmVzdWx0U3RyaW5nLCBpbnQ2NF90IGludDUyVmFsdWUsIHVuc2lnbmVkIHJh
ZGl4KQogewogICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggNmQxMDU1OC4uOTdjZmEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTgyLDYgKzgy
LDggQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5n
cy5zdHJpbmdTdHJpbmcoKTsKICAgICBpZiAodi5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLnN5bWJvbFN0cmluZygpOworICAgIGlmICh2LmlzQmlnSW50KCkpCisg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MuYmlnaW50U3RyaW5nKCk7CiAgICAgaWYgKHYu
aXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7CiAg
ICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0IHNob3VsZCBiZSB0
cmVhdGVkCkBAIC0xMTIsNyArMTE0LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9yTnVsbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsK
IAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09
IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmlu
Z1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAg
aWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNh
bGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAppbmRleCAwMGMxMDQ5Li5mYWRmYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00ODAsNiArNDgwLDcgQEAgY29uc3RleHByIGJvb2wg
ZW5hYmxlQXN5bmNJdGVyYXRpb24gPSBmYWxzZTsKICAgICB2KGJvb2wsIHVzZUNhbGxJQ3NGb3JX
ZWJBc3NlbWJseVRvSlNDYWxscywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ug
Q2FsbExpbmtJbmZvIHRvIGlubGluZSBjYWNoZSBXYXNtIHRvIEpTIGNhbGxzLiIpIFwKICAgICB2
KGJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5nLCBmYWxzZSwgTm9ybWFsLCAi
VW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVudGlmaWVkIGluIGJhY2t0cmFjZXMg
dGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikgXAogICAgIHYoYm9vbCwgdXNlT2Jq
ZWN0UmVzdFNwcmVhZCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgT2Jq
ZWN0IFJlc3QvU3ByZWFkIGZlYXR1cmUuIikgXAorICAgIHYoYm9vbCwgdXNlQmlnSW50LCBmYWxz
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAog
ICAgIHYoYm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5n
LiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBi
ZSB1bmRlY2lkZWQuIilcCiAgICAgdihib29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0
aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QYXJzZUludC5oCmluZGV4IGU0Nzk1ZWMuLmYzMTAxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGFyc2VJbnQuaApAQCAtMjI2LDQgKzIyNiw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKFN0
cmluZ1ZpZXcpCiAgICAgcmV0dXJuIGNhbGxiYWNrKHZpZXdXaXRoU3RyaW5nLnZpZXcpOwogfQog
CisvLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhp
cyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2LgorY29uc3QgY2hhciByYWRpeERpZ2l0c1tdID0gIjAx
MjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA4
NWQ0Y2IxLi44ODUwYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaApAQCAtNDAsNiArNDAsNyBAQAogICAgIG1hY3JvKHVuZGVmaW5lZCkgXAogICAg
IG1hY3JvKHN0cmluZykgXAogICAgIG1hY3JvKHN5bWJvbCkgXAorICAgIG1hY3JvKGJpZ2ludCkg
XAogICAgIG1hY3JvKHRydWUpCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTAzLDYgKzEwNCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICAgY2Fz
ZSBUeXBlb2ZUeXBlOjpGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmlu
ZygpOworICAgICAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgICAgIHJldHVy
biBiaWdpbnRTdHJpbmcoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IGIzY2UwMjkuLjcwNmQwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWU1MjEwNy4uM2JmY2Y1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjAzLDcg
KzIwMyw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRp
dmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICBBU1NFUlQoc3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKLQogfQogCiBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6
OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmNwcAppbmRleCBkYjE2
MmI3Li5hYTNmZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlb2ZUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZU
eXBlLmNwcApAQCAtNTQsNiArNTQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgVHlwZW9mVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAg
ICAgICAgIG91dC5wcmludCgiZnVuY3Rpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
VHlwZW9mVHlwZTo6QmlnSW50OgorICAgICAgICBvdXQucHJpbnQoImJpZ2ludCIpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKaW5kZXggMzMyZmE4
MS4uOTY0ODVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZW9mVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUu
aApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBUeXBlb2ZU
eXBlIHsKICAgICBVbmRlZmluZWQsCisgICAgQmlnSW50LAogICAgIEJvb2xlYW4sCiAgICAgTnVt
YmVyLAogICAgIFN0cmluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAz
ZmYwYWNkLi45YzNlNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02
Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZh
bHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgpAQCAtMzA4LDYgKzMw
OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBoYXNo
TWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVj
a2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHNldEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIG1hcEl0ZXJhdG9yU3RydWN0dXJl
LnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOworICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAKICAgICBzZW50aW5lbFNldEJ1Y2tldC5z
ZXQoKnRoaXMsIEpTU2V0OjpCdWNrZXRUeXBlOjpjcmVhdGVTZW50aW5lbCgqdGhpcykpOwogICAg
IHNlbnRpbmVsTWFwQnVja2V0LnNldCgqdGhpcywgSlNNYXA6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNl
bnRpbmVsKCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmYzkyNjc2
Li5hMzM3M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQwOSw2ICs0MDks
NyBAQCBwdWJsaWM6CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFzaE1hcEJ1Y2tldE1hcFN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBtYXBJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0
dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5
TmFtZUVudW1lcmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gc2VudGluZWxTZXRCdWNrZXQ7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMThiYjM2
MC4uZWM2NWRhZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEyLTA5ICBDYWlvIExpbWEgIDx0aWNhaW9saW1h
QGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQg
bGl0ZXJhbHMgYW5kIEpTQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzkwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTIt
MDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgRml4
IFdURjo6SGFzaGVyIHR1cGxlIGV4cGFuc2lvbiB3aXRoIHZhcmlhZGljIGFyZ3MKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGRkNTcxZTEuLjYwM2M0ZDAgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cwpAQCAtNjE2LDYgKzYxNiwxMCBAQCBkZWYgcnVuRGVmYXVsdCgqb3B0
aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigiZGVmYXVsdCIsICooRlRMX09QVElP
TlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRF
bmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVu
YWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0
U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9O
UyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQK
</data>
<flag name="review"
          id="348077"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329078</attachid>
            <date>2017-12-11 19:35:11 -0800</date>
            <delta_ts>2017-12-12 04:38:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>big-int-base.diff</filename>
            <type>text/plain</type>
            <size>122899</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MTIzNmVmYy4uNGM4YzU3ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0wOSAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1l
bnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9iaWctaW50LXR5cGUtb2YuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXdo
aXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9i
aWctaW50LWZ1bmN0aW9uLWFwcGx5LmpzCisKIDIwMTctMTItMDUgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBkb24ndCBlYWdlcmx5IGNo
ZWNrc3VtCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2JpZ0ludFRlc3RzLnlhbWwgYi9KU1Rlc3RzL2Jp
Z0ludFRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIwNWM5
MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApAQCAtMCwwICsx
LDQ0IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwu
Y29tPi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCAjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRl
ZCB0byBzaW1wbGlmeSBydW5uaW5nIEJpZ0ludCB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIEJp
Z0ludAorIyBhcmUgbm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBh
dGg6IHN0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzCisgIGNtZDogcnVuQmlnSW50RW5hYmxlZAor
CistIHBhdGg6IHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKKyAgY21kOiBydW5CaWdJbnRFbmFi
bGVkCisKKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbC1saW5lLXRlcm1pbmF0b3IuanMK
KyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQtb3BlcmF0
aW9ucy1lcnJvci5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3Mv
YmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFkaW5nLmpzCisgIGNtZDogcnVuQmlnSW50
RW5hYmxlZAorCistIHBhdGg6IHN0cmVzcy9iaWctaW50LWZ1bmN0aW9uLWFwcGx5LmpzCisgIGNt
ZDogcnVuQmlnSW50RW5hYmxlZAorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWZ1bmN0aW9uLWFwcGx5LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1mdW5jdGlvbi1hcHBs
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTg3NWNlCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1mdW5jdGlvbi1hcHBseS5qcwpAQCAt
MCwwICsxLDE4IEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkg
eworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
Cit9CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gMDsKK30KKwordHJ5IHsKKyAgICBm
b28uYXBwbHkoe30sIDJuKTsKKyAgICBhc3NlcnQoZmFsc2UpOworfSBjYXRjaChlKSB7CisgICAg
YXNzZXJ0KGUubWVzc2FnZSA9PSAic2Vjb25kIGFyZ3VtZW50IHRvIEZ1bmN0aW9uLnByb3RvdHlw
ZS5hcHBseSBtdXN0IGJlIGFuIEFycmF5LWxpa2Ugb2JqZWN0IChldmFsdWF0aW5nICdmb28uYXBw
bHkoe30sIDJuKScpIikKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
aXRlcmFsLWxpbmUtdGVybWluYXRvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJh
bC1saW5lLXRlcm1pbmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGFmYjQ5OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJh
bC1saW5lLXRlcm1pbmF0b3IuanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJ1bkJpZ0ludEVuYWJs
ZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCit2YXIgZDsKKworYXNzZXJ0KGV2YWwoImQ9
NW5cdTAwMEEiKSA9PT0gNW4pOworYXNzZXJ0KGQgPT09IDVuKTsKKworYXNzZXJ0KGV2YWwoImQ9
MTVuXHUwMDBEIikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2YWwo
ImQ9MTluXHUyMDI4OyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fzc2VydChl
dmFsKCJkPTk1blx1MjAyOTsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3Nl
cnQoZXZhbCgiZD1cdTAwMEE1biIpID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCithc3Nl
cnQoZXZhbCgiZD1cdTAwMEQxNW4iKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOworCith
c3NlcnQoZXZhbCgiZD1cdTIwMjgxOW47IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0gMTluKTsK
KworYXNzZXJ0KGV2YWwoImQ9XHUyMDI5OTVuOyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1
bik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjZjNDgwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxpdGVyYWxzLmpzCkBAIC0wLDAgKzEsMTEzIEBACisvL0AgcnVuQmlnSW50RW5hYmxl
ZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFRocm93U3ludGF4
RXJyb3IoaW5wdXQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAg
YXNzZXJ0KGZhbHNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3Rh
bmNlb2YgU3ludGF4RXJyb3IpOworICAgIH0KK30KKworLy8gVGVzdCAwIGNvbnZlcnNpb25zCits
ZXQgbiA9IDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworbiA9IDAwbjsKK2Fzc2VydChuID09PSAw
bik7CisKKy8vIEJpbmFyeSByZXByZXNlbnRhdGlvbgorCituID0gMGIxMTExbjsKK2Fzc2VydChu
ID09PSAxNW4pOworCituID0gMGIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCituID0gMGIwMTBu
OworYXNzZXJ0KG4gPT09IDJuKTsKKworbGV0IGJpbmFyeVN0cmluZyA9ICIwYjEiOworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0g
ZXZhbChiaW5hcnlTdHJpbmcgKyAibiIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2
MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1Nm4pOworCituID0gMEIxMTExbjsKK2Fzc2VydChuID09PSAx
NW4pOworCituID0gMEIxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitiaW5hcnlTdHJpbmcgPSAi
MEIxIjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYmluYXJ5U3RyaW5nICs9
ICIwIjsKKworbiA9IGV2YWwoYmluYXJ5U3RyaW5nICsgIm4iKTsKK2Fzc2VydChuID09PSAzNDAy
ODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZuKTsKKworLy8gT2N0YWwgcmVwcmVz
ZW50YXRpb24KKworbiA9IDBvN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gMG8xMG47Cith
c3NlcnQobiA9PT0gOG4pOworCituID0gMG8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9
IDBvMDAwMjBuOworYXNzZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzduOworYXNzZXJ0KG4gPT09
IDduKTsKKworbiA9IDBPMTBuOworYXNzZXJ0KG4gPT09IDhuKTsKKworbiA9IDBPMjBuOworYXNz
ZXJ0KG4gPT09IDE2bik7CisKK24gPSAwTzIwbjsKK2Fzc2VydChuID09PSAxNm4pOworCisvLyBI
ZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbgorCituID0gMHhhbjsKK2Fzc2VydChuID09PSAxMG4p
OworCituID0gMHhmZm47Cithc3NlcnQobiA9PT0gMjU1bik7CisKK24gPSAweDAwMGZmbjsKK2Fz
c2VydChuID09PSAyNTVuKTsKKworbiA9IDB4ZmFiY247Cithc3NlcnQobiA9PT0gNjQxODhuKTsK
KworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGIybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMGIwMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiMW5uIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwbzg5biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG8wOG4iKTsK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvN25uIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCIweGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweDBnbiIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMHhmbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjEwMG5uIik7Cith
c3NlcnRUaHJvd1N5bnRheEVycm9yKCIxYTBubiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MTBFMjBuIik7CisKK3RyeSB7CisgICAgZXZhbCgiLS0xMG4iKTsKKyAgICBhc3NlcnQoZmFsc2Up
OworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcik7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3Iu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlNDdiNwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcwpAQCAtMCwwICsxLDQ0IEBA
CisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICgh
YSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydFRocm93VHlwZUVycm9yKGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZh
bChpbnB1dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgfQorfQorCithc3NlcnQo
ImEiICsgMTAwbiwgImExMDAiKTsKK2Fzc2VydCgxMjhuICsgImJhYmEiLCAiMTI4YmFiYSIpOwor
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuICsgMzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9y
KCIzNiArIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gKyAzMC41Iik7Cithc3Nl
cnRUaHJvd1R5cGVFcnJvcigiNDQuNSArIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBlRXJy
b3IoIjEwbiAtIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgLSAxNW4iKTsKK2Fzc2Vy
dFRocm93VHlwZUVycm9yKCIxMjBuIC0gMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0
LjUgLSAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKiAzMCIpOworYXNz
ZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICogMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIw
biAqIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41ICogMTEyMDM0biIpOworCith
c3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuIC8gMzAiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCIz
NiAvIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gLyAzMC41Iik7Cithc3NlcnRU
aHJvd1R5cGVFcnJvcigiNDQuNSAvIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBlRXJyb3Io
IjEwbiAqKiAzMCIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICoqIDE1biIpOworYXNzZXJ0
VGhyb3dUeXBlRXJyb3IoIjEyMG4gKiogMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjQ0
LjUgKiogMTEyMDM0biIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5
cGUtb2YuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzY2QzMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcwpAQCAtMCwwICsxLDEwIEBACisvL0AgcnVuQmln
SW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlmICghYSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK2Fzc2VydCh0eXBlb2YgMG4g
PT09ICJiaWdpbnQiKTsKK2Fzc2VydCh0eXBlb2YgMW4gIT09ICJvYmplY3QiKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFkaW5n
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC13aGl0ZS1zcGFjZS10cmFpbGluZy1sZWFkaW5n
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMWE3NzYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxl
YWRpbmcuanMKQEAgLTAsMCArMSwxMTEgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0
aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1
dCkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoaW5wdXQpOworICAgICAgICBhc3NlcnQoZmFs
c2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50
YXhFcnJvcik7CisgICAgfQorfQorCit2YXIgZDsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDBDNW4i
KSA9PT0gNW4pOworYXNzZXJ0KGQgPT09IDVuKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDA5MTVu
IikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDBC
MTluXHUwMDBCOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fzc2VydChldmFs
KCJkPVx1MDAwQzExOW47IikgPT09IDExOW4pOworYXNzZXJ0KGQgPT09IDExOW4pOworCithc3Nl
cnQoZXZhbCgiZD1cdTAwMjA5NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKwor
YXNzZXJ0KGV2YWwoImQ9XHUwMEEwNTNuOyIpID09PSA1M24pOworYXNzZXJ0KGQgPT09IDUzbik7
CisKK2Fzc2VydChldmFsKCJkPVx1RkVGRjM5bjsiKSA9PT0gMzluKTsKK2Fzc2VydChkID09PSAz
OW4pOworCithc3NlcnQoZXZhbCgiZD01blx1MDAwQyIpID09PSA1bik7Cithc3NlcnQoZCA9PT0g
NW4pOworCithc3NlcnQoZXZhbCgiZD0xNW5cdTAwMDkiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09
PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD0xOW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQo
ZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9MTE5blx1MDAwQzsiKSA9PT0gMTE5bik7Cith
c3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJkPTk1blx1MDAyMDsiKSA9PT0gOTVu
KTsKK2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiZD01M25cdTAwQTA7IikgPT09
IDUzbik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2YWwoImQ9MzluXHVGRUZGOyIp
ID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKK2Fzc2VydChldmFsKCJcdTAwMENcdTAw
MENkXHUwMDBDXHUwMDBDPVx1MDAwQ1x1MDAwQzVuXHUwMDBDO1x1MDAwQyIpID09PSA1bik7Cith
c3NlcnQoZCA9PT0gNW4pOworCithc3NlcnQoZXZhbCgiXHUwMDA5XHUwMDA5ZFx1MDAwOVx1MDAw
OT1cdTAwMDlcdTAwMDkxNW5cdTAwMDk7IikgPT09IDE1bik7Cithc3NlcnQoZCA9PT0gMTVuKTsK
KworYXNzZXJ0KGV2YWwoIlx1MDAwQlx1MDAwQmRcdTAwMEJcdTAwMEI9XHUwMDBCXHUwMDBCMTlu
XHUwMDBCOyIpID09PSAxOW4pOworYXNzZXJ0KGQgPT09IDE5bik7CisKK2Fzc2VydChldmFsKCJc
dTAwMENcdTAwMENkXHUwMDBDPVx1MDAwQ1x1MDAwQzExOW47IikgPT09IDExOW4pOworYXNzZXJ0
KGQgPT09IDExOW4pOworCithc3NlcnQoZXZhbCgiXHUwMDIwZFx1MDAyMD1cdTAwMjBcdTAwMjA5
NW47IikgPT09IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKworYXNzZXJ0KGV2YWwoIlx1MDBB
MGRcdTAwQTA9XHUwMEEwXHUwMEEwNTNuOyIpID09PSA1M24pOworYXNzZXJ0KGQgPT09IDUzbik7
CisKK2Fzc2VydChldmFsKCJcdUZFRkZkXHVGRUZGPVx1RkVGRlx1RkVGRjM5bjsiKSA9PT0gMzlu
KTsKK2Fzc2VydChkID09PSAzOW4pOworCisvLyBBc3NlcnQgZXJyb3JzCisKK2Fzc2VydFRocm93
U3ludGF4RXJyb3IoIjBiXHUwMDBDMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiXHUw
MDBCMTEwMW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiXHUwMDA5MTExMTExbiIpOwor
YXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMjAxMDEwMW4iKTsKK2Fzc2VydFRocm93U3lu
dGF4RXJyb3IoIjBiXHUwMEEwMTAxMW4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBiXHVG
RUZGMTExMDAwbiIpOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAwQzJuIik7Cith
c3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAwQjQ1biIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiMG9cdTAwMDk3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDIwNzc3
biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG9cdTAwQTAxNzc3biIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMG9cdUZFRkYxNzM2MW4iKTsKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMHhcdTAwMEMybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwMEI0NW4iKTsK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUwMDA5NzduIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIweFx1MDAyMDc3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUwMEEw
MTc3N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHVGRUZGMTczNjFuIik7CisKK2Fz
c2VydFRocm93U3ludGF4RXJyb3IoIjJcdTAwMENuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9y
KCI0NVx1MDAwQm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjc3XHUwMDA5biIpOworYXNz
ZXJ0VGhyb3dTeW50YXhFcnJvcigiNzc3XHUwMDIwbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMTc3N1x1MDBBMG4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjE3MzYxXHVGRUZGbiIp
OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzZDA3ZjdjLi5mZWVlZGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTYgQEAKKzIwMTctMTItMDkgIENhaW8gTGlt
YSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1w
bGVtZW50IEJpZ0ludCBsaXRlcmFscyBhbmQgSlNCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBCaWdJbnQgcHJpbWl0aXZlIG9uCisgICAgICAgIEphdmFTY3JpcHRDb3JlLiBX
ZSBhcmUgaW50cm9kdWNpbmcgQmlnSW50IHByaW1pdGl2ZSBhbmQKKyAgICAgICAgaW1wbGVtZW50
aW5nIGl0IG9uIEpTQmlnSW50IGFzIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIHdpdGggW1tCaWdJbnRE
YXRhXV0KKyAgICAgICAgZmllbGQgaW1wbGVtZW50ZWQgY29udGlndW9zbHkgb24gbWVtb3J5IGFz
IGlubGluZSBzdG9yYWdlIG9mIEpTQmlnSW50IHRvCisgICAgICAgIHRha2UgYWR2YW50YWdlcyBv
biBwZXJmb3JtYW5jZSBkdWUgdG8gY2FjaGUgbG9jYWxpdHkuIFRoZQorICAgICAgICBpbXBsZW1l
bnRhdGlvbiBhbGxvd3MgNjQgb3IgMzIgYml0d2lzZSBhcml0aG1ldGljIG9wZXJhdGlvbnMuCisg
ICAgICAgIEpTQmlnSW50IGFsc28gaGFzIG1fc2lnbiB0byBzdG9yZSB0aGUgc2lnbiBvZiBbW0Jp
Z0ludERhdGFdXSBhbmQKKyAgICAgICAgbV9sZW5ndGggdGhhdCBrZWVwcyB0cmFjayBvZiBCaWdJ
bnQgbGVuZ3RoLgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgZm9sbG93aW5nIHRoZSBW
OCBvbmUuIFtbQmlnSW50RGF0YV1dIGlzIG1hbmlwdWxhdGVkCisgICAgICAgIGJ5IEpTQmlnSW50
OjpzZXREaWdpdChpbmRleCwgdmFsdWUpIGFuZCBKU0JpZ0ludDo6ZGlnaXQoaW5kZXgpIG9wZXJh
dGlvbnMuCisgICAgICAgIFdlIGFsc28gaGF2ZSBzb21lIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBh
cml0aG1ldGljcyBvdmVyIGRpZ2l0cy4KKworICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90
aWNlIHRoYXQgb24gb3VyIHJlcHJlc2VudGF0aW9uLAorICAgICAgICBKU0JpZ0ludDo6ZGF0YVN0
b3JhZ2UoKVswXSByZXByZXNlbnRzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdCBhbmQKKyAg
ICAgICAgSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKClbbV9sZW5ndGggLSAxXSByZXByZXNlbnRzIHRo
ZSBtb3N0IHNpZ2luaWZpY2FudCBkaWdpdC4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBpbnRvIHRoaXMgUGF0Y2ggdGhlIEJpZ0ludCBsaXRlcmFscyBsZXhlciBhbmQKKyAgICAg
ICAgc3ludGF4IHBhcnNpbmcgc3VwcG9ydC4gVGhlIG9wZXJhdGlvbiBTdHJpY3QgRXF1YWxzIG9u
IEJpZ0ludHMgaXMgYWxzbyBiZWluZworICAgICAgICBpbXBsZW1lbnRlZCB0byBlbmFibGUgdGVz
dHMuCisgICAgICAgIFRoZXNlIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiZWhpbmQg
YSBydW50aW1lIGZsYWdlICItLXVzZUJpZ0ludCIgYW5kCisgICAgICAgIGFyZSBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCaWdJbnRFbnRyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6QmlnSW50RW50cnlIYXNoOjplcXVhbCk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OmpzVmFs
dWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToK
KyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0
YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUJpZ0ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlQmluYXJ5KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VD46OnBhcnNlT2N0YWwpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKToK
KyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZUhleCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6Qmln
SW50Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJl
c3Npb25Ob2RlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpZ0ludE5vZGU6OnZh
bHVlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAo
SlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpSZXN1bHRUeXBlOjptaWdodEJlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6aXNOb3RCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjphZGRS
ZXN1bHRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6YmlnSW50VHlwZSk6CisgICAg
ICAgIChKU0M6OlJlc3VsdFR5cGU6OmZvckFkZCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6
OmZvckxvZ2ljYWxPcCk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQmlnSW50KToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpKU0JpZ0ludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojppbml0aWFs
aXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpjcmVhdGVaZXJvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpwYXJz
ZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZyk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50Ojppc1plcm8pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5wbGFjZU11bHRp
cGx5QWRkKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0QWRkKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmRpZ2l0U3ViKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0TXVs
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0UG93KToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmRpZ2l0RGl2KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmludGVybmFsTXVsdGlw
bHlBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxUb0JpZ0ludCk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJpZ2h0
VHJpbSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphbGxvY2F0ZUZvcik6CisgICAgICAgIChK
U0M6OkpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRv
TnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmdldFByaW1pdGl2ZU51bWJl
ciBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OnNldFNpZ24pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2lnbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNl
SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Om9mZnNldE9mRGF0YSk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjpkYXRhU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdp
dCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzZXREaWdpdCk6CisgICAgICAgIChKU0M6OmFz
QmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0
cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVj
dFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNCaWdJbnQgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9NYXRo
Q29tbW9uLmg6CisgICAgICAgIChKU0M6OmNsejY0KToKKyAgICAgICAgKiBydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0
VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVu
dGltZS9QYXJzZUludC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAg
ICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dHlwZVN0cmluZyBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1
cFByaW1pdGl2ZUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZW9mVHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0xMi0wNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEluZmVycmVkVHlwZSBzaG91bGQgbm90IHVzZSBVbmNvbmRp
dGlvbmFsRmluYWxpemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwOTQ2M2Eu
LmMxYmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MDUsNyArODA1LDcg
QEAKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJG
OTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNv
dXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUw
MEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87
IH07Ci0JCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0Yy
QjBCIC8qIFBhcnNlSW50LmggKi87IH07CisJCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQ
YXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUyNzcxRDJDRjZCQzAwRTc4Qjg5
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMw
MEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEyOTUy
NzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEyOTUyNzQxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2lu
dGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMjk1Mjc5MUQyQ0Y2QkMwMEU3OEI4OSAvKiBi
dWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWls
dGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE0Miw2ICsxMTQyLDcgQEAKIAkJODY3MDRCODgx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4
NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIx
QzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJl
c3VsdFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFE
RDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZF
RUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY3OCw2ICszNjc5LDggQEAKIAkJODY4ODBGMUIxNDMy
OEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGgg
PSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmln
SW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmlnSW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0Jp
Z0ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JpZ0ludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3Vs
dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZBMDU0NDYxNTU2NDUxQjAw
NDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5hc207IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZBMDU0NDcxNTU2NDUxQjAwNDQ1MTU3
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcg
PSAwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NDk0LDkgKzY0OTcsOSBAQAogCQkJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3NEU3NSAvKiBJbml0
aWFsaXplVGhyZWFkaW5nLmggKi8sCiAJCQkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8sCiAJCQkJRTM1RTAzNUUxQjdBQjQz
RTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovLAotCQkJCUE3
QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQzE3
QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJCUE3QThBRjJEMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0
IC8qIEludDhBcnJheS5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRl
cm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50
ZXJuYWxGdW5jdGlvbi5oICovLAogCQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRs
Q29sbGF0b3IuY3BwICovLApAQCAtNjU0NCw2ICs2NTQ3LDggQEAKIAkJCQk1QjcwQ0ZEODFEQjY5
RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJOEJDMDY0ODcxRTFBNTgz
RjAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJCQkJOEJDMDY0
ODgxRTFBNTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAorCQkJ
CTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4OTIx
QzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIy
RDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIy
RTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIw
MDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC02NTk1LDkgKzY2MDAsOSBAQAogCQkJCUJD
NzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi8s
CiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmggKi8sCiAJCQkJNzlCODE5OTIxREQyNUNGNTAwRERDNzE0IC8qIEpTR2xvYmFsT2JqZWN0SW5s
aW5lcy5oICovLAotCQkJCTBGMkI2NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5o
ICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywK
IAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5LmggKi8sCisJCQkJ
MEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggKi8sCiAJCQkJRTMzRjUw
N0UxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmNwcCAqLywKIAkJCQlFMzNG
NTA3RjFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCAqLywKIAkJCQlFMzNG
NTA3NjFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAg
Ki8sCkBAIC02Njg2LDEwICs2NjkxLDEwIEBACiAJCQkJNTNGMjU2RTExQjg3RTI4MDAwQjRCNzY4
IC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwICovLAogCQkJCTUzOTE3RTdDMUI3OTEx
MDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8sCiAJCQkJNjUwN0Qy
OTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAqLywKLQkJCQkwRjJCNjZEMjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5LmggKi8sCi0JCQkJMEYyQjY2RDMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQkwRjJCNjZENDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oICovLAogCQkJCTBGMkI2NkQ1MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8sCisJCQkJMEYyQjY2RDIxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVWludDhBcnJheS5oICovLAorCQkJCTBGMkI2NkQzMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8q
IEpTV2Vha01hcC5jcHAgKi8sCiAJCQkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vh
a01hcC5oICovLAogCQkJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3Bw
ICovLApAQCAtNjkwMywxMSArNjkwOCwxMSBAQAogCQkJCTBGMkQ0REUwMTk4MzJEOTEwMDdENEIx
OSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLywKIAkJCQkwRjJENERFMzE5ODMyRDkxMDA3RDRCMTkg
LyogVHlwZVNldC5jcHAgKi8sCiAJCQkJMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVT
ZXQuaCAqLywKLQkJCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICov
LAotCQkJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICov
LAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJ
CTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLywKIAkJ
CQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4
QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovLAorCQkJCUE3QThBRjMxMTdB
REI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCTBGRTA1MDIzMUFB
OTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovLAogCQkJCTBGRTA1MDI0MUFBOTA5NTYw
MEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLywKIAkJCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQg
LyogVk0uY3BwICovLApAQCAtODAzOSw3ICs4MDQ0LDYgQEAKIAkJCQkwRkVDODU4ODFCREFDREM3
MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1Q0Y5ODkxRTlF
RDY1MjAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1OEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNrU2xvdC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY0MTU0NUIxRkQyMEIyMjAwMUI1OEY2IC8qIENvbnN0cmFpbnRDb25jdXJyZW5jeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkJEOUUxQzVGRjQwNTAwMjNFRjIzIC8qIEFpclN0YWNr
U2xvdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NThFMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJUbXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NThGMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJUbXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTAsNyArODA1NCw5IEBACiAJ
CQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9j
YXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAx
IC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0Ex
RDQxOTJDODAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JGb3JNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjM3MzA5MTFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5
OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTgwNTgsMTQgKzgwNjQsMTIgQEAKIAkJCQk1MzUyOUE0QzFDNDU3Qjc1MDAw
QjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjYwNTE0MEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAxNDFBQTkwOTEx
MDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZCRjkyQkEx
RkQ3NzAwNDAwQUMyOEE4IC8qIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzlBMjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJN
NjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVF
NyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQx
NzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZE
Q0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQg
LyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5OUQ1MTg0RUUzMTgwMDlD
MTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtODExNSwxMCArODExOSw4IEBACiAJCQkJMEYzMzhERkExQkU5NkFBODAwMTNDODhGIC8qIEIz
Q0NhbGxWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3
IC8qIEIzQ0ZHLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNjFCREFDREFDMDA4MEZGNzQg
LyogQjNDaGVja1NwZWNpYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMkIwQjczMUZEOUVGNzAw
MDc1REE1RiAvKiBKU0NQb2lzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTA4MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTBB
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0Ux
MkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODUwQzFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2aXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjMzOEUwQzFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzkxOUI3ODAxRTAzNTU5QzAwNUJFRUQ4IC8qIEIzQ29tcGlsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MTcwLDcgKzgxNzIsNiBAQAogCQkJCTBGRUM4NTJBMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzczMDhEMUMw
QkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUyQzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NQb2lzb25lZFB0ci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUExQzUwM0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNT
RS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MjJBNjcxQzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVk
dWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjQzLDcgKzgyNDQsNiBAQAog
CQkJCTY1MTRGMjE5MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEY0RDhDNzUxRkM3QTk3RDAwMUQzMkFDIC8qIENvbnN0cmFpbnRQ
YXJhbGxlbGlzbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCODM5MkUxQkFDQUQzNjAwNDRFODI0
IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M2MDFGMzc5RjUz
MDBGNTlCNkMgLyogQ2FnZWRCYXJyaWVyUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
RDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtODI4OCw2
ICs4Mjg4LDcgQEAKIAkJCQk2NTUzQTMzMjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFMzkxNDFBQjE0RDAwMTc5
Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3
OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREIyQ0VBMTc0ODk2QzcwMDdCM0MxQiAvKiBDb25j
dXJyZW50SlNMb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTgyOTksNiArODMwMCw4IEBACiAJCQkJ
QTU1NzE0QkUxQ0Q4MDQ5RjAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1RkQwMDc0MTg5QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xlVHlwZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDE1NDVCMUZEMjBCMjIwMDFCNThGNiAvKiBDb25zdHJhaW50
Q29uY3VycmVuY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNEQ4Qzc1MUZDN0E5N0QwMDFEMzJB
QyAvKiBDb25zdHJhaW50UGFyYWxsZWxpc20uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTM0
MUUyOTcwRDcwMDk1OTUxQiAvKiBDb25zdHJhaW50Vm9sYXRpbGl0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDM0Y2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb25zdHJ1Y3REYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTgzMzcsNyArODM0MCw2IEBACiAJCQkJQTc3QTQyM0UxN0Ew
QkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcw
NEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2NDUzMTgxRkQyNDZBNzAwMjQz
MkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEM0U0MDIxQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxOEQzRDAxQjU1
QTZFMDAwMkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NTQ3LDcgKzg1NDksNiBAQAogCQkJCUE1NDk4MjA0MTg5MUQwQjAwMDgxRTVC
OCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUMwRkZEMUIxOTNFOTgwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjAyOUQ5MUQ2RTFFNEYw
MDMwMjA0RCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlvbkZ1enouaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBFeGNlcHRpb25IZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhGMDFEMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtODYzNCw3ICs4NjM1LDYgQEAKIAkJCQkw
RjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFGMTdCNkI1NDUwMEE3
QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGQkY5MkI5MUZENzZGRkYwMEFDMjhBOCAvKiBJbmZlcnJlZFN0cnVjdHVyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5NzE1MzExRUIyOEJFRTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjAxOEJGRkJCQjAwNTU2RDI4IC8qIEdDU2VnbWVu
dGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtODY2NSw3ICs4NjY1LDYgQEAKIAkJCQlDNDcw
M0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJz
ICovLAogCQkJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRENF
MTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MEI3OTE5RDFDMDI0QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMTkxQUE5MDkxMTAwRDMzQjMz
IC8qIEdlbmVyaWNBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLApAQCAtODY5Miw2ICs4NjkxLDcg
QEAKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjA3MEE0OTFENTQzQTkzMDA2RTcyMzIgLyogSGVhcENlbGxJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkRDRTEyMjFGQUU4NThDMDA2RjM5MDEgLyogSGVhcENlbGxUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDQUVGRjFFQzREQTg4MDA5NzBEMTIgLyogSGVhcEZp
bmFsaXplckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMyQkQxMTFCQjM0RjE5MDA5
M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyREE3NzgzMThF
MjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzEyLDYg
Kzg3MTIsOCBAQAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRl
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAv
KiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Mzg2QTc5MURENjk4OUMwMDg2
NTJDNCAvKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkJG
OTJCOTFGRDc2RkZGMDBBQzI4QTggLyogSW5mZXJyZWRTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGQkY5MkJBMUZENzcwMDQwMEFDMjhBOCAvKiBJbmZlcnJlZFN0cnVjdHVyZVdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEE3NTIzMUI5NEJGQTkwMDExMDY2MCAvKiBJ
bmZlcnJlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5MjEyMUI5NEQ0REYwMDcxREQ2
NiAvKiBJbmZlcnJlZFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0
Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtODc3Myw2
ICs4Nzc1LDggQEAKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJ
bnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU0MUU1M0JEMjkwMDIxM0Y2NCAv
KiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEz
MjFGQjExREE0MDA2RjM5MDEgLyogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZEQ0UxMkQxRkFGQjRFNTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QjlGNkQ1NjFENTkxMkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1QjgxQUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJh
dGlvblN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxMTNENEMxQThEQjA5MzAwMzg0OEM0
IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODE0LDEzICs4ODE4
LDEzIEBACiAJCQkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTcxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkU5MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEY5REFBMDkxRkQxQzNDRjAwNzlDNUIyIC8qIE1hcmtpbmdDb25zdHJhaW50U29sdmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBG
QTEgLyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVCNzBDRkRFMURCNjlF
NjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCThCQzA2
NDg5MUUxQUJBNjQwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDE4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5k
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFBMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
ODg0Miw2ICs4ODQ2LDkgQEAKIAkJCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250
ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVF
MTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDhDRDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkUyQjBCNzMxRkQ5RUY3MDAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVk
UHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlND
U2NyYW1ibGVkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MkFBRjdDRTFE
MEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCBpbiBI
ZWFkZXJzICovLApAQCAtODkwMiw3ICs4OTA5LDYgQEAKIAkJCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDk3MjI3
NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRThEMUQxQjkwMTND
MzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04
OTMyLDEzICs4OTM4LDEzIEBACiAJCQkJQTc5MERENzAxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAv
KiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3REYxM0YxRTJBRkM0RDAw
OTU5NTFCIC8qIEpTU3RyaW5nSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUZE
NkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJp
bmdSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZB
M0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjdERjEzRjFF
MkFGQzREMDA5NTk1MUIgLyogSlNTdHJpbmdIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZFQTFGNzVBRDZBMDAwQkNBQUYg
LyogSlNUb1dhc20uaCBpbiBIZWFkZXJzICovLApAQCAtODk2Myw3ICs4OTY5LDYgQEAKIAkJCQlB
NzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCMjg2QjFFQjhFNkNGMDAw
RUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0RDhDNzQxRkM3
QTk3QTAwMUQzMkFDIC8qIFZpc2l0Q291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4
NjgxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ1
QzM2RUIxRjc1QUQ3MzAwMEJDQUFGIC8qIEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFEOUU4NTJGMUU4QTBDN0MwMDhERTM5RSAvKiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgg
aW4gSGVhZGVycyAqLywKQEAgLTkwMzksNyArOTA0NCw5IEBACiAJCQkJMEY3REYxMzUxRTI5NzBE
QzAwOTU5NTFCIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
NjBFMzgxRTA1MTdCQjAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY2MEUzQTFFMDUxN0MxMDAzMTQ2MkMgLyogTWFya2luZ0NvbnN0cmFpbnRTZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOURBQTA5MUZEMUMzQ0YwMDc5QzVCMiAvKiBNYXJraW5n
Q29uc3RyYWludFNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIxMzUzOUE0MTAw
QjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NDUzMTgxRkQyNDZB
NzAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzNDBBNDg1MUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05MDgzLDcgKzkwOTAsNiBAQAogCQkJCUUzQzI5NUREMUVEMkNCREEw
MEQzMDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEM0U0MEExQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzRTQwQzFCNjE4QjY2MDBDODBFMUUg
LyogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNEQ4
Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NDYwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdFByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpT
U3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyog
T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTkwOTEsNiArOTA5Nyw3IEBACiAJCQkJQTcwNDQ3
RUExN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VBZGFwdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M3MzhEMjFFREI1NkU0MDAzRjJCMEIgLyogUGFyc2VJ
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDRCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJz
ZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjEwLDYgKzkyMTcsNyBAQAogCQkJCURDMTdF
ODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFu
YWx5emVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyog
U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdC
NkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjE2MEZFNzE1RjdFOTVFMDA5NDJERkMgLyogU2xvdFZpc2l0b3JJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTEsNyArOTI5OSw2IEBACiAJCQkJMEY5NTJBQkQx
QjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjcwNjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjcwODE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOURBQTBBMUZEMUMzRDMwMDc5QzVCMiAvKiBQ
YXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEI5NERDMTdCOUYw
NzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY3MDkxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjcwQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTMwMSw3ICs5MzA4LDYgQEAKIAkJCQkwRkZCNkMzOTFBRjQ4RERDMDBEQjFCRjcg
LyogVHlwZW9mVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDOTUyQjcxOUEyODk4NTAwNjlC
Mzg2IC8qIFR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERUMxOTgzMkRD
NDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0Ux
MjIxRkFFODU4QzAwNkYzOTAxIC8qIEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRjQyNzQxMTU4RUJFOEQwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmggaW4gSGVhZGVycyAq
LywKQEAgLTkzMzIsNiArOTMzOCw3IEBACiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFB
QTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0
OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMgLyogVmlzaXRDb3VudGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjk1MkFBMTFERjc4NjA5MDBFMDZGQkQgLyogVmlzaXRSYWNlS2V5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQyMDBFMTZGNUNEMDBCMzQ0NjAgLyogVk0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVjb3JkLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA2MDRjMzk5Li5iMWQ2
YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03NzIsNiArNzcyLDcgQEAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5jcHAKIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb24uY3BwCitydW50aW1lL0pTQmlnSW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50aW1lL0pTQ1BvaXNvbmVkUHRy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCA4NTAyOTQ0Li4yZDIxMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDI1
YjY0YmQuLjc0ZjdlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Jp
Z0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXku
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNzg0LDYgKzE3ODUsMTQgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKE9wY29kZUlEIG9wY29kZUlE
LCBSZWdpc3RlcklEKiBkc3QKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
U3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50
IikgeworICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3AoKTsKKyAgICAgICAgICAgICAgICBl
bWl0T3Bjb2RlKG9wX2lzX2NlbGxfd2l0aF90eXBlKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoc3JjSW5kZXgpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAg
ICAgcmV3aW5kVW5hcnlPcCgpOwogICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfb2Jq
ZWN0X29yX251bGwpOwpAQCAtMzEyMSw2ICszMTMwLDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZHN0
OwogfQogCitKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudChjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50OF90IHJhZGl4KQoreworICAgIHJldHVybiBt
X2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRlbnRpZmllci5pbXBsKCksIHJhZGl4
KSwgWyZdIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNl
SW50KG51bGxwdHIsICp2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCk7CisgICAgICAg
IC8vIEZJWE1FOiBbRVNOZXh0XSBFbmFibGVzIGEgd2F5IHRvIHRocm93IGFuIGVycm9yIG9uIEJ5
dGVDb2RlR2VuZXJhdG9yIHN0ZXAKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDEzOQorICAgICAgICBSRUxFQVNFX0FTU0VSVChiaWdJbnRJbk1h
cCk7CisgICAgICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOworCisgICAgICAgIHJl
dHVybiBiaWdJbnRJbk1hcDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisKIEpTU3RyaW5n
KiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikKIHsKICAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAu
YWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggZTk1MzRiYi4uMDgzZjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgog
I2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTQ2LDYgKzQ3LDggQEAKICNpbmNsdWRlICJVbmxp
bmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEw
MDAsMTAgKzEwMDMsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVD
YWxsZWVTYXZlU3BhY2UoKTsKICAgICAgICAgdm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwog
Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+IE51bWJlck1hcDsKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVu
dGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclN0cmluZ01hcDsKLSAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiwgUmVnaXN0ZXJJRCo+IFRlbXBsYXRlUmVnaXN0
cnlLZXlNYXA7Ci0gICAgICAgIAorICAgICAgICB1c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0ZDo6
cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIHVpbnQ4X3Q+OworICAgICAgICBzdHJ1Y3QgQmlnSW50
RW50cnlIYXNoIHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEJpZ0ludE1hcEVu
dHJ5IGtleSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUhh
c2goa2V5LmZpcnN0LT5leGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgpLCBrZXkuc2Vjb25kKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
QmlnSW50TWFwRW50cnkgYSwgQmlnSW50TWFwRW50cnkgYikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1h
cDxkb3VibGUsIEpTVmFsdWU+OworICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0g
SGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+
OworICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBF
bnRyeSwgSlNCaWdJbnQqLCBCaWdJbnRFbnRyeUhhc2g+OworICAgICAgICB1c2luZyBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5TWFwID0gSGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lz
dGVySUQqPjsKKwogICAgICAgICAvLyBIZWxwZXIgZm9yIGVtaXRDYWxsKCkgYW5kIGVtaXRDb25z
dHJ1Y3QoKS4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBzZXQgb2YKICAgICAgICAgLy8gZXhwZWN0
ZWQgZnVuY3Rpb25zIGhhdmUgaWRlbnRpY2FsIGJlaGF2aW9yIGZvciBib3RoIGNhbGwgYW5kIGNv
bnN0cnVjdAogICAgICAgICAvLyAoaS5lLiAiT2JqZWN0KCkiIGlzIGlkZW50aWNhbCB0byAibmV3
IE9iamVjdCgpIikuCkBAIC0xMDg2LDYgKzExMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICAgICAgSlNWYWx1ZSBhZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlm
aWVyJiwgdWludDhfdCByYWRpeCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlUmVn
aXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4mJik7CiAKICAgICAgICAg
VmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgaW5z
dHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTExODUsNiArMTIwNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RW5jb2RlZEpTVmFs
dWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNl
bnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cz4g
SlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1hcCBtX2pzVmFsdWVNYXA7CiAgICAgICAgIElk
ZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7CisgICAgICAgIElkZW50aWZpZXJCaWdJbnRN
YXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAgbV90ZW1wbGF0
ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0
aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1Y3Rpb25zIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMjM1YWE2
Yi4uN2YzZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTIyLDYgKzEyMiwxMSBAQCBKU1ZhbHVlIFN0cmluZ05v
ZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmFkZFN0cmluZ0NvbnN0YW50KG1fdmFsdWUpOwogfQogCitKU1ZhbHVlIEJp
Z0ludE5vZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZEJpZ0ludENvbnN0YW50KG1fdmFsdWUsIG1fcmFkaXgp
OworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIE51bWJlck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZjY4ZWFkZi4uNjVhYjhhYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNB
bklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAg
ICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5t
X3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewog
ICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAg
ICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlw
ZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBl
LmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9
PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwogICAgICAgICAgICAg
aWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3Qo
KSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mv
c3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM1ZTg0YTUuLmRjMjk0ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtMjAyLDYgKzIwMiw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6CisgICAgY2FzZSBC
aWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgIGFyZ3VtZW50
cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCmluZGV4IGFkODY5ZjIuLjRjZjhjNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNf
aGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogCiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRz
ID0gMHgxMjAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDQ4MDAwMDsKICAgICAgICAg
VU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwog
ICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNTRVJUKEFyaXRo
UHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsK
ICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyMjAwMDA7CisgICAgICAg
IHVpbnQzMl90IGJpdHMgPSAweDg4MDAwMDsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwog
ICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUu
bGhzU2F3TnVtYmVyKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNz
ZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6OmZyb21JbnQoYml0
cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgdWludDMyX3QgYml0cyA9IDB4MjQwMDAwOworICAgICAgICB1aW50MzJfdCBiaXRzID0gMHg5
MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwpAQCAt
MTk3LDcgKzE5Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAg
ICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09ic2VydmVkVHlwZSgp
LmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0g
MHgxNDAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDUwMDAwMDsKICAgICAgICAgVU5V
U0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAg
ICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmNGQzNjAwLi40ZTJi
ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0yNTMsMTIgKzI1MywxMiBAQCBjb25zdCBJc0ludmFsaWRhdGVkID0g
Y29uc3RleHByIElzSW52YWxpZGF0ZWQKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0g
Y29uc3RleHByIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKICMgQXJp
dGhQcm9maWxlIGRhdGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IDB4MTAwMDAwCi1jb25zdCBB
cml0aFByb2ZpbGVJbnRJbnQgPSAweDEyMDAwMAotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0g
MHgyMDAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IDB4MjIwMDAwCi1jb25zdCBB
cml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSAweDI0MDAwMAotY29uc3QgQXJpdGhQcm9maWxlSW50
TnVtYmVyID0gMHgxNDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9IDB4NDAwMDAwCitjb25z
dCBBcml0aFByb2ZpbGVJbnRJbnQgPSAweDQ4MDAwMAorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVy
ID0gMHg4MDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IDB4ODgwMDAwCitjb25z
dCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSAweDkwMDAwMAorY29uc3QgQXJpdGhQcm9maWxl
SW50TnVtYmVyID0gMHg1MDAwMDAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogaWYg
SlNWQUxVRTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IGFiOTU2MTMuLjNhZDM4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCkBAIC0yMzIsNiArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgaW5jQ29uc3RhbnRz
KCk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEludGVnZXJOb2RlKGxvY2F0
aW9uLCBkKTsKICAgICB9CisgICAgCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJpZ0ludChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBiaWdJbnQs
IHVpbnQ4X3QgcmFkaXgpCisgICAgeworICAgICAgICBpbmNDb25zdGFudHMoKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlnSW50Tm9kZShsb2NhdGlvbiwgKmJpZ0ludCwg
cmFkaXgpOworICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNmVlNmM1ZC4uNTBh
M2I5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8
d3RmL2R0b2EuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNTAwLDcgKzE1MDEsNyBAQCB0eXBl
bmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVM
aXRlcmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19J
TkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZ
U19JTkxJTkUgVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiBMZXhlcjxUPjo6cGFy
c2VIZXgoKQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2YWx1ZXMg
Zml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0xNTEyLDEw
ICsxNTEzLDggQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUm
IHJldHVyblZhbHVlKQogICAgICAgICAtLW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNB
U0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlm
IChtYXhpbXVtRGlnaXRzID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoTElLRUxZKG1heGltdW1EaWdpdHMgPj0g
MCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIGhleFZhbHVlOwogCiAgICAg
Ly8gTm8gbW9yZSBwbGFjZSBpbiB0aGUgaGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1
ZXMgYXJlIHNoaWZ0ZWQgb3V0IGFuZCBwbGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4K
QEAgLTE1MzMsMTEgKzE1MzIsMTQgQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJz
ZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAg
IHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZl
cjguc2l6ZSgpLCAxNik7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYm
IG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gbWFrZUlkZW50aWZpZXIobV9idWZm
ZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgCisgICAgcmV0dXJuIHBhcnNlSW50
T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VC
aW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxW
YXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VCaW5hcnko
KQogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBiaW5hcnkgdmFsdWVzIGZpdCBpbnRvIDQg
Ynl0ZXMuCiAgICAgdWludDMyX3QgYmluYXJ5VmFsdWUgPSAwOwpAQCAtMTU1NCwxMCArMTU1Niw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1
cm5WYWx1ZSkKICAgICAgICAgLS1kaWdpdDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGln
aXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1f
Y3VycmVudCkgJiYgZGlnaXQgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IGJpbmFyeVZh
bHVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJ
SURpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAg
ICAgICAgcmV0dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBiaW5hcnlW
YWx1ZSB9OwogCiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7
IC0taSkKICAgICAgICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAtMTU2NywxNyArMTU2NywxNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJu
VmFsdWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQVNDSUlEaWdpdCht
X2N1cnJlbnQpKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9j
dXJyZW50ID09ICduJykpCisgICAgICAgIHJldHVybiBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRl
bnRpZmllcio+IHsgbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNp
emUoKSkgfTsKIAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjgu
ZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
aXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiB7IHBhcnNlSW50
T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMikgfTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNl
T2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxW
YXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VPY3RhbCgp
CiB7CiAgICAgLy8gT3B0aW1pemF0aW9uOiBtb3N0IG9jdGFsIHZhbHVlcyBmaXQgaW50byA0IGJ5
dGVzLgogICAgIHVpbnQzMl90IG9jdGFsVmFsdWUgPSAwOwpAQCAtMTU5NCwxMCArMTU5NCw5IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZh
bHVlKQogICAgICAgICAtLWRpZ2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlPY3RhbERpZ2l0KG1f
Y3VycmVudCkgJiYgZGlnaXQgPj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJl
bnQpICYmIGRpZ2l0ID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBvY3RhbFZhbHVlOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0
KG1fY3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBvY3RhbFZhbHVlIH07
CisKIAogICAgIGZvciAoaW50IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkp
CiAgICAgICAgICByZWNvcmQ4KGRpZ2l0c1tpXSk7CkBAIC0xNjA3LDE3ICsxNjA2LDE3IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVl
KQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJy
ZW50KSkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVu
dCA9PSAnbicpKQorICAgICAgICByZXR1cm4gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZp
ZXIqPiB7IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkp
IH07CiAKLSAgICByZXR1cm5WYWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEo
KSwgbV9idWZmZXI4LnNpemUoKSwgOCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVND
SUlEaWdpdChtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBwYXJzZUludE92ZXJm
bG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpIH07CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2lt
YWwoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxWYXJp
YW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+PiBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkK
IHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1vc3QgZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBi
eXRlcy4KICAgICB1aW50MzJfdCBkZWNpbWFsVmFsdWUgPSAwOwpAQCAtMTYzOCwxMCArMTYzNyw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0
dXJuVmFsdWUpCiAgICAgICAgICAgICAtLWRpZ2l0OwogICAgICAgICB9IHdoaWxlIChpc0FTQ0lJ
RGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgICAgICBpZiAoZGlnaXQgPj0g
MCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmIChtX2N1cnJlbnQgfCAweDIwKSAhPSAnZScpIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gZGVjaW1hbFZhbHVlOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9
ICcuJyAmJiAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICdlJykgJiYgbV9j
dXJyZW50ICE9ICduJykKKyAgICAgICAgICAgIHJldHVybiBWYXJpYW50PGRvdWJsZSwgY29uc3Qg
SWRlbnRpZmllcio+IHsgZGVjaW1hbFZhbHVlIH07CiAKICAgICAgICAgZm9yIChpbnQgaSA9IG1h
eGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAgICAgICAgICAgIHJlY29yZDgoZGln
aXRzW2ldKTsKQEAgLTE2NTEsOCArMTY0OCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8
VD46OnBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICByZWNvcmQ4KG1f
Y3VycmVudCk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQorICAgIAorICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBtX2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0
dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBtYWtlSWRlbnRpZmllciht
X2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSB9OwogCi0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpA
QCAtMjEwMCwxMCArMjEwMCwzMCBAQCBzdGFydDoKICAgICAgICAgICAgIHRva2VuID0gRE9UOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZ290byBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OworICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Cisg
ICAgICAgIHRva2VuID0gRE9VQkxFOworICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX2N1cnJlbnQsICdlJykpIHsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRl
ckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0
b3IiKTsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7
CisgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOworICAgICAgICB0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgcGFyc2VkTGVuZ3RoKTsKKyAgICAgICAgaWYgKHRva2VuID09IElOVEVHRVIpCisgICAgICAg
ICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSk7CisKKyAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQp
KSkgeworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGlk
ZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisgICAg
ICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VS
Uk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CisgICAgICAgICAgICBn
b3RvIHJldHVybkVycm9yOworICAgICAgICB9CisgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyWmVybzoKICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgaWYg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAneCcpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChwZWVrKDEpKSkgewogICAgICAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBoZXhhZGVjaW1hbCBkaWdpdHMgYWZ0ZXIg
JzB4JyIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJf
RVJST1JUT0s7CkBAIC0yMTEzLDE3ICsyMTMzLDI3IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8g
U2hpZnQgb3V0IHRoZSAneCcgcHJlZml4LgogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAg
ICAgICAgcGFyc2VIZXgodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRv
IHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VIZXgoKTsKKyAgICAgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ocGFyc2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KHBhcnNlTnVtYmVy
UmVzdWx0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklH
SU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4ocGFyc2VOdW1iZXJS
ZXN1bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxNjsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJl
dHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAg
ICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnYicpIHsK
KyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnYicpKSB7
CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlCaW5hcnlEaWdpdChwZWVrKDEpKSkgewogICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBiaW5hcnkgZGln
aXRzIGFmdGVyICcwYiciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9C
SU5BUllfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjEzMywxOCArMjE2MywzMCBAQCBzdGFydDoKICAg
ICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ2InIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0
KCk7CiAKLSAgICAgICAgICAgIHBhcnNlQmluYXJ5KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwor
ICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlQmluYXJ5KCk7CisgICAg
ICAgICAgICBpZiAoIXBhcnNlTnVtYmVyUmVzdWx0KQorICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpCisgICAgICAgICAgICAgICAgdG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOwor
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJ
bnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0
KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4g
YmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9
IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2Vu
VHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJR0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4g
PSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwog
ICAgICAgICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAg
ICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAg
ICAgICAgICBpZiAoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRl
ciAnMG8nIik7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVN
QkVSX0VSUk9SVE9LOwpAQCAtMjE1NCwxMyArMjE5NiwyNSBAQCBzdGFydDoKICAgICAgICAgICAg
IC8vIFNoaWZ0IG91dCB0aGUgJ28nIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAg
ICAgICAgICAgIHBhcnNlT2N0YWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAg
ICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYg
KCFwYXJzZU51bWJlclJlc3VsdCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91
YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0g
V1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDg7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRF
RF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdl
ckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtF
TFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZv
ckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBt
X2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIx
NzIsMzQgKzIyMjYsNDYgQEAgc3RhcnQ6CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7Ci0g
ICAgICAgICAgICBpZiAocGFyc2VPY3RhbCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSkgeworICAg
ICAgICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlT2N0YWwoKTsKKyAgICAgICAg
ICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJs
ZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAg
ICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJP
VUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyTnVtYmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2Vu
ICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9VQkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJz
ZURlY2ltYWwodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tl
biA9IElOVEVHRVI7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAg
ICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAg
ICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRv
dWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0
YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAocGFyc2VOdW1iZXJSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKFdURjo6
Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci1p
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgotICAgICAgICAgICAgICAgICAgICBwYXJzZU51bWJl
ckFmdGVyRGVjaW1hbFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxF
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4
MjApID09ICdlJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJF
eHBvbmVudEluZGljYXRvcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBp
bmRpY2F0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVO
VEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElU
RVJBTF9FUlJPUlRPSzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8
Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+cmFkaXggPSAxMDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VCTEU7CiAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9jdXJyZW50LCAnZScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVt
YmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0
ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElO
VkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsK
KyAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91Ymxl
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFy
c2VkTGVuZ3RoOwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJz
ZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgp
OwotICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAg
ICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3Vi
bGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0b2tlbiA9IHRv
a2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0
KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZDg0
NWUyZS4uMDUyZjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTc1
LDEwICsxNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxk
U3RyaW5ncywgTGV4ZXJFc2NhcGVQYXJzZU1vZGUgZXNjYXBlUGFyc2VNb2RlPiBBTFdBWVNfSU5M
SU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlQ29tcGxleEVzY2FwZShib29sIHN0cmljdE1vZGUs
IFQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIpOwogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VS
ZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRN
b2RlKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1
ZSk7Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFs
dWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU9jdGFsKGRvdWJsZSYgcmV0dXJuVmFs
dWUpOwotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5W
YWx1ZSk7CisgICAgQUxXQVlTX0lOTElORSBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmll
cio+IHBhcnNlSGV4KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8
ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IHBhcnNlQmluYXJ5KCk7CisgICAgQUxXQVlTX0lO
TElORSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4+IHBh
cnNlT2N0YWwoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIGNvbnN0IElkZW50aWZpZXIqPj4gcGFyc2VEZWNpbWFsKCk7CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCk7CiAgICAgQUxXQVlTX0lO
TElORSBib29sIHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhY2RhYzZjLi5iYmNkYTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApA
QCAtOTIsNiArOTIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlu
bGluZSBCaWdJbnROb2RlOjpCaWdJbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIHZhbHVlLCB1aW50OF90IHJhZGl4KQorICAgICAgICA6IENv
bnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6YmlnSW50VHlwZSgpKQorICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7CisgICAgfQor
CiAgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnRO
b2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyLi4y
NGJlMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0
ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fy
cmF5TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9
OwogCisgICAgY2xhc3MgQmlnSW50Tm9kZSBmaW5hbCA6IHB1YmxpYyBDb25zdGFudE5vZGUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Ym9vbCBpc0JpZ0ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
SlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgZmluYWw7CisKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3Jh
ZGl4OworICAgIH07CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODk4NS4uODQ4Yzk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRV
c2VWYXJpYWJsZShjb250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmV2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7CisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5n
OworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAg
ICAgICAgbmV4dCgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRp
b24sIGlkZW50LCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5H
OiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRl
bnQ7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRh
N2EuLmMyMDU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaApAQCAtMTEwLDYgKzExMCw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIEJBQ0tRVU9U
RSwKICAgICBJTlRFR0VSLAogICAgIERPVUJMRSwKKyAgICBCSUdJTlQsCiAgICAgSURFTlQsCiAg
ICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLApAQCAtMjE4LDYgKzIxOSwxMCBAQCB1bmlvbiBKU1Rv
a2VuRGF0YSB7CiAgICAgICAgIGJvb2wgZXNjYXBlZDsKICAgICB9OwogICAgIHN0cnVjdCB7Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGJpZ0ludFN0cmluZzsKKyAgICAgICAgdWludDhfdCBy
YWRpeDsKKyAgICB9OworICAgIHN0cnVjdCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGNv
b2tlZDsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogcmF3OwogICAgICAgICBib29sIGlzVGFp
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXggNGY2NDcx
Yi4uMDNjYWUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgK
QEAgLTMxLDE4ICszMSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBmcmllbmQgc3RydWN0IE9wZXJhbmRUeXBlczsKIAotICAgICAgICB0eXBlZGVmIHVpbnQ4X3Qg
VHlwZTsKKyAgICAgICAgdXNpbmcgVHlwZSA9IHVpbnQ4X3Q7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBUeXBlIFR5cGVJbnQzMiA9IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXli
ZU51bWJlciA9IDB4MDI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZVN0cmlu
ZyA9IDB4MDQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bGwgICA9IDB4
MDg7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZUJvb2wgICA9IDB4MTA7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4MjA7CisgICAgICAg
IHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZUJpZ0ludCA9IDB4MjA7CisgICAgICAgIHN0YXRp
YyBjb25zdCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4NDA7CiAKLSAgICAgICAgc3RhdGljIGNv
bnN0IFR5cGUgVHlwZUJpdHMgPSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBU
eXBlTWF5YmVOdWxsIHwgVHlwZU1heWJlQm9vbCB8IFR5cGVNYXliZU90aGVyOworICAgICAgICBz
dGF0aWMgY29uc3QgVHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0
cmluZyB8IFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJlQmlnSW50IHwg
VHlwZU1heWJlT3RoZXI7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bnVtQml0c05lZWRlZCA9IDY7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0c05lZWRl
ZCA9IDc7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNO
ZWVkZWQpIC0gMSkpID09IFR5cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3Ru
ZXNzLiIpOwogCiAgICAgICAgIGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQpAQCAtNzAs
NiArNzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKG1fYml0cyAm
IFR5cGVCaXRzKSA9PSBUeXBlTWF5YmVCb29sOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBk
ZWZpbml0ZWx5SXNCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
KG1fYml0cyAmIFR5cGVCaXRzKSA9PSBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKwogICAg
ICAgICBib29sIG1pZ2h0QmVOdW1iZXIoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlTnVtYmVyOwpAQCAtODAsNiArODYsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gIW1pZ2h0QmVOdW1iZXIoKTsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgYm9vbCBtaWdodEJlQmlnSW50KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgaXNOb3RCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gIW1pZ2h0QmVCaWdJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgbnVsbFR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVOdWxsKTsKQEAgLTEwNSwxMSArMTIxLDIxIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVt
YmVyIHwgVHlwZU1heWJlU3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgYWRkUmVzdWx0VHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVN
YXliZUJpZ0ludCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRU
eXBlIHN0cmluZ1R5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlw
ZShUeXBlTWF5YmVTdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMg
UmVzdWx0VHlwZSBiaWdJbnRUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFJl
c3VsdFR5cGUoVHlwZU1heWJlQmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdW5rbm93blR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gUmVzdWx0VHlwZShUeXBlQml0cyk7CkBAIC0xMjEsNyArMTQ3LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAg
IGlmIChvcDEuZGVmaW5pdGVseUlzU3RyaW5nKCkgfHwgb3AyLmRlZmluaXRlbHlJc1N0cmluZygp
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RyaW5nT3JOdW1iZXJUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJ
c0JpZ0ludCgpICYmIG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gYmlnSW50VHlwZSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdFR5cGUoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFVubGlrZSBpbiBDLCBhIGxvZ2ljYWwgb3AgcHJvZHVj
ZXMgdGhlIHZhbHVlIG9mIHRoZQpAQCAtMTM0LDYgKzE2Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3Ax
LmRlZmluaXRlbHlJc1N0cmluZygpICYmIG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RyaW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZp
bml0ZWx5SXNCaWdJbnQoKSAmJiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGJpZ0ludFR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiB1bmtub3duVHlw
ZSgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKaW5kZXggOGRiMzVjNy4uNTM5YzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAwMDAw
MDsKICAgICBlbnVtIDogaW50IHsgTm9uZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZhbEV4
cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKKyAg
ICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4
cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwg
Qm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlv
bkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90
RXhwciwgQ2FsbEV4cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFy
eUV4cHIsIEJpbmFyeUV4cHIsCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7
IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG91
YmxlRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJsZUV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQpIHsgcmV0dXJuIEJpZ0ludEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0
dXJuIFN0cmluZ0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxs
RXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggMTkzYzkxZS4uZDY0NzY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMCw2ICszMCw3IEBACiAg
ICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCiAgICAg
bWFjcm8oQllURVNfUEVSX0VMRU1FTlQpIFwKKyAgICBtYWNybyhCaWdJbnQpIFwKICAgICBtYWNy
byhCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhDcmVkZW50aWFs
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlmZDZhZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMCwwICsxLDcwMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogUGFydHMgb2Yg
dGhlIGltcGxlbWVudGF0aW9uIGJlbG93OgorICoKKyAqIENvcHlyaWdodCAyMDE3IHRoZSBWOCBw
cm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisg
KiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorICoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTQgdGhlIERhcnQgcHJvamVjdCBhdXRob3JzLiAgUGxlYXNlIHNlZSB0aGUgQVVUSE9SUyBmaWxl
IFsxXQorICogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEKKyAqIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgWzJdLgorICoKKyAqIFsxXSBodHRwczovL2dp
dGh1Yi5jb20vZGFydC1sYW5nL3Nkay9ibG9iL21hc3Rlci9BVVRIT1JTCisgKiBbMl0gaHR0cHM6
Ly9naXRodWIuY29tL2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0ZXIvTElDRU5TRQorICoKKyAqIENv
cHlyaWdodCAyMDA5IFRoZSBHbyBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKKyAqIGxpY2Vu
c2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbM10uCisgKgorICogWzNd
IGh0dHBzOi8vZ29sYW5nLm9yZy9MSUNFTlNFCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZlY3Rvci5oPgorCisjZGVmaW5lIFNUQVRJ
Q19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQgYXNzdW1lcyAiICNj
b25kKQorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQmlnSW50OjpzX2lu
Zm8gPQorICAgIHsgIkpTQmlnSW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0JpZ0ludCkgfTsKKwordm9pZCBKU0JpZ0ludDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQmlnSW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6OmluaXRpYWxp
emUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQoreworICAgIHNldFNpZ24oZmFsc2UpOwor
ICAgIGlmIChpbml0VHlwZSA9PSBJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKQorICAgICAg
ICBtZW1zZXQoZGF0YVN0b3JhZ2UoKSwgMCwgbGVuZ3RoKCkgKiBzaXplb2YoRGlnaXQpKTsKK30K
KworU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmln
SW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0JpZ0ludCogSlNCaWdJ
bnQ6OmNyZWF0ZVplcm8oVk0mIHZtKQoreworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aCh2bSwgMCk7CisgICAgemVyb0JpZ0ludC0+c2V0U2lnbihmYWxzZSk7Cisg
ICAgcmV0dXJuIHplcm9CaWdJbnQ7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6YWxsb2NhdGlvblNp
emUoaW50IGxlbmd0aCkKK3sKKyAgICBzaXplX3Qgc2l6ZVdpdGhQYWRkaW5nID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzaXplX3QpPihzaXplb2YoSlNCaWdJbnQpKTsKKyAgICBy
ZXR1cm4gc2l6ZVdpdGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKK30KKworSlNC
aWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2bSwgaW50IGxlbmd0aCkKK3sK
KyAgICBKU0JpZ0ludCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJ
bnQ+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0JpZ0ludCh2bSwgdm0uYmln
SW50U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBiaWdJbnQ7Cit9Cit2b2lkIEpTQmlnSW50OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitKU1ZhbHVl
IEpTQmlnSW50Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
KSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJp
bmcoKQoreworICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
aWYgKGxlbmd0aCgpID09IDEgJiYgIXNpZ24oKSkgeworICAgICAgICBEaWdpdCByRGlnaXQgPSBk
aWdpdCgwKTsKKyAgICAgICAgaWYgKHJEaWdpdCA8PSA5KQorICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHJEaWdpdCk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisK
K0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBT
dHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgpCit7CisgICAgaWYgKHMuaXM4Qml0KCkpCisgICAg
ICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgo
KSwgMCwgcmFkaXgsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNo
YXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworfQorCitTdHJpbmcg
SlNCaWdJbnQ6OnRvU3RyaW5nKEV4ZWNTdGF0ZSYgc3RhdGUsIGludCByYWRpeCkKK3sKKyAgICBp
ZiAodGhpcy0+aXNaZXJvKCkpCisgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKKworICAgIHJldHVybiB0b1N0cmluZ0dl
bmVyaWMoc3RhdGUsIHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJvKCkK
K3sKKyAgICBBU1NFUlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0aCgp
ID09IDA7Cit9CisKKy8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMg
e3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlB
ZGQodWludHB0cl90IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FT
U0VSVChzaXplb2YoZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJU
KHNpemVvZihzdW1tYW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlw
bHlBZGQodGhpcywgZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVpbnQ2
NF90IFR3b0RpZ2l0OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09fRElH
SVQgMQordHlwZWRlZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhBVkVf
VFdPX0RJR0lUIDAKKyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlh
bGl6ZWQgRGlnaXQgYW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUgb3Ig
bGVmdCBhbG9uZS4KK0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwg
RGlnaXQgYiwgRGlnaXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGln
aXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGln
aXQ+KGIpOworICAgIGNhcnJ5ICs9IHJlc3VsdCA+PiBkaWdpdEJpdHM7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEg
KyBiOworCisgICAgaWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRv
IGFuIGluaXRpYWxpemVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8g
Ynkgb25lIG9yIGxlZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0U3Vi
KERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElHSVQK
KyAgICBUd29EaWdpdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0aWNf
Y2FzdDxUd29EaWdpdD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gZGlnaXRCaXRzKSAm
IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UK
KyAgICBEaWdpdCByZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAg
Ym9ycm93ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQp
OworI2VuZGlmCit9CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQuIEhp
Z2ggaGFsZiBpcyBpbiB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0TXVs
KERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisg
ICAgVHdvRGlnaXQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nh
c3Q8VHdvRGlnaXQ+KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gZGlnaXRCaXRzOworCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0aXBs
eSBpbiBoYWxmLXBvaW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FIIEFM
XSpbQkggQkxdLCB0aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBbQUwq
QkxdICAvLyByTG93CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAgIC8v
ICAgICsgICAgW0FIKkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAgICAg
IC8vIHJIaWdoCisgICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIzXSwg
bG93ID0gW1IyIFIxXQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3QgYmUg
Y2FyZWZ1bCB3aXRoIGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBhTG93
ID0gYSAmIGhhbGZEaWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IGhhbGZEaWdpdEJp
dHM7CisgICAgRGlnaXQgYkxvdyA9IGIgJiBoYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdo
ID0gYiA+PiBoYWxmRGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICogYkxv
dzsKKyAgICBEaWdpdCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9IGFI
aWdoICogYkxvdzsKKyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisgICAg
RGlnaXQgY2FycnkgPSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8
IGhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQyIDw8
IGhhbGZEaWdpdEJpdHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gaGFsZkRpZ2l0
Qml0cykgKyAock1pZDIgPj4gaGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisgICAg
cmV0dXJuIGxvdzsKKyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBv
ZiB7ZXhwb25lbnR9LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGln
aXQgSlNCaWdJbnQ6OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQoreworICAg
IERpZ2l0IHJlc3VsdCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAgICAg
ICBpZiAoZXhwb25lbnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAg
ICAgZXhwb25lbnQgPj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50
ID0gKGhpZ2ggPDwgZGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmln
SW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdp
dCBkaXZpc29yLCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNv
cik7CisjaWYgQ1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0
IHF1b3RpZW50OworICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3Jd
IgorICAgICAgICAvLyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBp
biByZHguCisgICAgICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJ
bnB1dHM6IHB1dCB7aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9
IGludG8KKyAgICAgICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDog
ImQiKGhpZ2gpLCAiYSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJlbWFp
bmRlciA9IHJlbTsKKyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBDT01Q
SUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOwor
ICAgIF9fYXNtX18oImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90
aWVudH0gd2lsbCBiZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1b3Rp
ZW50KSwgIj1kIihyZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVkeCwg
e2xvd30gaW50byBlYXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0
ZXIgb3Igc3RhY2sgc2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNv
cl0gInJtIihkaXZpc29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90
aWVudDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVs
bCA8PCBoYWxmRGlnaXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidz
IERlbGlnaHQsIHAuIDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQo
ZGl2aXNvcik7CisjZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAg
ICBkaXZpc29yIDw8PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gaGFsZkRp
Z2l0Qml0czsKKyAgICBEaWdpdCB2bjAgPSBkaXZpc29yICYgaGFsZkRpZ2l0TWFzazsKKworICAg
IC8vIHtzfSBjYW4gYmUgMC4gImxvdyA+PiBkaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdl
ICImIiBpdCB3aXRoCisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBh
bmQgYWxsIDEtYml0cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRy
X3QpID09IHNpemVvZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0
PERpZ2l0PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChkaWdpdEJpdHMgLSAxKSk7Cisg
ICAgRGlnaXQgdW4zMiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKGRpZ2l0Qml0cyAtIHMpKSAm
IHNaZXJvTWFzayk7CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9
IHVuMTAgPj4gaGFsZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgaGFsZkRpZ2l0
TWFzazsKKyAgICBEaWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIg
LSBxMSAqIHZuMTsKKworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZu
MCA+IHJoYXQgKiBrSGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAg
ICByaGF0ICs9IHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGln
aXRCYXNlICsgdW4xIC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsK
KyAgICByaGF0ID0gdW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGln
aXRCYXNlIHx8IHEwICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAg
ICAgIHEwLS07CisgICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFs
ZkRpZ2l0QmFzZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRlciA9
ICh1bjIxICoga0hhbGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAg
cmV0dXJuIHExICoga0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBs
aWVzIHtzb3VyY2V9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1
bHQuCisvLyB7cmVzdWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3Ig
aW5wbGFjZSBtb2RpZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRk
KEpTQmlnSW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpT
QmlnSW50KiByZXN1bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7Cisg
ICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1
bW1hbmQ7CisgICAgRGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBp
KyspIHsKKyAgICAgICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAg
IERpZ2l0IG5ld0NhcnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBt
dWx0aXBsaWNhdGlvbi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJl
bnQgPSBkaWdpdE11bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8vIEFk
ZCBsYXN0IHJvdW5kJ3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1
cnJlbnQsIGhpZ2gsIG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJl
bnQsIGNhcnJ5LCBuZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVw
YXJlIGZvciBuZXh0IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQp
OworICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAg
ICB9CisKKyAgICBpZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5z
ZXREaWdpdChuKyssIGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJz
IGRvbid0IHBhc3MgaW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0Lgor
ICAgICAgICB3aGlsZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQt
PnNldERpZ2l0KG4rKywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVCghKGNhcnJ5ICsg
aGlnaCkpOworfQorCitib29sIEpTQmlnSW50OjplcXVhbHMoSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KQoreworICAgIGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykg
eworICAgICAgICBpZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQoaSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERpdmlkZXMg
e3h9IGJ5IHtkaXZpc29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQgaW4ge3F1b3RpZW50fSBhbmQg
e3JlbWFpbmRlcn0uCisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNvbnRyYWN0IGlzOgorLy8gcXVv
dGllbnQgPSAoeCAtIHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRoIDAgPD0gcmVtYWluZGVyIDwg
ZGl2aXNvci4KKy8vIElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkgaGFuZGxlLCBhbiBhcHByb3By
aWF0ZWx5IHNpemVkIEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0ZWQgZm9yIGl0OyBvdGhlcndp
c2UgdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2guCisvLyB7cXVv
dGllbnR9IGNhbiBiZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlzaW9uLiB7
cXVvdGllbnR9IGNhbgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRoZSBjYWxsZXIgaXMgb25seSBp
bnRlcmVzdGVkIGluIHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdlNt
YWxsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0lu
dCoqIHF1b3RpZW50LCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChkaXZpc29yKTsK
KworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7Cisg
ICAgcmVtYWluZGVyID0gMDsKKyAgICBpZiAoZGl2aXNvciA9PSAxKSB7CisgICAgICAgIGlmIChx
dW90aWVudCAhPSBudWxscHRyKQorICAgICAgICAgICAgKnF1b3RpZW50ID0geDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBpZiAo
cXVvdGllbnQgIT0gbnVsbHB0cikgeworICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIp
IHsKKyAgICAgICAgICAgICpxdW90aWVudCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZt
LCBsZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7
IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBEaWdpdCBxID0gZGlnaXREaXYocmVtYWluZGVy
LCB4LT5kaWdpdChpKSwgZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICAgICAgICAgICgqcXVvdGll
bnQpLT5zZXREaWdpdChpLCBxKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZv
ciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkKKyAgICAgICAgICAgIGRpZ2l0RGl2
KHJlbWFpbmRlciwgeC0+ZGlnaXQoaSksIGRpdmlzb3IsIHJlbWFpbmRlcik7CisgICAgfQorfQor
CisvLyBMb29rdXAgdGFibGUgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHJlcXVpcmVk
IHBlciBjaGFyYWN0ZXIgb2YgYQorLy8gYmFzZS1OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh
IG51bWJlci4gVG8gaW5jcmVhc2UgYWNjdXJhY3ksIHRoZSBhcnJheQorLy8gdmFsdWUgaXMgdGhl
IGFjdHVhbCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IDMyLiBUbyBnZW5lcmF0ZSB0aGlzIHRhYmxlOgor
Ly8gZm9yICh2YXIgaSA9IDA7IGkgPD0gMzY7IGkrKykgeyBwcmludChNYXRoLmNlaWwoTWF0aC5s
b2cyKGkpICogMzIpICsgIiwiKTsgfQorY29uc3RleHByIHVpbnQ4X3QgbWF4Qml0c1BlckNoYXJU
YWJsZVtdID0geworICAgIDAsICAgMCwgICAzMiwgIDUxLCAgNjQsICA3NSwgIDgzLCAgOTAsICA5
NiwgLy8gMC4uOAorICAgIDEwMiwgMTA3LCAxMTEsIDExNSwgMTE5LCAxMjIsIDEyNiwgMTI4LCAg
ICAgLy8gOS4uMTYKKyAgICAxMzEsIDEzNCwgMTM2LCAxMzksIDE0MSwgMTQzLCAxNDUsIDE0Nywg
ICAgIC8vIDE3Li4yNAorICAgIDE0OSwgMTUxLCAxNTMsIDE1NCwgMTU2LCAxNTgsIDE1OSwgMTYw
LCAgICAgLy8gMjUuLjMyCisgICAgMTYyLCAxNjMsIDE2NSwgMTY2LCAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAzMy4uMzYKK307CisKK3N0YXRpYyBjb25zdCBpbnQgYml0c1BlckNoYXJUYWJs
ZVNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCBzaXplX3QgYml0c1BlckNoYXJUYWJsZU11bHRpcGxp
ZXIgPSAxdSA8PCBiaXRzUGVyQ2hhclRhYmxlU2hpZnQ7CisKKy8vIENvbXB1dGUgKGFuIG92ZXJh
cHByb3hpbWF0aW9uIG9mKSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nOgorLy8g
RGl2aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVy
IGNoYXJhY3Rlci4KK3VpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVy
c1JlcXVpcmVkKGludCBsZW5ndGgsIGludCByYWRpeCwgRGlnaXQgbGFzdERpZ2l0LCBib29sIHNp
Z24pCit7CisgICAgaW50IGxlYWRpbmdaZXJvczsKKyAgICBpZiAoc2l6ZW9mKGxhc3REaWdpdCkg
PT0gOCkKKyAgICAgICAgbGVhZGluZ1plcm9zID0gY2x6NjQobGFzdERpZ2l0KTsKKyAgICBlbHNl
CisgICAgICAgIGxlYWRpbmdaZXJvcyA9IGNsejMyKGxhc3REaWdpdCk7CisKKyAgICBzaXplX3Qg
Yml0TGVuZ3RoID0gbGVuZ3RoICogZGlnaXRCaXRzIC0gbGVhZGluZ1plcm9zOworCisgICAgLy8g
TWF4aW11bSBudW1iZXIgb2YgYml0cyB3ZSBjYW4gcmVwcmVzZW50IHdpdGggb25lIGNoYXJhY3Rl
ci4gV2UnbGwgdXNlIHRoaXMKKyAgICAvLyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGNodW5rIHNp
emUgYmVsb3cuCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IG1heEJpdHNQZXJDaGFyVGFi
bGVbcmFkaXhdOworCisgICAgLy8gRm9yIGVzdGltYXRpbmcgcmVzdWx0IGxlbmd0aCwgd2UgaGF2
ZSB0byBiZSBwZXNzaW1pc3RpYyBhbmQgd29yayB3aXRoCisgICAgLy8gdGhlIG1pbmltdW0gbnVt
YmVyIG9mIGJpdHMgb25lIGNoYXJhY3RlciBjYW4gcmVwcmVzZW50LgorICAgIHVpbnQ4X3QgbWlu
Qml0c1BlckNoYXIgPSBtYXhCaXRzUGVyQ2hhciAtIDE7CisKKyAgICAvLyBQZXJmb3JtIHRoZSBm
b2xsb3dpbmcgY29tcHV0YXRpb24gd2l0aCB1aW50NjRfdCB0byBhdm9pZCBvdmVyZmxvd3MuCisg
ICAgdWludDY0X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9IGJpdExlbmd0aDsKKyAgICBt
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICo9IGJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyOwor
CisgICAgLy8gUm91bmQgdXAuCisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCArPSBtaW5C
aXRzUGVyQ2hhciAtIDE7CisgICAgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCAvPSBtaW5CaXRz
UGVyQ2hhcjsKKyAgICBtYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICs9IHNpZ247CisgICAgCisg
ICAgcmV0dXJuIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQ7Cit9CisKK1N0cmluZyBKU0JpZ0lu
dDo6dG9TdHJpbmdHZW5lcmljKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQmlnSW50KiB4LCBpbnQgcmFk
aXgpCit7CisgICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgU3RyaW5nVmVjdG9y
IGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgU3RyaW5nVmVjdG9yPExDaGFyPiByZXN1bHRTdHJp
bmc7CisKKyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgQVNTRVJU
KCF4LT5pc1plcm8oKSk7CisKKyAgICBpbnQgbGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgYm9v
bCBzaWduID0geC0+c2lnbigpOworCisgICAgdWludDhfdCBtYXhCaXRzUGVyQ2hhciA9IG1heEJp
dHNQZXJDaGFyVGFibGVbcmFkaXhdOworICAgIHVpbnQ2NF90IG1heGltdW1DaGFyYWN0ZXJzUmVx
dWlyZWQgPSBjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGxlbmd0aCwgcmFkaXgs
IHgtPmRpZ2l0KGxlbmd0aCAtIDEpLCBzaWduKTsKKworICAgIGlmIChtYXhpbXVtQ2hhcmFjdGVy
c1JlcXVpcmVkID4gSlNTdHJpbmc6Ok1heExlbmd0aCkgeworICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKCZzdGF0ZSwgc2NvcGUpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQor
CisgICAgRGlnaXQgbGFzdERpZ2l0OworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgbGFz
dERpZ2l0ID0geC0+ZGlnaXQoMCk7CisgICAgZWxzZSB7CisgICAgICAgIGludCBjaHVua0NoYXJz
ID0gZGlnaXRCaXRzICogYml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgLyBtYXhCaXRzUGVyQ2hh
cjsKKyAgICAgICAgRGlnaXQgY2h1bmtEaXZpc29yID0gZGlnaXRQb3cocmFkaXgsIGNodW5rQ2hh
cnMpOworCisgICAgICAgIC8vIEJ5IGNvbnN0cnVjdGlvbiBvZiBjaHVua0NoYXJzLCB0aGVyZSBj
YW4ndCBoYXZlIGJlZW4gb3ZlcmZsb3cuCisgICAgICAgIEFTU0VSVChjaHVua0Rpdmlzb3IpOwor
ICAgICAgICBpbnQgbm9uWmVyb0RpZ2l0ID0gbGVuZ3RoIC0gMTsKKyAgICAgICAgQVNTRVJUKHgt
PmRpZ2l0KG5vblplcm9EaWdpdCkpOworCisgICAgICAgIC8vIHtyZXN0fSBob2xkcyB0aGUgcGFy
dCBvZiB0aGUgQmlnSW50IHRoYXQgd2UgaGF2ZW4ndCBsb29rZWQgYXQgeWV0LgorICAgICAgICAv
LyBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCAicmVtYWluZGVyIiEKKyAgICAgICAgSlNCaWdJbnQq
IHJlc3QgPSBudWxscHRyOworCisgICAgICAgIC8vIEluIHRoZSBmaXJzdCByb3VuZCwgZGl2aWRl
IHRoZSBpbnB1dCwgYWxsb2NhdGluZyBhIG5ldyBCaWdJbnQgZm9yCisgICAgICAgIC8vIHRoZSBy
ZXN1bHQgPT0gcmVzdDsgZnJvbSB0aGVuIG9uIGRpdmlkZSB0aGUgcmVzdCBpbi1wbGFjZS4KKyAg
ICAgICAgSlNCaWdJbnQqKiBkaXZpZGVuZCA9ICZ4OworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBEaWdpdCBjaHVuazsKKyAgICAgICAgICAgIGFic29sdXRlRGl2U21hbGwoc3RhdGUsICpkaXZp
ZGVuZCwgY2h1bmtEaXZpc29yLCAmcmVzdCwgY2h1bmspOworICAgICAgICAgICAgQVNTRVJUKHJl
c3QpOworCisgICAgICAgICAgICBkaXZpZGVuZCA9ICZyZXN0OworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjaHVua0NoYXJzOyBpKyspIHsKKyAgICAgICAgICAgICAgICByZXN1bHRT
dHJpbmcuYXBwZW5kKHJhZGl4RGlnaXRzW2NodW5rICUgcmFkaXhdKTsKKyAgICAgICAgICAgICAg
ICBjaHVuayAvPSByYWRpeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghY2h1
bmspOworCisgICAgICAgICAgICBpZiAoIXJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpCisgICAg
ICAgICAgICAgICAgbm9uWmVyb0RpZ2l0LS07CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBuZXZl
ciBjbGVhciBtb3JlIHRoYW4gb25lIGRpZ2l0IHBlciBpdGVyYXRpb24sIGJlY2F1c2UKKyAgICAg
ICAgICAgIC8vIGNodW5rRGl2aXNvciBpcyBzbWFsbGVyIHRoYW4gbWF4IGRpZ2l0IHZhbHVlLgor
ICAgICAgICAgICAgQVNTRVJUKHJlc3QtPmRpZ2l0KG5vblplcm9EaWdpdCkpOworICAgICAgICB9
IHdoaWxlIChub25aZXJvRGlnaXQgPiAwKTsKKworICAgICAgICBsYXN0RGlnaXQgPSByZXN0LT5k
aWdpdCgwKTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQo
cmFkaXhEaWdpdHNbbGFzdERpZ2l0ICUgcmFkaXhdKTsKKyAgICAgICAgbGFzdERpZ2l0IC89IHJh
ZGl4OworICAgIH0gd2hpbGUgKGxhc3REaWdpdCA+IDApOworICAgIEFTU0VSVChyZXN1bHRTdHJp
bmcuc2l6ZSgpKTsKKyAgICBBU1NFUlQocmVzdWx0U3RyaW5nLnNpemUoKSA8PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQpKTsKKworICAgIC8vIFJlbW92ZSBs
ZWFkaW5nIHplcm9lcy4KKyAgICBpbnQgbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyA9IHJlc3VsdFN0
cmluZy5zaXplKCk7CisgICAgd2hpbGUgKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMgID4gMSAmJiBy
ZXN1bHRTdHJpbmdbbmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAtIDFdID09ICcwJykKKyAgICAgICAg
bmV3U2l6ZU5vTGVhZGluZ1plcm9lcy0tOworCisgICAgcmVzdWx0U3RyaW5nLnNocmluayhuZXdT
aXplTm9MZWFkaW5nWmVyb2VzKTsKKworICAgIGlmIChzaWduKQorICAgICAgICByZXN1bHRTdHJp
bmcuYXBwZW5kKCctJyk7CisKKyAgICBzdGQ6OnJldmVyc2UocmVzdWx0U3RyaW5nLmJlZ2luKCks
IHJlc3VsdFN0cmluZy5lbmQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoV1RG
TW92ZShyZXN1bHRTdHJpbmcpKTsKK30KKworSlNCaWdJbnQqIEpTQmlnSW50OjpyaWdodFRyaW0o
Vk0mIHZtKQoreworICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAg
ICBpbnQgbm9uWmVyb0luZGV4ID0gbV9sZW5ndGggLSAxOworICAgIHdoaWxlIChub25aZXJvSW5k
ZXggPj0gMCAmJiAhZGlnaXQobm9uWmVyb0luZGV4KSkKKyAgICAgICAgbm9uWmVyb0luZGV4LS07
CisKKyAgICBpZiAobm9uWmVyb0luZGV4ID09IG1fbGVuZ3RoIC0gMSkKKyAgICAgICAgcmV0dXJu
IHRoaXM7CisKKyAgICBpbnQgbmV3TGVuZ3RoID0gbm9uWmVyb0luZGV4ICsgMTsKKyAgICBKU0Jp
Z0ludCogdHJpbW1lZEJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgodm0sIG5ld0xlbmd0aCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQodHJpbW1lZEJpZ0ludCk7CisgICAgc3RkOjpjb3B5KGRhdGFTdG9y
YWdlKCksIGRhdGFTdG9yYWdlKCkgKyBuZXdMZW5ndGgsIHRyaW1tZWRCaWdJbnQtPmRhdGFTdG9y
YWdlKCkpOyAKKworICAgIHRyaW1tZWRCaWdJbnQtPnNldFNpZ24odGhpcy0+c2lnbigpKTsKKwor
ICAgIHJldHVybiB0cmltbWVkQmlnSW50OworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9j
YXRlRm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50
KQoreworICAgIEFTU0VSVCgyIDw9IHJhZGl4ICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQo
Y2hhcmNvdW50ID49IDApOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgc2l6ZV90IGJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXJUYWJsZVtyYWRp
eF07CisgICAgc2l6ZV90IGNoYXJzID0gY2hhcmNvdW50OworICAgIGNvbnN0IGludCByb3VuZHVw
ID0gYml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXIgLSAxOworICAgIGlmIChjaGFycyA8PSAoc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHJvdW5kdXApIC8gYml0c1BlckNoYXIp
IHsKKyAgICAgICAgc2l6ZV90IGJpdHNNaW4gPSBiaXRzUGVyQ2hhciAqIGNoYXJzOworCisgICAg
ICAgIC8vIERpdmlkZSBieSAzMiAoc2VlIHRhYmxlKSwgcm91bmRpbmcgdXAuCisgICAgICAgIGJp
dHNNaW4gPSAoYml0c01pbiArIHJvdW5kdXApID4+IGJpdHNQZXJDaGFyVGFibGVTaGlmdDsKKyAg
ICAgICAgaWYgKGJpdHNNaW4gPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhJbnQpKSB7CisgICAg
ICAgICAgICAvLyBEaXZpZGUgYnkga0RpZ2l0c0JpdHMsIHJvdW5kaW5nIHVwLgorICAgICAgICAg
ICAgaW50IGxlbmd0aCA9IChzdGF0aWNfY2FzdDxpbnQ+KGJpdHNNaW4pICsgZGlnaXRCaXRzIC0g
MSkgLyBkaWdpdEJpdHM7CisgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aCkgewor
ICAgICAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExl
bmd0aCh2bSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlKQorICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3Ioc3RhdGUsIHNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
Kworc2l6ZV90IEpTQmlnSW50Ojplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBy
ZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKSArIGpzQ2FzdDxKU0JpZ0ludCo+KGNlbGwp
LT5tX2xlbmd0aCAqIHNpemVvZihEaWdpdCk7Cit9CisKK2RvdWJsZSBKU0JpZ0ludDo6dG9OdW1i
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBl
RXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnZlcnRpb24gZnJvbSAnQmlnSW50
JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgcmV0dXJuIDAuMDsKK30KKwor
Ym9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogc3RhdGUsIGRvdWJs
ZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmVzdWx0ID0gdGhpczsK
KyAgICBudW1iZXIgPSB0b051bWJlcihzdGF0ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Np
emVfdCBKU0JpZ0ludDo6b2Zmc2V0T2ZEYXRhKCkKK3sKKyAgICByZXR1cm4gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihEaWdpdCk+KHNpemVvZihKU0JpZ0ludCkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4
ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBz
dGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZykKK3sKKyAgICBBU1NF
UlQobGVuZ3RoID49IDApOworICAgIGludCBwID0gc3RhcnRJbmRleDsKKworICAgIGlmICghYWxs
b3dFbXB0eVN0cmluZyAmJiBzdGFydEluZGV4ID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCisgICAgd2hpbGUgKHAgPCBs
ZW5ndGggJiYgZGF0YVtwXSA9PSAnMCcpCisgICAgICAgICsrcDsKKworICAgIGludCBlbmRJbmRl
eCA9IGxlbmd0aCAtIDE7CisgICAgLy8gUmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzCisgICAgd2hp
bGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAg
ICAgICAgLS1lbmRJbmRleDsKKworICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKKworICAgIGlm
IChwID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOworCisgICAgaW50
IGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7CisgICAgaW50IGxpbWl0
YSA9ICdhJyArIChyYWRpeCAtIDEwKTsKKyAgICBpbnQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0g
MTApOworCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKHN0YXRlLCB2bSwgcmFk
aXgsIGxlbmd0aCAtIHApOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJv
KTsKKworICAgIGZvciAoaW50IGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgeworICAgICAg
ICB1aW50MzJfdCBkaWdpdDsKKyAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRhdGFbaV0g
PCBsaW1pdDApCisgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7CisgICAgICAgIGVs
c2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCisgICAgICAgICAgICBk
aWdpdCA9IGRhdGFbaV0gLSAnYScgKyAxMDsKKyAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAn
QScgJiYgZGF0YVtpXSA8IGxpbWl0QSkKKyAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdB
JyArIDEwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByZXN1
bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHJhZGl4KSwgc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihkaWdpdCkpOworICAgIH0KKworICAgIGlmIChwID09IGxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU0JpZ0ludDo6RGlnaXQqIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgpCit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGlnaXQqPihyZWludGVycHJldF9jYXN0PGNo
YXIqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsKK30KKworSlNCaWdJbnQ6OkRpZ2l0IEpTQmln
SW50OjpkaWdpdChpbnQgbikKK3sKKyAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5ndGgoKSk7
CisgICAgcmV0dXJuIGRhdGFTdG9yYWdlKClbbl07Cit9CisKK3ZvaWQgSlNCaWdJbnQ6OnNldERp
Z2l0KGludCBuLCBEaWdpdCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobiA+PSAwICYmIG4gPCBsZW5n
dGgoKSk7CisgICAgZGF0YVN0b3JhZ2UoKVtuXSA9IHZhbHVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjM2Y1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ2FnZWRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNCaWdJbnQgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICB1c2luZyBCYXNlID0g
SlNDZWxsOworCitwdWJsaWM6CisKKyAgICBKU0JpZ0ludChWTSYsIFN0cnVjdHVyZSosIGludCBs
ZW5ndGgpOworCisgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUgeyBOb25lLCBXaXRo
WmVybyB9OworICAgIHZvaWQgaW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUpOworCisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAg
c3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoaW50IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKKwor
ICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlWmVybyhWTSYpOworICAgIHN0YXRpYyBKU0JpZ0lu
dCogY3JlYXRlV2l0aExlbmd0aChWTSYsIGludCBsZW5ndGgpOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisK
KyAgICB2b2lkIHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2lnbiA9IHNpZ247IH0KKyAgICBib29s
IHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KKworICAgIHZvaWQgc2V0TGVuZ3RoKGlu
dCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhl
Y1N0YXRlKiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4KTsKKyAgICAKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKKyAgICBTdHJp
bmcgdG9TdHJpbmcoRXhlY1N0YXRlJiwgaW50IHJhZGl4KTsKKyAgICAKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOworCisgICAg
Ym9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFs
dWUmIHJlc3VsdCkgY29uc3Q7CisgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgIAorcHJpdmF0ZToKKyAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJfdDsKKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCBpbnQgZGlnaXRCaXRzID0gc2l6ZW9mKERpZ2l0KSAqIGJpdHNQZXJCeXRlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IGhhbGZEaWdpdEJpdHMgPSBkaWdpdEJpdHMg
LyAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgRGlnaXQgaGFsZkRpZ2l0TWFzayA9ICgx
dWxsIDw8IGhhbGZEaWdpdEJpdHMpIC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGlu
dCBtYXhJbnQgPSAweDdGRkZGRkZGOworICAgIAorICAgIC8vIFRoZSBtYXhpbXVtIGxlbmd0aCB0
aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHdvdWxkIGJlCisgICAgLy8g
bWF4SW50IC8gZGlnaXRCaXRzLiBIb3dldmVyLCB3ZSB1c2UgYSBsb3dlciBsaW1pdCBmb3Igbm93
LCBiZWNhdXNlCisgICAgLy8gcmFpc2luZyBpdCBsYXRlciBpcyBlYXNpZXIgdGhhbiBsb3dlcmlu
ZyBpdC4KKyAgICAvLyBTdXBwb3J0IHVwIHRvIDEgbWlsbGlvbiBiaXRzLgorICAgIHN0YXRpYyBj
b25zdCBpbnQgbWF4TGVuZ3RoID0gMTAyNCAqIDEwMjQgLyAoc2l6ZW9mKHZvaWQqKSAqIGJpdHNQ
ZXJCeXRlKTsKKyAgICAKKyAgICBzdGF0aWMgdWludDY0X3QgY2FsY3VsYXRlTWF4aW11bUNoYXJh
Y3RlcnNSZXF1aXJlZChpbnQgbGVuZ3RoLCBpbnQgcmFkaXgsIERpZ2l0IGxhc3REaWdpdCwgYm9v
bCBzaWduKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBhYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0
ZSYsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50LCBEaWdp
dCYgcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcm5hbE11bHRpcGx5QWRkKEpTQmln
SW50KiBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50LCBKU0JpZ0ludCog
cmVzdWx0KTsKKworICAgIC8vIERpZ2l0IGFyaXRobWV0aWMgaGVscGVycy4KKyAgICBzdGF0aWMg
RGlnaXQgZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGNhcnJ5KTsKKyAgICBzdGF0
aWMgRGlnaXQgZGlnaXRTdWIoRGlnaXQgYSwgRGlnaXQgYiwgRGlnaXQmIGJvcnJvdyk7CisgICAg
c3RhdGljIERpZ2l0IGRpZ2l0TXVsKERpZ2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBoaWdoKTsKKyAg
ICBzdGF0aWMgRGlnaXQgZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZp
c29yLCBEaWdpdCYgcmVtYWluZGVyKTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRQb3coRGlnaXQg
YmFzZSwgRGlnaXQgZXhwb25lbnQpOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ0dlbmVy
aWMoRXhlY1N0YXRlJiwgSlNCaWdJbnQqLCBpbnQgcmFkaXgpOworCisgICAgYm9vbCBpc1plcm8o
KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGlu
dCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmlu
ZyA9IHRydWUpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUq
LCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJjb3VudCk7CisKKyAgICBKU0JpZ0ludCogcmlnaHRU
cmltKFZNJik7CisKKyAgICB2b2lkIGlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBtdWx0aXBsaWVy
LCBEaWdpdCBwYXJ0KTsKKyAgICAKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpOwor
ICAgIERpZ2l0KiBkYXRhU3RvcmFnZSgpOworCisgICAgRGlnaXQgZGlnaXQoaW50IG4pOworICAg
IHZvaWQgc2V0RGlnaXQoaW50IG4sIERpZ2l0IHZhbHVlKTsKKyAgICAgICAgCisgICAgaW50IG1f
bGVuZ3RoOworICAgIGJvb2wgbV9zaWduOworfTsKKworaW5saW5lIEpTQmlnSW50KiBhc0JpZ0lu
dChKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQo
KSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCmluZGV4IGJhZjRkZmQuLjI3MmIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBA
IC0xMjksNiArMTMwLDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAo
aXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPnN0cmluZ1Byb3RvdHlwZSgpOworICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50
XSBJbXBsZW1lbnQgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzU5CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc0JpZ0ludCgpKTsKICAgICAgICAgQVNTRVJUKGlzU3ltYm9s
KCkpOwogICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zeW1ib2xQ
cm90b3R5cGUoKTsKICAgICB9CkBAIC0zNzUsNiArMzc5LDEyIEBAIEpTU3RyaW5nKiBKU1ZhbHVl
Ojp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZXR1cm5FbXB0eVN0cmlu
Z09uRXJyCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOwogICAgICAgICByZXR1cm4g
ZXJyb3JWYWx1ZSgpOwogICAgIH0KKyAgICBpZiAoaXNCaWdJbnQoKSkgeworICAgICAgICBKU0Jp
Z0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOworICAgICAgICBpZiAoYXV0byBkaWdpdCA9
IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQorICAgICAgICAgICAgcmV0dXJu
IHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIGJpZ0ludC0+dG9TdHJpbmcoKmV4
ZWMsIDEwKSk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggYzI0ZWE1YmIuLjlmMzlh
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIy
Miw2ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FueUludCgpIGNvbnN0OwogICAgIGJv
b2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9v
bCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29s
IGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
aW5kZXggYTI3ZjZhMS4uYWE1MWRkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKQEAgLTU3OCw2ICs1NzksMTEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKIH0K
IAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBp
c0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+
aXNTeW1ib2woKTsKQEAgLTEwMjAsNiArMTAyNiw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1Zh
bHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3Ry
aW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5n
KHYyKSk7CisgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEuYXNDZWxsKCkpLCBhc0JpZ0ludCh2
Mi5hc0NlbGwoKSkpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMTQzNDZlOC4uNzY3ZThhZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgQ29u
c3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5p
c1N5bWJvbCgpKQorICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkg
fHwgY2VsbC0+aXNCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9Q
cmltaXRpdmUoZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlCiAKIGJv
b2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAg
IGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkpIHsKKyAgICBpZiAoY2Vs
bC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTU1LDYgKzE1
NSw4IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBl
KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsKKyAgICBp
ZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVm
ZXJyZWRUeXBlKTsKIH0KIApAQCAtMTY0LDYgKzE2Niw4IEBAIGJvb2wgSlNDZWxsOjpnZXRQcmlt
aXRpdmVOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFs
dWUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT5n
ZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9s
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0
UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOworICAgIGlmIChpc0JpZ0ludCgp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0
UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZXhlYywgbnVt
YmVyLCB2YWx1ZSk7CiB9CiAKQEAgLTE3Myw2ICsxNzcsOCBAQCBkb3VibGUgSlNDZWxsOjp0b051
bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU1N0cmluZyo+KHRoaXMpLT50b051bWJlcihleGVjKTsKICAgICBpZiAoaXNTeW1ib2wo
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b051
bWJlcihleGVjKTsKKyAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGV4ZWMpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b051bWJlcihleGVjKTsKIH0KIApA
QCAtMTgxLDYgKzE4Nyw5IEBAIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0U2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvCiAgICAgQVNTRVJUKCFp
c09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7
CisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEpTQmlnSW50LCBCaWdJ
bnRDb25zdHJ1Y3RvciBhbmQgQmlnSW50UHJvdG90eXBlCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM1OQorICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Jp
Z0ludCgpKTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAyZTkxOTczLi40ZGE3N2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTA4LDYgKzEwOCw3
IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBi
b29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OwogICAgIGJv
b2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDY3MzZmNWYuLjg5MzRjODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTE5Miw2ICsxOTIsMTEg
QEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBTdHJpbmdUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEJpZ0ludFR5cGU7Cit9CisKIGlubGluZSBib29s
IEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBtX3R5cGUgPT0gU3ltYm9s
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmNwcAppbmRleCBjMWMwMzg2Li42ZmEyZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogCisjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25t
ZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDg1MzU2ZDMu
LjU3N2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0zMyw2
ICszMyw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgQ2VsbFR5cGUsCiAgICAgU3Ry
aW5nVHlwZSwKICAgICBTeW1ib2xUeXBlLAorICAgIEJpZ0ludFR5cGUsCiAKICAgICBDdXN0b21H
ZXR0ZXJTZXR0ZXJUeXBlLAogICAgIEFQSVZhbHVlV3JhcHBlclR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggZThmMzE2Yy4uMGZkYzdjMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtNjYsNiArNjYs
MjUgQEAgaW5saW5lIGludCBjbHozMih1aW50MzJfdCBudW1iZXIpCiAjZW5kaWYKIH0KIAoraW5s
aW5lIGludCBjbHo2NCh1aW50NjRfdCBudW1iZXIpCit7CisjaWYgQ09NUElMRVIoR0NDX09SX0NM
QU5HKQorICAgIGludCB6ZXJvQ291bnQgPSA2NDsKKyAgICBpZiAobnVtYmVyKQorICAgICAgICB6
ZXJvQ291bnQgPSBfX2J1aWx0aW5fY2x6bGwobnVtYmVyKTsKKyAgICByZXR1cm4gemVyb0NvdW50
OworI2Vsc2UKKyAgICBpbnQgemVyb0NvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gNjM7IGkg
Pj0gMDsgaS0tKSB7CisgICAgICAgIGlmICghKG51bWJlciA+PiBpKSkKKyAgICAgICAgICAgIHpl
cm9Db3VudCsrOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHplcm9Db3VudDsKKyNlbmRpZgorfQorCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9w
ZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgog
Ly8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhl
ciB0aGFuIHRvIGludGVycHJldGF0aW9uCiAvLyBvZiB0aGUgcmVzdWx0aW5nIGJpdC1wYXR0ZXJu
IChhcyBzdWNoIHRoaXMgbWV0aG9kIGlzIGFsc28gY2FsbGVkIHRvIGltcGxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXgg
NTUwYjhmNy4uYTYzZDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgogI2luY2x1ZGUgIlVpbnQxNldpdGhGcmFjdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTEzOSw5ICsxNDAsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGdldEludGVnZXJBcmd1
bWVudEluUmFuZ2UoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG93LCBpbgogLy8gZm8gYW55IG51bWJl
ciBvZiBkaWdpdHMgYW4gSUVFRSBudW1iZXIgbWF5IHJlcXVpcmUgdG8gcmVwcmVzZW50LgogdHlw
ZWRlZiBjaGFyIFJhZGl4QnVmZmVyWzIxODBdOwogCi0vLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMg
MC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2Lgot
c3RhdGljIGNvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXoiOwotCiBzdGF0aWMgaW5saW5lIGNoYXIqIGludDUyVG9TdHJpbmdXaXRo
UmFkaXgoY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZywgaW50NjRfdCBpbnQ1MlZhbHVlLCB1bnNp
Z25lZCByYWRpeCkKIHsKICAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDZkMTA1NTguLjk3Y2ZhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC04
Miw2ICs4Miw4IEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2bS5zbWFs
bFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgaWYgKHYuaXNTeW1ib2woKSkKICAgICAgICAg
cmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zeW1ib2xTdHJpbmcoKTsKKyAgICBpZiAodi5pc0JpZ0lu
dCgpKQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmJpZ2ludFN0cmluZygpOwogICAg
IGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KHYpOwogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91
bGQgYmUgdHJlYXRlZApAQCAtMTEyLDcgKzExNCw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51
bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNO
dWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAo
dHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSkKKyAgICBpZiAodHlwZSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAg
ICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggMDBjMTA0OS4uZmFkZmIwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDgwLDYgKzQ4MCw3IEBAIGNvbnN0ZXhw
ciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgdihib29sLCB1c2VDYWxs
SUNzRm9yV2ViQXNzZW1ibHlUb0pTQ2FsbHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdp
bGwgdXNlIENhbGxMaW5rSW5mbyB0byBpbmxpbmUgY2FjaGUgV2FzbSB0byBKUyBjYWxscy4iKSBc
CiAgICAgdihib29sLCB1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZywgZmFsc2UsIE5v
cm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxlcyBhcmUgaWRlbnRpZmllZCBpbiBiYWNr
dHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZhaWxhYmxlLiIpIFwKICAgICB2KGJvb2ws
IHVzZU9iamVjdFJlc3RTcHJlYWQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5h
YmxlIE9iamVjdCBSZXN0L1NwcmVhZCBmZWF0dXJlLiIpIFwKKyAgICB2KGJvb2wsIHVzZUJpZ0lu
dCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0
LiIpIFwKICAgICB2KGJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHBy
b2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xh
aW0gdG8gYmUgdW5kZWNpZGVkLiIpXAogICAgIHYoYm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2Jq
ZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUGFyc2VJbnQuaAppbmRleCBlNDc5NWVjLi5mMzEwMTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKQEAgLTIyNiw0ICsyMjYsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2Vw
dGlvbihTdHJpbmdWaWV3KQogICAgIHJldHVybiBjYWxsYmFjayh2aWV3V2l0aFN0cmluZy52aWV3
KTsKIH0KIAorLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5
aW5nIHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KK2NvbnN0IGNoYXIgcmFkaXhEaWdpdHNb
XSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgK
aW5kZXggODVkNGNiMS4uODg1MGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICAgICBtYWNybyh1bmRlZmluZWQp
IFwKICAgICBtYWNybyhzdHJpbmcpIFwKICAgICBtYWNybyhzeW1ib2wpIFwKKyAgICBtYWNybyhi
aWdpbnQpIFwKICAgICBtYWNybyh0cnVlKQogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEwMyw2ICsx
MDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0U3RyaW5nKCk7CiAgICAg
ICAgIGNhc2UgVHlwZW9mVHlwZTo6RnVuY3Rpb246CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b25TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgICAg
ICByZXR1cm4gYmlnaW50U3RyaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCBiM2NlMDI5Li43MDZkMGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFlNTIxMDcuLjNiZmNmNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAg
LTIwMyw3ICsyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3Vw
UHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KIH0KIAogaW5saW5lIEpTVmFsdWUgU3Ry
dWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5jcHAKaW5k
ZXggZGIxNjJiNy4uYWEzZmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZW9mVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZW9mVHlwZS5jcHAKQEAgLTU0LDYgKzU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFR5cGVvZlR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0
aW9uOgogICAgICAgICBvdXQucHJpbnQoImZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoKKyAgICAgICAgb3V0LnByaW50KCJiaWdpbnQiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9m
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlwZS5oCmluZGV4
IDMzMmZhODEuLjk2NDg1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVvZlR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
b2ZUeXBlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3Mg
VHlwZW9mVHlwZSB7CiAgICAgVW5kZWZpbmVkLAorICAgIEJpZ0ludCwKICAgICBCb29sZWFuLAog
ICAgIE51bWJlciwKICAgICBTdHJpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggM2ZmMGFjZC4uOWMzZTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAi
SlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKQEAgLTMw
OCw2ICszMDksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBzZXRJdGVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2V0SXRlcmF0b3I6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBtYXBJdGVyYXRvclN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKKyAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogCiAgICAgc2VudGluZWxTZXRC
dWNrZXQuc2V0KCp0aGlzLCBKU1NldDo6QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMp
KTsKICAgICBzZW50aW5lbE1hcEJ1Y2tldC5zZXQoKnRoaXMsIEpTTWFwOjpCdWNrZXRUeXBlOjpj
cmVhdGVTZW50aW5lbCgqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
ZmM5MjY3Ni4uYTMzNzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00MDks
NiArNDA5LDcgQEAgcHVibGljOgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGhhc2hNYXBCdWNrZXRN
YXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc2V0SXRlcmF0b3JTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgU3Ryb25n
PFN0cnVjdHVyZT4gYmlnSW50U3RydWN0dXJlOwogCiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogICAgIFN0cm9uZzxKU0NlbGw+IHNlbnRpbmVsU2V0QnVj
a2V0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE4YmIzNjAuLmVjNjVkYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0xMi0wOSAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQg
QmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAy
MDE3LTEyLTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIEZpeCBXVEY6Okhhc2hlciB0dXBsZSBleHBhbnNpb24gd2l0aCB2YXJpYWRpYyBhcmdzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBkZDU3MWUxLi42MDNjNGQwIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTYxNiw2ICs2MTYsMTAgQEAgZGVmIHJ1bkRlZmF1
bHQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImRlZmF1bHQiLCAqKEZU
TF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVu
QmlnSW50RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmln
LWludC1lbmFibGVkIiwgIi0tdXNlQmlnSW50PXRydWUiICwgKihGVExfT1BUSU9OUyArIG9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRM
X09QVElPTlMgKyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCg==
</data>
<flag name="review"
          id="348188"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329106</attachid>
            <date>2017-12-12 04:38:05 -0800</date>
            <delta_ts>2017-12-12 13:02:06 -0800</delta_ts>
            <desc>Patch for landingh</desc>
            <filename>big-int-base.diff</filename>
            <type>text/plain</type>
            <size>123844</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MTIzNmVmYy4uNTM1NTk4YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0xMiAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1l
bnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIgYW5kIFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBiaWdJbnRUZXN0cy55YW1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRv
ci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LW9wZXJhdGlvbnMtZXJyb3IuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9iaWctaW50LWZ1bmN0aW9uLWFwcGx5LmpzOiBBZGRlZC4KKwogMjAxNy0x
Mi0wNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNz
ZW1ibHk6IGRvbid0IGVhZ2VybHkgY2hlY2tzdW0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvYmlnSW50
VGVzdHMueWFtbCBiL0pTVGVzdHMvYmlnSW50VGVzdHMueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wMjA1YzkxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9iaWdJ
bnRUZXN0cy55YW1sCkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IENhaW8g
TGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ICMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIFByb3ZpZGVkIHRvIHNpbXBsaWZ5IHJ1bm5pbmcgQmlnSW50IHRlc3Rz
LiBUbyBiZSByZW1vdmVkIG9uY2UgQmlnSW50CisjIGFyZSBubyBsb25nZXIgYmVoaW5kIGEgZmVh
dHVyZSBmbGFnLgorCistLS0KKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKKyAg
Y21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5q
cworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRoOiBzdHJlc3MvYmlnLWludC1saXRl
cmFsLWxpbmUtdGVybWluYXRvci5qcworICBjbWQ6IHJ1bkJpZ0ludEVuYWJsZWQKKworLSBwYXRo
OiBzdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVycm9yLmpzCisgIGNtZDogcnVuQmlnSW50RW5h
YmxlZAorCistIHBhdGg6IHN0cmVzcy9iaWctaW50LXdoaXRlLXNwYWNlLXRyYWlsaW5nLWxlYWRp
bmcuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKKy0gcGF0aDogc3RyZXNzL2JpZy1pbnQt
ZnVuY3Rpb24tYXBwbHkuanMKKyAgY21kOiBydW5CaWdJbnRFbmFibGVkCisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZnVuY3Rpb24tYXBwbHkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LWZ1bmN0aW9uLWFwcGx5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjFlODc1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWZ1bmN0aW9uLWFwcGx5LmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCBydW5CaWdJbnRFbmFibGVk
CisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVy
biAwOworfQorCit0cnkgeworICAgIGZvby5hcHBseSh7fSwgMm4pOworICAgIGFzc2VydChmYWxz
ZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJzZWNvbmQgYXJndW1l
bnQgdG8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IG11c3QgYmUgYW4gQXJyYXktbGlrZSBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2Zvby5hcHBseSh7fSwgMm4pJykiKQorfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWxpdGVyYWwtbGluZS10ZXJtaW5hdG9yLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWZiNDk5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1saXRlcmFsLWxpbmUtdGVybWluYXRvci5qcwpAQCAtMCwwICsxLDMz
IEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSkgeworICAgIGlm
ICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7Cit9CisKK3Zh
ciBkOworCithc3NlcnQoZXZhbCgiZD01blx1MDAwQSIpID09PSA1bik7Cithc3NlcnQoZCA9PT0g
NW4pOworCithc3NlcnQoZXZhbCgiZD0xNW5cdTAwMEQiKSA9PT0gMTVuKTsKK2Fzc2VydChkID09
PSAxNW4pOworCithc3NlcnQoZXZhbCgiZD0xOW5cdTIwMjg7IikgPT09IDE5bik7Cithc3NlcnQo
ZCA9PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9OTVuXHUyMDI5OyIpID09PSA5NW4pOworYXNz
ZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwQTVuIikgPT09IDVuKTsKK2Fz
c2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAwRDE1biIpID09PSAxNW4pOwor
YXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPVx1MjAyODE5bjsiKSA9PT0gMTlu
KTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD1cdTIwMjk5NW47IikgPT09
IDk1bik7Cithc3NlcnQoZCA9PT0gOTVuKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1saXRlcmFscy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0ODA5MAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGl0ZXJhbHMuanMKQEAgLTAsMCArMSwxMTMg
QEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7CisgICAgaWYg
KCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0VGhyb3dTeW50YXhFcnJvcihpbnB1dCkgeworICAgIHRyeSB7CisgICAgICAg
IGV2YWwoaW5wdXQpOworICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcik7CisgICAgfQorfQorCisv
LyBUZXN0IDAgY29udmVyc2lvbnMKK2xldCBuID0gMG47Cithc3NlcnQobiA9PT0gMG4pOworCitu
ID0gMDBuOworYXNzZXJ0KG4gPT09IDBuKTsKKworLy8gQmluYXJ5IHJlcHJlc2VudGF0aW9uCisK
K24gPSAwYjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwYjEwbjsKK2Fzc2VydChu
ID09PSAybik7CisKK24gPSAwYjAxMG47Cithc3NlcnQobiA9PT0gMm4pOworCitsZXQgYmluYXJ5
U3RyaW5nID0gIjBiMSI7Citmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKQorICAgIGJpbmFy
eVN0cmluZyArPSAiMCI7CisKK24gPSBldmFsKGJpbmFyeVN0cmluZyArICJuIik7Cithc3NlcnQo
biA9PT0gMzQwMjgyMzY2OTIwOTM4NDYzNDYzMzc0NjA3NDMxNzY4MjExNDU2bik7CisKK24gPSAw
QjExMTFuOworYXNzZXJ0KG4gPT09IDE1bik7CisKK24gPSAwQjEwbjsKK2Fzc2VydChuID09PSAy
bik7CisKK2JpbmFyeVN0cmluZyA9ICIwQjEiOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMjg7IGkr
KykKKyAgICBiaW5hcnlTdHJpbmcgKz0gIjAiOworCituID0gZXZhbChiaW5hcnlTdHJpbmcgKyAi
biIpOworYXNzZXJ0KG4gPT09IDM0MDI4MjM2NjkyMDkzODQ2MzQ2MzM3NDYwNzQzMTc2ODIxMTQ1
Nm4pOworCisvLyBPY3RhbCByZXByZXNlbnRhdGlvbgorCituID0gMG83bjsKK2Fzc2VydChuID09
PSA3bik7CisKK24gPSAwbzEwbjsKK2Fzc2VydChuID09PSA4bik7CisKK24gPSAwbzIwbjsKK2Fz
c2VydChuID09PSAxNm4pOworCituID0gMG8wMDAyMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKwor
biA9IDBPN247Cithc3NlcnQobiA9PT0gN24pOworCituID0gME8xMG47Cithc3NlcnQobiA9PT0g
OG4pOworCituID0gME8yMG47Cithc3NlcnQobiA9PT0gMTZuKTsKKworbiA9IDBPMjBuOworYXNz
ZXJ0KG4gPT09IDE2bik7CisKKy8vIEhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCisKK24gPSAw
eGFuOworYXNzZXJ0KG4gPT09IDEwbik7CisKK24gPSAweGZmbjsKK2Fzc2VydChuID09PSAyNTVu
KTsKKworbiA9IDB4MDAwZmZuOworYXNzZXJ0KG4gPT09IDI1NW4pOworCituID0gMHhmYWJjbjsK
K2Fzc2VydChuID09PSA2NDE4OG4pOworCithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjJuIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYjAybiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMGIxbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvODluIik7Cithc3NlcnRUaHJv
d1N5bnRheEVycm9yKCIwbzA4biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMG83bm4iKTsK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4Z24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3Io
IjB4MGduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweGZubiIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMTAwbm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjFhMG5uIik7Cith
c3NlcnRUaHJvd1N5bnRheEVycm9yKCIxMEUyMG4iKTsKKwordHJ5IHsKKyAgICBldmFsKCItLTEw
biIpOworICAgIGFzc2VydChmYWxzZSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtb3BlcmF0aW9ucy1lcnJvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtb3BlcmF0
aW9ucy1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGU0N2I3
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1vcGVyYXRpb25zLWVy
cm9yLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9u
IGFzc2VydChhKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBh
c3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dUeXBlRXJyb3IoaW5wdXQpIHsK
KyAgICB0cnkgeworICAgICAgICBldmFsKGlucHV0KTsKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9y
KTsKKyAgICB9Cit9CisKK2Fzc2VydCgiYSIgKyAxMDBuLCAiYTEwMCIpOworYXNzZXJ0KDEyOG4g
KyAiYmFiYSIsICIxMjhiYWJhIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gKyAzMCIp
OworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2ICsgMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJv
cigiMTIwbiArIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41ICsgMTEyMDM0biIp
OworCithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuIC0gMzAiKTsKK2Fzc2VydFRocm93VHlwZUVy
cm9yKCIzNiAtIDE1biIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjEyMG4gLSAzMC41Iik7Cith
c3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAtIDExMjAzNG4iKTsKKworYXNzZXJ0VGhyb3dUeXBl
RXJyb3IoIjEwbiAqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMzYgKiAxNW4iKTsKK2Fz
c2VydFRocm93VHlwZUVycm9yKCIxMjBuICogMzAuNSIpOworYXNzZXJ0VGhyb3dUeXBlRXJyb3Io
IjQ0LjUgKiAxMTIwMzRuIik7CisKK2Fzc2VydFRocm93VHlwZUVycm9yKCIxMG4gLyAzMCIpOwor
YXNzZXJ0VGhyb3dUeXBlRXJyb3IoIjM2IC8gMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigi
MTIwbiAvIDMwLjUiKTsKK2Fzc2VydFRocm93VHlwZUVycm9yKCI0NC41IC8gMTEyMDM0biIpOwor
Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTBuICoqIDMwIik7Cithc3NlcnRUaHJvd1R5cGVFcnJv
cigiMzYgKiogMTVuIik7Cithc3NlcnRUaHJvd1R5cGVFcnJvcigiMTIwbiAqKiAzMC41Iik7Cith
c3NlcnRUaHJvd1R5cGVFcnJvcigiNDQuNSAqKiAxMTIwMzRuIik7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
dHlwZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTNjZDMwCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLmpzCkBAIC0w
LDAgKzEsMTAgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhKSB7
CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsK
K30KKworYXNzZXJ0KHR5cGVvZiAwbiA9PT0gImJpZ2ludCIpOworYXNzZXJ0KHR5cGVvZiAxbiAh
PT0gIm9iamVjdCIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRl
LXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXdoaXRl
LXNwYWNlLXRyYWlsaW5nLWxlYWRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTIxYTc3NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
d2hpdGUtc3BhY2UtdHJhaWxpbmctbGVhZGluZy5qcwpAQCAtMCwwICsxLDExMSBAQAorLy9AIHJ1
bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEpIHsKKyAgICBpZiAoIWEpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlvbiBhc3Nl
cnRUaHJvd1N5bnRheEVycm9yKGlucHV0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChpbnB1
dCk7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBh
c3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKTsKKyAgICB9Cit9CisKK3ZhciBkOworCith
c3NlcnQoZXZhbCgiZD1cdTAwMEM1biIpID09PSA1bik7Cithc3NlcnQoZCA9PT0gNW4pOworCith
c3NlcnQoZXZhbCgiZD1cdTAwMDkxNW4iKSA9PT0gMTVuKTsKK2Fzc2VydChkID09PSAxNW4pOwor
Cithc3NlcnQoZXZhbCgiZD1cdTAwMEIxOW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9
PT0gMTluKTsKKworYXNzZXJ0KGV2YWwoImQ9XHUwMDBDMTE5bjsiKSA9PT0gMTE5bik7Cithc3Nl
cnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJkPVx1MDAyMDk1bjsiKSA9PT0gOTVuKTsK
K2Fzc2VydChkID09PSA5NW4pOworCithc3NlcnQoZXZhbCgiZD1cdTAwQTA1M247IikgPT09IDUz
bik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2YWwoImQ9XHVGRUZGMzluOyIpID09
PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKK2Fzc2VydChldmFsKCJkPTVuXHUwMDBDIikg
PT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJkPTE1blx1MDAwOSIp
ID09PSAxNW4pOworYXNzZXJ0KGQgPT09IDE1bik7CisKK2Fzc2VydChldmFsKCJkPTE5blx1MDAw
QjsiKSA9PT0gMTluKTsKK2Fzc2VydChkID09PSAxOW4pOworCithc3NlcnQoZXZhbCgiZD0xMTlu
XHUwMDBDOyIpID09PSAxMTluKTsKK2Fzc2VydChkID09PSAxMTluKTsKKworYXNzZXJ0KGV2YWwo
ImQ9OTVuXHUwMDIwOyIpID09PSA5NW4pOworYXNzZXJ0KGQgPT09IDk1bik7CisKK2Fzc2VydChl
dmFsKCJkPTUzblx1MDBBMDsiKSA9PT0gNTNuKTsKK2Fzc2VydChkID09PSA1M24pOworCithc3Nl
cnQoZXZhbCgiZD0zOW5cdUZFRkY7IikgPT09IDM5bik7Cithc3NlcnQoZCA9PT0gMzluKTsKKwor
YXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAwQ2RcdTAwMENcdTAwMEM9XHUwMDBDXHUwMDBDNW5cdTAw
MEM7XHUwMDBDIikgPT09IDVuKTsKK2Fzc2VydChkID09PSA1bik7CisKK2Fzc2VydChldmFsKCJc
dTAwMDlcdTAwMDlkXHUwMDA5XHUwMDA5PVx1MDAwOVx1MDAwOTE1blx1MDAwOTsiKSA9PT0gMTVu
KTsKK2Fzc2VydChkID09PSAxNW4pOworCithc3NlcnQoZXZhbCgiXHUwMDBCXHUwMDBCZFx1MDAw
Qlx1MDAwQj1cdTAwMEJcdTAwMEIxOW5cdTAwMEI7IikgPT09IDE5bik7Cithc3NlcnQoZCA9PT0g
MTluKTsKKworYXNzZXJ0KGV2YWwoIlx1MDAwQ1x1MDAwQ2RcdTAwMEM9XHUwMDBDXHUwMDBDMTE5
bjsiKSA9PT0gMTE5bik7Cithc3NlcnQoZCA9PT0gMTE5bik7CisKK2Fzc2VydChldmFsKCJcdTAw
MjBkXHUwMDIwPVx1MDAyMFx1MDAyMDk1bjsiKSA9PT0gOTVuKTsKK2Fzc2VydChkID09PSA5NW4p
OworCithc3NlcnQoZXZhbCgiXHUwMEEwZFx1MDBBMD1cdTAwQTBcdTAwQTA1M247IikgPT09IDUz
bik7Cithc3NlcnQoZCA9PT0gNTNuKTsKKworYXNzZXJ0KGV2YWwoIlx1RkVGRmRcdUZFRkY9XHVG
RUZGXHVGRUZGMzluOyIpID09PSAzOW4pOworYXNzZXJ0KGQgPT09IDM5bik7CisKKy8vIEFzc2Vy
dCBlcnJvcnMKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMEMybiIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwMEIxMTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJv
cigiMGJcdTAwMDkxMTExMTFuIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwYlx1MDAyMDEw
MTAxbiIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMGJcdTAwQTAxMDExbiIpOworYXNzZXJ0
VGhyb3dTeW50YXhFcnJvcigiMGJcdUZFRkYxMTEwMDBuIik7CisKK2Fzc2VydFRocm93U3ludGF4
RXJyb3IoIjBvXHUwMDBDMm4iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjBvXHUwMDBCNDVu
Iik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1MDAwOTc3biIpOworYXNzZXJ0VGhyb3dT
eW50YXhFcnJvcigiMG9cdTAwMjA3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1
MDBBMDE3NzduIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIwb1x1RkVGRjE3MzYxbiIpOwor
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIweFx1MDAwQzJuIik7Cithc3NlcnRUaHJvd1N5bnRh
eEVycm9yKCIweFx1MDAwQjQ1biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMHhcdTAwMDk3
N24iKTsKK2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjB4XHUwMDIwNzc3biIpOworYXNzZXJ0VGhy
b3dTeW50YXhFcnJvcigiMHhcdTAwQTAxNzc3biIpOworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigi
MHhcdUZFRkYxNzM2MW4iKTsKKworYXNzZXJ0VGhyb3dTeW50YXhFcnJvcigiMlx1MDAwQ24iKTsK
K2Fzc2VydFRocm93U3ludGF4RXJyb3IoIjQ1XHUwMDBCbiIpOworYXNzZXJ0VGhyb3dTeW50YXhF
cnJvcigiNzdcdTAwMDluIik7Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCI3NzdcdTAwMjBuIik7
Cithc3NlcnRUaHJvd1N5bnRheEVycm9yKCIxNzc3XHUwMEEwbiIpOworYXNzZXJ0VGhyb3dTeW50
YXhFcnJvcigiMTczNjFcdUZFRkZuIik7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNk
MDdmN2MuLjY0OGUyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBA
QAorMjAxNy0xMi0xMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0lu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgYW5kIFl1c3VrZSBTdXp1a2kuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEJpZ0ludCBw
cmltaXRpdmUgb24KKyAgICAgICAgSmF2YVNjcmlwdENvcmUuIFdlIGFyZSBpbnRyb2R1Y2luZyBC
aWdJbnQgcHJpbWl0aXZlIGFuZAorICAgICAgICBpbXBsZW1lbnRpbmcgaXQgb24gSlNCaWdJbnQg
YXMgYSBzdWJjbGFzcyBvZiBKU0NlbGwgd2l0aCBbW0JpZ0ludERhdGFdXQorICAgICAgICBmaWVs
ZCBpbXBsZW1lbnRlZCBjb250aWd1b3NseSBvbiBtZW1vcnkgYXMgaW5saW5lIHN0b3JhZ2Ugb2Yg
SlNCaWdJbnQgdG8KKyAgICAgICAgdGFrZSBhZHZhbnRhZ2VzIG9uIHBlcmZvcm1hbmNlIGR1ZSB0
byBjYWNoZSBsb2NhbGl0eS4gVGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFsbG93cyA2NCBv
ciAzMiBiaXR3aXNlIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4KKyAgICAgICAgSlNCaWdJbnQgYWxz
byBoYXMgbV9zaWduIHRvIHN0b3JlIHRoZSBzaWduIG9mIFtbQmlnSW50RGF0YV1dIGFuZAorICAg
ICAgICBtX2xlbmd0aCB0aGF0IGtlZXBzIHRyYWNrIG9mIEJpZ0ludCBsZW5ndGguCisgICAgICAg
IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBmb2xsb3dpbmcgdGhlIFY4IG9uZS4gW1tCaWdJbnREYXRh
XV0gaXMgbWFuaXB1bGF0ZWQKKyAgICAgICAgYnkgSlNCaWdJbnQ6OnNldERpZ2l0KGluZGV4LCB2
YWx1ZSkgYW5kIEpTQmlnSW50OjpkaWdpdChpbmRleCkgb3BlcmF0aW9ucy4KKyAgICAgICAgV2Ug
YWxzbyBoYXZlIHNvbWUgb3BlcmF0aW9ucyB0byBzdXBwb3J0IGFyaXRobWV0aWNzIG92ZXIgZGln
aXRzLgorCisgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RpY2UgdGhhdCBvbiBvdXIgcmVw
cmVzZW50YXRpb24sCisgICAgICAgIEpTQmlnSW50OjpkYXRhU3RvcmFnZSgpWzBdIHJlcHJlc2Vu
dHMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGRpZ2l0IGFuZAorICAgICAgICBKU0JpZ0ludDo6ZGF0
YVN0b3JhZ2UoKVttX2xlbmd0aCAtIDFdIHJlcHJlc2VudHMgdGhlIG1vc3Qgc2lnaW5pZmljYW50
IGRpZ2l0LgorCisgICAgICAgIFdlIGFyZSBhbHNvIGludHJvZHVjaW5nIGludG8gdGhpcyBQYXRj
aCB0aGUgQmlnSW50IGxpdGVyYWxzIGxleGVyIGFuZAorICAgICAgICBzeW50YXggcGFyc2luZyBz
dXBwb3J0LiBUaGUgb3BlcmF0aW9uIFN0cmljdCBFcXVhbHMgb24gQmlnSW50cyBpcyBhbHNvIGJl
aW5nCisgICAgICAgIGltcGxlbWVudGVkIHRvIGVuYWJsZSB0ZXN0cy4KKyAgICAgICAgVGhlc2Ug
ZmVhdHVyZXMgYXJlIGJlaW5nIGltcGxlbWVudGVkIGJlaGluZCBhIHJ1bnRpbWUgZmxhZ2UgIi0t
dXNlQmlnSW50IiBhbmQKKyAgICAgICAgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJpZ0lu
dEVudHJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCaWdJ
bnRFbnRyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6anNWYWx1ZSBjb25zdCk6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGxsaW50L0xM
SW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9u
cyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQmln
SW50KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6cGFyc2VCaW5hcnkpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VPY3RhbCk6Cisg
ICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZURlY2ltYWwpOgorICAgICAgICAoSlNDOjpMZXhl
cjxUPjo6bGV4KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlSGV4KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpCaWdJbnROb2RlOjpCaWdJbnROb2RlKToKKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQmlnSW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmlnSW50Tm9kZTo6dmFsdWUpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQ
cmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAg
ICAgICAqIHBhcnNlci9SZXN1bHRUeXBlLmg6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmRl
ZmluaXRlbHlJc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6Om1pZ2h0
QmVCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjppc05vdEJpZ0ludCBj
b25zdCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmFkZFJlc3VsdFR5cGUpOgorICAgICAg
ICAoSlNDOjpSZXN1bHRUeXBlOjpiaWdJbnRUeXBlKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlw
ZTo6Zm9yQWRkKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yTG9naWNhbE9wKToKKyAg
ICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVCaWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkpTQmlnSW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OkpTQmln
SW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNy
ZWF0ZVplcm8pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YWxsb2NhdGlvblNpemUpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1ByaW1p
dGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9y
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmlzWmVybyk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6ZGlnaXRBZGQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXRT
dWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXRNdWwpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6ZGlnaXRQb3cpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXREaXYpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW50ZXJuYWxNdWx0aXBseUFkZCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjplcXVhbFRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFi
c29sdXRlRGl2U21hbGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y2FsY3VsYXRlTWF4aW11
bUNoYXJhY3RlcnNSZXF1aXJlZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZ0dl
bmVyaWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmlnaHRUcmltKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmFsbG9jYXRlRm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVzdGlt
YXRlZFNpemUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9OdW1iZXIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0
U2lnbik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzaWduIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpsZW5ndGgg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6b2Zmc2V0T2ZEYXRhKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRhdGFT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpZ2l0KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnNldERpZ2l0KToKKyAgICAgICAgKEpTQzo6YXNCaWdJbnQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dD
YXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmln
SW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlu
bGluZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omdl
dFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0JpZ0ludCBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6Y2x6NjQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJp
bmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1BhcnNlSW50Lmg6Cisg
ICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJp
bmdzOjp0eXBlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9UeXBlb2ZUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE3LTEyLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgSW5mZXJyZWRUeXBlIHNob3VsZCBub3QgdXNlIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzA5NDYzYS4uYzFiZTI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwNSw3ICs4MDUsNyBAQAogCQkyQUY3MzgyRDE4QkJC
RjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVj
dHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0NEUx
QjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHls
aWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFE
ODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsgfTsKLQkJMzdDNzM4RDIxRURC
NTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhEMTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAq
LzsgfTsKKwkJMzdDNzM4RDIxRURCNTZFNDAwM0YyQjBCIC8qIFBhcnNlSW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M3MzhEMTFFREI1NjcyMDAz
RjJCMEIgLyogUGFyc2VJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJh
dGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFE
MkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1w
bGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTQyLDYgKzExNDIsNyBAQAogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIw
MTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZh
dGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYg
LyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5RUJDQjYwRThDNkQ0QTAw
ODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QURE
MTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zNjc4LDYgKzM2NzksOCBAQAogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCaWdJbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODY4OTIxQzMxRjlDMjk0NzAwMTE1OUY2IC8qIEpTQmlnSW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlnSW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmFz
bTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0OTQsOSArNjQ5Nyw5IEBA
CiAJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAq
LywKIAkJCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmNwcCAqLywKIAkJCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFC
MTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUE3QThBRjJDMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQxNkFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMyQXJy
YXkuaCAqLywKKwkJCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8s
CiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3BwICov
LAogCQkJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggKi8s
CiAJCQkJQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8sCkBA
IC02NTQ0LDYgKzY1NDcsOCBAQAogCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0Fz
eW5jRnVuY3Rpb24uaCAqLywKIAkJCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyogSlNBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4Q0Eg
LyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCisJCQkJODY4OTIxQzMxRjlDMjk0NzAw
MTE1OUY2IC8qIEpTQmlnSW50LmNwcCAqLywKKwkJCQk4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYg
LyogSlNCaWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3Vu
ZEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3Vu
ZEZ1bmN0aW9uLmggKi8sCiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVl
LmNwcCAqLywKQEAgLTY1OTUsOSArNjYwMCw5IEBACiAJCQkJQkM3NTZGQzYwRTIwMzFCMjAwREU3
RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCAqLywKIAkJCQlCQzc1NkZDNzBFMjAz
MUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAqLywKIAkJCQk3OUI4MTk5
MjFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggKi8sCi0JCQkJMEYy
QjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggKi8sCiAJCQkJMEYyQjY2Q0Ex
N0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oICovLAogCQkJCTBGMkI2NkNCMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0ludDMyQXJyYXkuaCAqLywKKwkJCQkwRjJCNjZDOTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJCQlFMzNGNTA3RTFCODQyOUE0MDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2UuY3BwICovLAogCQkJCUUzM0Y1MDdGMUI4NDI5QTQwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oICovLAogCQkJCUUzM0Y1MDc2MUI4NDIyNTcwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTY2ODYsMTAgKzY2
OTEsMTAgQEAKIAkJCQk1M0YyNTZFMTFCODdFMjgwMDBCNEI3NjggLyogSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLywKIAkJCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYg
LyogSlNUeXBlSW5mby5oICovLAotCQkJCTBGMkI2NkQyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1Vp
bnQ4QXJyYXkuaCAqLywKLQkJCQkwRjJCNjZEMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OENs
YW1wZWRBcnJheS5oICovLAogCQkJCTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQx
NkFycmF5LmggKi8sCiAJCQkJMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJy
YXkuaCAqLywKKwkJCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5Lmgg
Ki8sCisJCQkJMEYyQjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXku
aCAqLywKIAkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCAqLywK
IAkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8sCiAJCQkJNzA5
RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgKi8sCkBAIC02OTAzLDExICs2
OTA4LDExIEBACiAJCQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxv
Zy5oICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLywK
IAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAotCQkJCUE3QThB
RjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8sCi0JCQkJQTdBOEFGMzExN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMzIxN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8sCiAJCQkJODY2NzM5RDExM0JGREU3MTAw
MjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovLAogCQkJCUE3QThBRjMzMTdBREI1RjMw
MDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50OEFycmF5LmggKi8sCisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZh
ck9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNl
dC5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8sCkBAIC04
MDM5LDcgKzgwNDQsNiBAQAogCQkJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVDRjk4OTFFOUVENjUyMDBDMTg2OTIgLyogQWly
U3RhY2tBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4QzFCREFDREM3MDA4
MEZGNzQgLyogQWlyU3RhY2tTbG90LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjQxNTQ1QjFGRDIw
QjIyMDAxQjU4RjYgLyogQ29uc3RyYWludENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCQkQ5RTFDNUZGNDA1MDAyM0VGMjMgLyogQWlyU3RhY2tTbG90S2luZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1OEUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1OEYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcElubGluZXMuaCBp
biBIZWFkZXJzICovLApAQCAtODA1MCw3ICs4MDU0LDkgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3
MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYz
M0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1
cmVNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQTFENDE5MkM4MDA1NjA5RDkgLyog
QWxsb2NhdG9yQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMENCNUUxRkNFNEUz
NzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzcz
MDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1RUE3MEU5MTlGNUIxMDEwMDk4RjVFQyAvKiBBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0OEQxOTExNzcyMzY1QjAw
QzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODA1OCwx
NCArODA2NCwxMiBAQAogCQkJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjA1MTQwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDE0MUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVu
dHNNb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkJGOTJCQTFGRDc3MDA0MDBBQzI4QTggLyog
SW5mZXJyZWRTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUEyMjgz
NjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkRDRTEzMjFGQjExREE0MDA2RjM5
MDEgLyogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4
MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTE1LDEwICs4MTE5LDgg
QEAKIAkJCQkwRjMzOERGQTFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjMzRkNGQjFDMTYyNUJFMDAzMjNGNjcgLyogQjNDRkcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NTA2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrU3BlY2lhbC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRkUyQjBCNzMxRkQ5RUY3MDAwNzVEQTVGIC8qIEpTQ1BvaXNv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hl
Y2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MEExQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQ29tbW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkRDRTEyRDFGQUZCNEU1MDA2RjM5MDEg
LyogSXNvU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTBDMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0NvbW11dGF0aXZpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBDMUJG
MDI3NkMwMDEzQzg4RiAvKiBCM0NvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTE5
Qjc4MDFFMDM1NTlDMDA1QkVFRDggLyogQjNDb21waWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgx
NzAsNyArODE3Miw2IEBACiAJCQkJMEZFQzg1MkExQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNzMwOEQxQzBCRDI5MTAwMDUyQkZBIC8qIEIz
UGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTJDMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1Byb2NlZHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUyQjBCNjkxRkQyMjdFMDAw
NzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUyRDFC
REFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjcyNUNBQTFDNTAzREVEMDBBRDk0M0EgLyogQjNQdXJlQ1NFLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzQyMkE2NzFDMTYyNjc4MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyNDMsNyArODI0NCw2IEBACiAJCQkJNjUxNEYyMTkxOEIzRTE2
NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4ODVFMTExODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgw
MjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RjREOEM3NTFGQzdBOTdEMDAxRDMyQUMgLyogQ29uc3RyYWludFBhcmFsbGVsaXNtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NUI4MzkyRTFCQUNBRDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3Zlcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzYwMUYzNzlGNTMwMEY1OUI2QyAvKiBDYWdlZEJh
cnJpZXJQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC04Mjg4LDYgKzgyODgsNyBAQAogCQkJCTY1
NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4MkUzOTE0MUFCMTREMDAxNzlDOTQgLyogQ29tcGFjdEpJVENv
ZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBD
b21waWxhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMkExRkFGQTg1RjAw
NkYzOTAxIC8qIENvbXBsZXRlU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0Y0
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZG
Qzc1MTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKU0xvY2suaCBpbiBI
ZWFkZXJzICovLApAQCAtODI5OSw2ICs4MzAwLDggQEAKIAkJCQlBNTU3MTRCRTFDRDgwNDlGMDAw
NEQyQzYgLyogQ29uc29sZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNzQxODlC
MDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQzk5
RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0MTU0NUIxRkQyMEIyMjAwMUI1OEY2IC8qIENvbnN0cmFpbnRDb25jdXJyZW5jeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0RDhDNzUxRkM3QTk3RDAwMUQzMkFDIC8qIENvbnN0cmFpbnRQYXJh
bGxlbGlzbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3REYxMzQxRTI5NzBENzAwOTU5NTFCIC8q
IENvbnN0cmFpbnRWb2xhdGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzU0NjIyQjFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEMzRjYwRTE2RjVDRDAwQjM0NDYwIC8qIENvbnN0cnVjdERhdGEuaCBpbiBIZWFkZXJzICovLApA
QCAtODMzNyw3ICs4MzQwLDYgQEAKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZH
QWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1
NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5
MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRjY0NTMxODFGRDI0NkE3MDAyNDMyQTEgLyogTWFya1N0YWNrTWVy
Z2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3MTQzRkNEM0YwMDY4
Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQzRTQwMjFC
NjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBv
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAyQzVDOUYgLyogREZH
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTg1NDcsNyAr
ODU0OSw2IEBACiAJCQkJQTU0OTgyMDQxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlv
bkV2ZW50TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRC
NTMyMyAvKiBBbGxvY2F0b3JGb3JNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEyREUxMDE5
NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MDAwRTE2RjVDRDAwQjM0NDYwIC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjM0LDcgKzg2MzUsNiBAQAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3
QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkFFMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUYxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdS
ZWZDb3VudGVkU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZCRjkyQjkxRkQ3NkZG
RjAwQUMyOEE4IC8qIEluZmVycmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFC
Q0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjk3MTUzMTFFQjI4QkVFMDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTRFOEVCMDE4QkZGQkJCMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NjY1LDcgKzg2NjUsNiBAQAogCQkJCUM0NzAzQ0Q1MTkyODQ0Q0MwMDEzRkJF
QSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzBCNzkxOTUx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcwQjc5MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZEQ0UxMkExRkFGQTg1RjAwNkYzOTAx
IC8qIENvbXBsZXRlU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTk5MUMwMjRB
MjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
Qjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAxOTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjkyLDYgKzg2OTEsNyBAQAogCQkJCTE0QkE3QTk4MTNB
QURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzNEMkIwQTFEMzQz
MTYyMDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDcwQTQ5MUQ1
NDNBOTMwMDZFNzIzMiAvKiBIZWFwQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RENFMTIyMUZBRTg1OEMwMDZGMzkwMSAvKiBIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMENBRUZGMUVDNERBODgwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVy
UG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhl
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTg3MTIsNiArODcxMiw4IEBACiAJCQkJMEZC
N0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQzODZBNzkxREQ2OTg5QzAwODY1MkM0IC8qIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkY5MkI5MUZENzZGRkYwMEFDMjhB
OCAvKiBJbmZlcnJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCRjkyQkExRkQ3
NzAwNDAwQUMyOEE4IC8qIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQTc1MjMxQjk0QkZBOTAwMTEwNjYwIC8qIEluZmVycmVkVHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGQzkyMTIxQjk0RDRERjAwNzFERDY2IC8qIEluZmVycmVkVHlwZVRh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY4QkRFQjFBRDRDRjcxMDBERkU4ODQgLyogSW5m
ZXJyZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzczLDYgKzg3NzUsOCBAQAogCQkJCTcw
OEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUzQkQyOTAwMjEzRjY0IC8qIEludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRENFMTMyMUZCMTFEQTQwMDZGMzkwMSAv
KiBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTEy
RDFGQUZCNEU1MDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThC
OUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRp
b25zLmggaW4gSGVhZGVycyAqLywKQEAgLTg4MTQsMTMgKzg4MTgsMTMgQEAKIAkJCQkwRjJCNjZF
NTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZFNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTkxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
QXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjlEQUEwOTFGRDFDM0NGMDA3
OUM1QjIgLyogTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkVBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5
bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEJDMDY0ODkxRTFBQkE2NDAwQjJCOENB
IC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MTgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3
RDcwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZGQTlFOTIxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
Q2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODQyLDYgKzg4NDYsOSBAQAog
CQkJCUE1RUE3MEVFMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBw
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlND
b250ZXh0UmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIw
MDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTJC
MEI3MzFGRDlFRjcwMDA3NURBNUYgLyogSlNDUG9pc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBKU0NTY3JhbWJsZWRQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZF
QzE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTAy
LDcgKzg5MDksNiBAQAogCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1Mzkg
LyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMThDQkMxMUI4QUVGNTEw
MEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjQwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg5MzIsMTMgKzg5MzgsMTMgQEAK
IAkJCQlBNzkwREQ3MDE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjdERjEzRjFFMkFGQzREMDA5NTk1MUIgLyogSlNTdHJpbmdI
ZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYw
QiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUMwRUMzMUFBMEQ3
REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAw
QjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0RGMTNGMUUyQUZDNEQwMDk1OTUxQiAvKiBK
U1N0cmluZ0hlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBB
MjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
RUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFENUMzNkVBMUY3NUFENkEwMDBCQ0FBRiAvKiBKU1RvV2FzbS5oIGluIEhl
YWRlcnMgKi8sCkBAIC04OTYzLDcgKzg5NjksNiBAQAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNC
MDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEIyODZCMUVCOEU2Q0YwMDBFQjVEMiAvKiBKU1dlYWtQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMgLyogVmlz
aXRDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkg
LyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZFQjFGNzVBRDczMDAwQkNB
QUYgLyogSlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ5RTg1MkYxRThBMEM3
QzAwOERFMzlFIC8qIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAt
OTAzOSw3ICs5MDQ0LDkgQEAKIAkJCQkwRjdERjEzNTFFMjk3MERDMDA5NTk1MUIgLyogTWFya2Vk
U3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2MEUzODFFMDUxN0JCMDAzMTQ2
MkMgLyogTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjYwRTNBMUUw
NTE3QzEwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY5REFBMDkxRkQxQzNDRjAwNzlDNUIyIC8qIE1hcmtpbmdDb25zdHJhaW50U29sdmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY0NTMxODFGRDI0NkE3MDAyNDMyQTEgLyogTWFya1N0
YWNrTWVyZ2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTJFNENEMTUyMzg5
RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MEE0ODUx
QTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDNDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTkw
ODMsNyArOTA5MCw2IEBACiAJCQkJRTNDMjk1REQxRUQyQ0JEQTAwRDMwMTZGIC8qIE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQz
RTQwQTFCNjE4QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNFNDBDMUI2MThCNjYwMEM4MEUxRSAvKiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0RDhDNzgxRkNBM0NGQTAwMUQzMkFD
IC8qIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0
NjBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTA5MSw2ICs5MDk3LDcgQEAKIAkJCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUg
LyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0ODBFMTZGNUNE
MDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMjI4RUQxNDM2
QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOURBQTBBMUZE
MUMzRDMwMDc5QzVCMiAvKiBQYXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NEIwRTE2RjVDRDAwQjM0NDYwIC8qIFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMwNTJDMzUwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggaW4gSGVhZGVy
cyAqLywKQEAgLTkyMTAsNiArOTIxNyw3IEBACiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2QUIz
IC8qIFNoYWRvd0NoaWNrZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIw
MDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUz
MDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3Ry
YWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNp
bXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBNzhGMTEz
QUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMTYw
RkU3MTVGN0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtOTI5MSw3ICs5Mjk5LDYgQEAKIAkJCQkwRjk1MkFCRDFCNDg3QTc3MDBDMzY3QzUgLyog
VHJhY2tlZFJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA2MTdCNkI1QUIw
MEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEY5REFBMEExRkQxQzNEMzAwNzlDNUIyIC8qIFBhcmFsbGVsU291cmNlQWRhcHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0Qjk0REMxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVk
QXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwOTE3QjZCNUFCMDBBN0FF
M0YgLyogVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzBCMTdCNkI1QUIw
MEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzAxLDcgKzkz
MDgsNiBAQAogCQkJCTBGRkI2QzM5MUFGNDhEREMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MkM5NTJCNzE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERFQzE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVBy
b2ZpbGVyTG9nLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkRDRTEyMjFGQUU4NThDMDA2RjM5MDEg
LyogSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERGMDE5ODMyREQ2MDA3
RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NEIxNThFQkU5MTAw
NENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3NDExNThFQkU4RDAw
NENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTMzMiw2ICs5MzM4
LDcgQEAKIAkJCQkwRjZDNzM1MTFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVE
ZXRhaWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJEMUFBOTA5NTYwMEQzM0IzMyAvKiBW
YXJPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4RiAv
KiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNEQ4Qzc0MUZDN0E5N0Ew
MDFEMzJBQyAvKiBWaXNpdENvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTUyQUExMURG
Nzg2MDkwMEUwNkZCRCAvKiBWaXNpdFJhY2VLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDIwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4RDNBNTYx
OTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDYwNGMzOTkuLmIxZDZhYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTc3Miw2ICs3NzIsNyBAQCBydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAogcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKK3J1
bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAKIHJ1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDg1MDI5NDQuLjJkMjEyMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01
Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMjViNjRiZC4uNzRmN2UwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKQEAgLTE3ODQsNiArMTc4NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAog
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTeW1ib2xUeXBlKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CisgICAgICAgICAgICAg
ICAgcmV3aW5kVW5hcnlPcCgpOworICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfaXNfY2Vs
bF93aXRoX3R5cGUpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRl
eCk7CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEJpZ0ludFR5cGUpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7
CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9pc19vYmplY3Rfb3JfbnVsbCk7CkBAIC0z
MTIxLDYgKzMxMzAsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdP
YmplY3QoUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBkc3Q7CiB9CiAKK0pTVmFsdWUgQnl0
ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIHVpbnQ4X3QgcmFkaXgpCit7CisgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShC
aWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgpLCBbJl0geworICAgICAgICBK
U0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgKnZtKCks
IGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4KTsKKyAgICAgICAgLy8gRklYTUU6IFtFU05leHRd
IEVuYWJsZXMgYSB3YXkgdG8gdGhyb3cgYW4gZXJyb3Igb24gQnl0ZUNvZGVHZW5lcmF0b3Igc3Rl
cAorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
MTM5CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpZ0ludEluTWFwKTsKKyAgICAgICAgYWRkQ29u
c3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CisKKyAgICAgICAgcmV0dXJuIGJpZ0ludEluTWFwOwor
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKK30KKwogSlNTdHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9y
OjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAg
IEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBs
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTUzNGJiLi4x
ZGVjYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgpAQCAtNDYsNiArNDcsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRW
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDAwLDEwICsxMDAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGFsbG9jYXRlQ2FsbGVlU2F2ZVNwYWNlKCk7CiAgICAgICAgIHZvaWQgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPiBO
dW1iZXJNYXA7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpT
U3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTdHJpbmdNYXA7Ci0gICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lzdGVySUQqPiBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwotICAgICAgICAKKyAgICAgICAgdXNpbmcgQmlnSW50TWFw
RW50cnkgPSBzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50OF90PjsKKworICAgICAg
ICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CisgICAgICAgIHVz
aW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNT
dHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJ
bnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCo+OworICAgICAgICB1c2lu
ZyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwID0gSGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtl
eT4sIFJlZ2lzdGVySUQqPjsKKwogICAgICAgICAvLyBIZWxwZXIgZm9yIGVtaXRDYWxsKCkgYW5k
IGVtaXRDb25zdHJ1Y3QoKS4gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBzZXQgb2YKICAgICAgICAg
Ly8gZXhwZWN0ZWQgZnVuY3Rpb25zIGhhdmUgaWRlbnRpY2FsIGJlaGF2aW9yIGZvciBib3RoIGNh
bGwgYW5kIGNvbnN0cnVjdAogICAgICAgICAvLyAoaS5lLiAiT2JqZWN0KCkiIGlzIGlkZW50aWNh
bCB0byAibmV3IE9iamVjdCgpIikuCkBAIC0xMDg2LDYgKzEwOTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNv
bnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNWYWx1ZSBhZGRCaWdJbnRDb25zdGFudChjb25z
dCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRl
bXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4mJik7CiAK
ICAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTExODUs
NiArMTE5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RW5j
b2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24sIHVuc2lnbmVkLCBFbmNvZGVkSlNWYWx1ZVdp
dGhSZXByZXNlbnRhdGlvbkhhc2gsIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFz
aFRyYWl0cz4gSlNWYWx1ZU1hcDsKICAgICAgICAgSlNWYWx1ZU1hcCBtX2pzVmFsdWVNYXA7CiAg
ICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7CisgICAgICAgIElkZW50aWZp
ZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7CiAgICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAg
bV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOwogCiAgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1Y3Rpb25zIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMjM1YWE2Yi4uN2YzZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTIyLDYgKzEyMiwxMSBAQCBKU1ZhbHVl
IFN0cmluZ05vZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZFN0cmluZ0NvbnN0YW50KG1fdmFsdWUpOwogfQogCitK
U1ZhbHVlIEJpZ0ludE5vZGU6OmpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmFkZEJpZ0ludENvbnN0YW50KG1fdmFsdWUs
IG1fcmFkaXgpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVy
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIE51
bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZjY4ZWFkZi4uNjVhYjhhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQg
aXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFs
dWUmCiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVl
Rm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8o
KTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0g
U3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKKyAgICAgICAgICAgIEFT
U0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
LnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwogICAg
ICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUu
aXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0
IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM1ZTg0YTUuLmRjMjk0
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhCiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6Cisg
ICAgY2FzZSBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNj
b3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwg
IGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGFkODY5ZjIuLjRjZjhjNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKFN0cmlu
Z0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVyID09IDgpOwogCiAgICAgewotICAgICAgICB1aW50
MzJfdCBiaXRzID0gMHgxMjAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDQ4MDAwMDsK
ICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAgICAgQVNT
RVJUKEFyaXRoUHJvZmlsZTo6ZnJvbUludChiaXRzKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJ
bnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gMHgyMjAwMDA7
CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDg4MDAwMDsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0
aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgICAgIEFTU0VSVChBcml0aFByb2ZpbGU6OmZy
b21JbnQoYml0cykucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAg
IHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IDB4MjQwMDAwOworICAgICAgICB1aW50MzJfdCBi
aXRzID0gMHg5MDAwMDA7CiAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRzKTsKICAgICAgICAgQXJp
dGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJl
cigpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0m
IHZtKQogICAgICAgICBBU1NFUlQoQXJpdGhQcm9maWxlOjpmcm9tSW50KGJpdHMpLnJoc09ic2Vy
dmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICB1aW50MzJf
dCBiaXRzID0gMHgxNDAwMDA7CisgICAgICAgIHVpbnQzMl90IGJpdHMgPSAweDUwMDAwMDsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGJpdHMpOwogICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9m
aWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmNGQz
NjAwLi40ZTJiODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTMsMTIgKzI1MywxMiBAQCBjb25zdCBJc0ludmFs
aWRhdGVkID0gY29uc3RleHByIElzSW52YWxpZGF0ZWQKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWls
TWFya2VyID0gY29uc3RleHByIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVl
CiAKICMgQXJpdGhQcm9maWxlIGRhdGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IDB4MTAwMDAw
Ci1jb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSAweDEyMDAwMAotY29uc3QgQXJpdGhQcm9maWxl
TnVtYmVyID0gMHgyMDAwMDAKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IDB4MjIwMDAw
Ci1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSAweDI0MDAwMAotY29uc3QgQXJpdGhQ
cm9maWxlSW50TnVtYmVyID0gMHgxNDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9IDB4NDAw
MDAwCitjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSAweDQ4MDAwMAorY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVyID0gMHg4MDAwMDAKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IDB4ODgw
MDAwCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSAweDkwMDAwMAorY29uc3QgQXJp
dGhQcm9maWxlSW50TnVtYmVyID0gMHg1MDAwMDAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRp
b25zLgogaWYgSlNWQUxVRTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCmluZGV4IGFiOTU2MTMuLjNhZDM4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC0yMzIsNiArMjMyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgaW5j
Q29uc3RhbnRzKCk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEludGVnZXJO
b2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CisgICAgCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUJpZ0ludChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
KiBiaWdJbnQsIHVpbnQ4X3QgcmFkaXgpCisgICAgeworICAgICAgICBpbmNDb25zdGFudHMoKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlnSW50Tm9kZShsb2NhdGlvbiwg
KmJpZ0ludCwgcmFkaXgpOworICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJp
bmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogc3Ry
aW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNmVl
NmM1ZC4uYWI1ODVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAj
aW5jbHVkZSA8d3RmL2R0b2EuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNTAwLDcgKzE1MDEs
NyBAQCB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNl
VGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6cGFyc2VIZXgoZG91YmxlJiByZXR1cm5WYWx1
ZSkKK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBOdW1iZXJQYXJz
ZVJlc3VsdAogewogICAgIC8vIE9wdGltaXphdGlvbjogbW9zdCBoZXhhZGVjaW1hbCB2YWx1ZXMg
Zml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBoZXhWYWx1ZSA9IDA7CkBAIC0xNTEyLDEw
ICsxNTEzLDggQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJzZUhleChkb3VibGUm
IHJldHVyblZhbHVlKQogICAgICAgICAtLW1heGltdW1EaWdpdHM7CiAgICAgfSB3aGlsZSAoaXNB
U0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgbWF4aW11bURpZ2l0cyA+PSAwKTsKIAotICAgIGlm
IChtYXhpbXVtRGlnaXRzID49IDApIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBoZXhWYWx1ZTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoTElLRUxZKG1heGltdW1EaWdpdHMgPj0g
MCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIGhleFZhbHVlOwogCiAgICAg
Ly8gTm8gbW9yZSBwbGFjZSBpbiB0aGUgaGV4VmFsdWUgYnVmZmVyLgogICAgIC8vIFRoZSB2YWx1
ZXMgYXJlIHNoaWZ0ZWQgb3V0IGFuZCBwbGFjZWQgaW50byB0aGUgbV9idWZmZXI4IHZlY3Rvci4K
QEAgLTE1MzMsMTEgKzE1MzIsMTQgQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpwYXJz
ZUhleChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAg
IHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZl
cjguc2l6ZSgpLCAxNik7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYm
IG1fY3VycmVudCA9PSAnbicpKQorICAgICAgICByZXR1cm4gbWFrZUlkZW50aWZpZXIobV9idWZm
ZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CisgICAgCisgICAgcmV0dXJuIHBhcnNlSW50
T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMTYpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VC
aW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6
cGFyc2VCaW5hcnkoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogewogICAg
IC8vIE9wdGltaXphdGlvbjogbW9zdCBiaW5hcnkgdmFsdWVzIGZpdCBpbnRvIDQgYnl0ZXMuCiAg
ICAgdWludDMyX3QgYmluYXJ5VmFsdWUgPSAwOwpAQCAtMTU1NCwxMCArMTU1Niw4IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoZG91YmxlJiByZXR1cm5WYWx1ZSkK
ICAgICAgICAgLS1kaWdpdDsKICAgICB9IHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXQobV9jdXJy
ZW50KSAmJiBkaWdpdCA+PSAwKTsKIAotICAgIGlmICghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkg
JiYgZGlnaXQgPj0gMCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IGJpbmFyeVZhbHVlOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0KG1f
Y3VycmVudCkgJiYgZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0
dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBiaW5hcnlWYWx1ZSB9Owog
CiAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7IC0taSkKICAg
ICAgICAgcmVjb3JkOChkaWdpdHNbaV0pOwpAQCAtMTU2NywxNyArMTU2NywxNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlQmluYXJ5KGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAg
ICAgICAgIHNoaWZ0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
KSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgbV9jdXJyZW50ID09
ICduJykpCisgICAgICAgIHJldHVybiBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+
IHsgbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkgfTsK
IAotICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCAyKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNBU0NJSURp
Z2l0KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiB7IHBhcnNlSW50T3ZlcmZsb3co
bV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgMikgfTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlT2N0YWwoZG91
YmxlJiByZXR1cm5WYWx1ZSkKK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VPY3Rh
bCgpIC0+IHN0ZDo6b3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiB7CiAgICAgLy8gT3B0aW1p
emF0aW9uOiBtb3N0IG9jdGFsIHZhbHVlcyBmaXQgaW50byA0IGJ5dGVzLgogICAgIHVpbnQzMl90
IG9jdGFsVmFsdWUgPSAwOwpAQCAtMTU5NCwxMCArMTU5NCw5IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBMZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICAtLWRp
Z2l0OwogICAgIH0gd2hpbGUgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkgJiYgZGlnaXQg
Pj0gMCk7CiAKLSAgICBpZiAoIWlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmIGRpZ2l0ID49IDAp
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBvY3RhbFZhbHVlOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CisgICAgaWYgKExJS0VMWSghaXNBU0NJSURpZ2l0KG1fY3VycmVudCkgJiYgZGln
aXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8ZG91
YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBvY3RhbFZhbHVlIH07CisKIAogICAgIGZvciAoaW50
IGkgPSBtYXhpbXVtRGlnaXRzIC0gMTsgaSA+IGRpZ2l0OyAtLWkpCiAgICAgICAgICByZWNvcmQ4
KGRpZ2l0c1tpXSk7CkBAIC0xNjA3LDE3ICsxNjA2LDE3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6cGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKQogICAgICAgICBzaGlmdCgp
OwogICAgIH0KIAotICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIG1fY3VycmVudCA9PSAnbicpKQorICAgICAg
ICByZXR1cm4gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZpZXIqPiB7IG1ha2VJZGVudGlm
aWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpIH07CiAKLSAgICByZXR1cm5W
YWx1ZSA9IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgOCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFZhcmlhbnQ8ZG91
YmxlLCBjb25zdCBJZGVudGlmaWVyKj4geyBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRh
KCksIG1fYnVmZmVyOC5zaXplKCksIDgpIH07CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
QUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5W
YWx1ZSkKK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkgLT4gc3Rk
OjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KIHsKICAgICAvLyBPcHRpbWl6YXRpb246IG1v
c3QgZGVjaW1hbCB2YWx1ZXMgZml0IGludG8gNCBieXRlcy4KICAgICB1aW50MzJfdCBkZWNpbWFs
VmFsdWUgPSAwOwpAQCAtMTYzOCwxMCArMTYzNyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpCiAgICAgICAgICAgICAtLWRp
Z2l0OwogICAgICAgICB9IHdoaWxlIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAmJiBkaWdpdCA+
PSAwKTsKIAotICAgICAgICBpZiAoZGlnaXQgPj0gMCAmJiBtX2N1cnJlbnQgIT0gJy4nICYmICht
X2N1cnJlbnQgfCAweDIwKSAhPSAnZScpIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gZGVj
aW1hbFZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKGRpZ2l0ID49IDAgJiYgbV9jdXJyZW50ICE9ICcuJyAmJiAhaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChtX2N1cnJlbnQsICdlJykgJiYgbV9jdXJyZW50ICE9ICduJykKKyAgICAgICAgICAg
IHJldHVybiBWYXJpYW50PGRvdWJsZSwgY29uc3QgSWRlbnRpZmllcio+IHsgZGVjaW1hbFZhbHVl
IH07CiAKICAgICAgICAgZm9yIChpbnQgaSA9IG1heGltdW1EaWdpdHMgLSAxOyBpID4gZGlnaXQ7
IC0taSkKICAgICAgICAgICAgIHJlY29yZDgoZGlnaXRzW2ldKTsKQEAgLTE2NTEsOCArMTY0OCwx
MSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46OnBhcnNlRGVjaW1hbChkb3VibGUmIHJl
dHVyblZhbHVlKQogICAgICAgICByZWNvcmQ4KG1fY3VycmVudCk7CiAgICAgICAgIHNoaWZ0KCk7
CiAgICAgfQorICAgIAorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiBt
X2N1cnJlbnQgPT0gJ24nKSkKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj4geyBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjgu
c2l6ZSgpKSB9OwogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMjEwMCwxMCArMjEwMCwzMCBAQCBzdGFy
dDoKICAgICAgICAgICAgIHRva2VuID0gRE9UOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgZ290byBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OworICAgICAgICBwYXJz
ZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7CisgICAgICAgIHRva2VuID0gRE9VQkxFOworICAg
ICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICdlJykpIHsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKKyAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9uLW51bWJl
ciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKKyAgICAgICAgICAgICAgICB0b2tl
biA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5W
QUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CisgICAgICAgICAgICAgICAgZ290byByZXR1
cm5FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaXplX3QgcGFyc2Vk
TGVuZ3RoOworICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gcGFyc2VEb3VibGUobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgcGFyc2VkTGVuZ3RoKTsKKyAgICAgICAg
aWYgKHRva2VuID09IElOVEVHRVIpCisgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvcklu
dGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisKKyAgICAgICAgaWYgKFVO
TElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSkgeworICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkg
YWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7CisgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBV
TlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJ
VEVSQUxfRVJST1JUT0s7CisgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICB9
CisgICAgICAgIG1fYnVmZmVyOC5zaHJpbmsoMCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q2hhcmFjdGVyWmVybzoKICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgaWYgKChtX2N1cnJlbnQg
fCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9jdXJyZW50LCAneCcpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChwZWVr
KDEpKSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJObyBoZXhhZGVjaW1hbCBkaWdpdHMgYWZ0ZXIgJzB4JyIpOwogICAgICAgICAgICAgICAgIHRv
a2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJfRVJST1JUT0s7CkBAIC0yMTEzLDE3ICsyMTMz
LDI3IEBAIHN0YXJ0OgogICAgICAgICAgICAgLy8gU2hpZnQgb3V0IHRoZSAneCcgcHJlZml4Lgog
ICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgcGFyc2VIZXgodG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0gcGFyc2VI
ZXgoKTsKKyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ocGFy
c2VOdW1iZXJSZXN1bHQpKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUg
PSBXVEY6OmdldDxkb3VibGU+KHBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxj
b25zdCBJZGVudGlmaWVyKj4ocGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+cmFkaXggPSAxNjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlz
SWRlbnRTdGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBh
bmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hF
WF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VU
b2tlbih0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9r
ZW4gIT0gQklHSU5UKSkKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVn
ZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZl
cjguc2hyaW5rKDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KChtX2N1cnJlbnQgfCAweDIwKSA9PSAnYicpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobV9jdXJyZW50LCAnYicpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlC
aW5hcnlEaWdpdChwZWVrKDEpKSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJObyBiaW5hcnkgZGlnaXRzIGFmdGVyICcwYiciKTsKICAgICAgICAg
ICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9LOwpAQCAt
MjEzMywxOCArMjE2MywzMCBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUg
J2InIHByZWZpeC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlQmlu
YXJ5KHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJl
clJlc3VsdCA9IHBhcnNlQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyUmVz
dWx0KQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSAwOworICAgICAg
ICAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJl
clJlc3VsdCkpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6
Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOworICAgICAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPnJhZGl4ID0gMjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGlzSWRlbnRT
dGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVyYWwgYW5kIGlkZW50aWZp
ZXIiKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVS
X0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IEJJ
R0lOVCkpCisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJbnRlZ2VyTGlrZVRv
a2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgbV9idWZmZXI4LnNocmlu
aygwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtX2N1
cnJlbnQgfCAweDIwKSA9PSAnbycpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlPY3RhbERp
Z2l0KHBlZWsoMSkpKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vIG9jdGFsIGRpZ2l0cyBhZnRlciAnMG8nIik7CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwpAQCAtMjE1NCwxMyAr
MjE5NiwyNSBAQCBzdGFydDoKICAgICAgICAgICAgIC8vIFNoaWZ0IG91dCB0aGUgJ28nIHByZWZp
eC4KICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIHBhcnNlT2N0YWwodG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVzdWx0ID0g
cGFyc2VPY3RhbCgpOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gMDsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQor
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+
KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IEJJR0lOVDsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+
KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9
IDg7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJy
ZW50KSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiKTsKICAgICAg
ICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAg
ICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkodG9rZW4gIT0gQklHSU5UKSkKKyAgICAg
ICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4odG9rZW5EYXRh
LT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlcjguc2hyaW5rKDApOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxNzIsMzQgKzIyMjYsNDYgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0FT
Q0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VPY3RhbCh0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgYXV0byBwYXJzZU51bWJlclJl
c3VsdCA9IHBhcnNlT2N0YWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkgewor
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+
KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVG
b3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyTnVt
YmVyOgogICAgICAgICBpZiAoTElLRUxZKHRva2VuICE9IElOVEVHRVIgJiYgdG9rZW4gIT0gRE9V
QkxFKSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZURlY2ltYWwodG9rZW5EYXRhLT5kb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IElOVEVHRVI7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJS
ZXN1bHQgPSBwYXJzZURlY2ltYWwoKTsKKyAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3Vs
dCAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkg
eworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3Vi
bGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5
cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFy
c2VOdW1iZXJSZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAg
ICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci1pbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Ogot
ICAgICAgICAgICAgICAgICAgICBwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdlJykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm9u
LW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51
bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAxMDsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IElO
VEVHRVI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBET1VCTEU7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnZScpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJ
SUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5kb3VibGVWYWx1ZSA9IHBhcnNlRG91YmxlKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVy
OC5zaXplKCksIHBhcnNlZExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9
PSBJTlRFR0VSKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlblR5cGVGb3JJ
bnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgICAgICAgICAgICAg
IHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBwYXJzZURvdWJsZShtX2J1ZmZlcjguZGF0YSgpLCBt
X2J1ZmZlcjguc2l6ZSgpLCBwYXJzZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmICh0b2tl
biA9PSBJTlRFR0VSKQotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvcklu
dGVnZXJMaWtlVG9rZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9rZW4o
dG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZDg0NWUyZS4uZjA1MWJmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTczLDEyICsxNzMsMTUgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgU3RyaW5n
UGFyc2VSZXN1bHQgcGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqLCBib29sIHN0cmljdE1vZGUpOwog
ICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gTkVWRVJfSU5MSU5FIFN0cmlu
Z1BhcnNlUmVzdWx0IHBhcnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdGEqLCBib29sIHN0cmlj
dE1vZGUpOwogCisKICAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3MsIExleGVy
RXNjYXBlUGFyc2VNb2RlIGVzY2FwZVBhcnNlTW9kZT4gQUxXQVlTX0lOTElORSBTdHJpbmdQYXJz
ZVJlc3VsdCBwYXJzZUNvbXBsZXhFc2NhcGUoYm9vbCBzdHJpY3RNb2RlLCBUIHN0cmluZ1F1b3Rl
Q2hhcmFjdGVyKTsKICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZ1BhcnNlUmVzdWx0IHBhcnNlVGVt
cGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKiwgUmF3U3RyaW5nc0J1aWxkTW9kZSk7Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwotICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBwYXJzZUJpbmFyeShkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKTsKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgcGFyc2VEZWNpbWFsKGRvdWJsZSYgcmV0dXJuVmFsdWUpOworICAgIAor
ICAgIHVzaW5nIE51bWJlclBhcnNlUmVzdWx0ID0gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50
aWZpZXIqPjsKKyAgICBBTFdBWVNfSU5MSU5FIE51bWJlclBhcnNlUmVzdWx0IHBhcnNlSGV4KCk7
CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJz
ZUJpbmFyeSgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJl
c3VsdD4gcGFyc2VPY3RhbCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxOdW1i
ZXJQYXJzZVJlc3VsdD4gcGFyc2VEZWNpbWFsKCk7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBh
cnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFy
c2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCk7CiAgICAgQUxXQVlTX0lOTElORSBib29s
IHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBhY2RhYzZjLi5iYmNkYTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtOTIsNiAr
OTIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAorICAgIGlubGluZSBCaWdJ
bnROb2RlOjpCaWdJbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIHZhbHVlLCB1aW50OF90IHJhZGl4KQorICAgICAgICA6IENvbnN0YW50Tm9k
ZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6YmlnSW50VHlwZSgpKQorICAgICAgICAsIG1fdmFsdWUo
dmFsdWUpCisgICAgICAgICwgbV9yYWRpeChyYWRpeCkKKyAgICB7CisgICAgfQorCiAgICAgaW5s
aW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIDogQ29uc3RhbnROb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTZkZGQyLi5jNTk5NDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQmlnSW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJh
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzI4LDYgKzMyOSwxOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9OwogCisgICAg
Y2xhc3MgQmlnSW50Tm9kZSBmaW5hbCA6IHB1YmxpYyBDb25zdGFudE5vZGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgQmlnSW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgdWludDhfdCByYWRpeCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVl
KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0Jp
Z0ludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgSlNWYWx1ZSBqc1Zh
bHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgZmluYWw7CisKKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV92YWx1ZTsKKyAgICAgICAgY29uc3QgdWludDhfdCBtX3JhZGl4OworICAgIH07
CisKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAg
ICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggNDkwODk4NS4uODQ4Yzk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDQ5Miw2ICs0NDkyLDEyIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJp
bWFyeUV4cHJlCiAKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShj
b250ZXh0LCBpZGVudCwgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwsIHN0YXJ0
LCBsb2NhdGlvbik7CiAgICAgfQorICAgIGNhc2UgQklHSU5UOiB7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuYmlnSW50U3RyaW5nOworICAgICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICAgICAgbmV4dCgp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCaWdJbnQobG9jYXRpb24sIGlkZW50LCBt
X3Rva2VuLm1fZGF0YS5yYWRpeCk7CisgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggNTFmZDRhN2EuLmMyMDU4YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTEw
LDYgKzExMCw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIEJBQ0tRVU9URSwKICAgICBJTlRF
R0VSLAogICAgIERPVUJMRSwKKyAgICBCSUdJTlQsCiAgICAgSURFTlQsCiAgICAgU1RSSU5HLAog
ICAgIFRFTVBMQVRFLApAQCAtMjE4LDYgKzIxOSwxMCBAQCB1bmlvbiBKU1Rva2VuRGF0YSB7CiAg
ICAgICAgIGJvb2wgZXNjYXBlZDsKICAgICB9OwogICAgIHN0cnVjdCB7CisgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGJpZ0ludFN0cmluZzsKKyAgICAgICAgdWludDhfdCByYWRpeDsKKyAgICB9
OworICAgIHN0cnVjdCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGNvb2tlZDsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogcmF3OwogICAgICAgICBib29sIGlzVGFpbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXggNGY2NDcxYi4uMDNjYWUyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAgLTMxLDE4ICsz
MSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgc3Ry
dWN0IE9wZXJhbmRUeXBlczsKIAotICAgICAgICB0eXBlZGVmIHVpbnQ4X3QgVHlwZTsKKyAgICAg
ICAgdXNpbmcgVHlwZSA9IHVpbnQ4X3Q7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVJ
bnQzMiA9IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bWJlciA9IDB4
MDI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZVN0cmluZyA9IDB4MDQ7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZU51bGwgICA9IDB4MDg7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBUeXBlIFR5cGVNYXliZUJvb2wgICA9IDB4MTA7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBUeXBlIFR5cGVNYXliZU90aGVyICA9IDB4MjA7CisgICAgICAgIHN0YXRpYyBjb25z
dCBUeXBlIFR5cGVNYXliZUJpZ0ludCA9IDB4MjA7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBl
IFR5cGVNYXliZU90aGVyICA9IDB4NDA7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGUgVHlw
ZUJpdHMgPSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBUeXBlTWF5YmVOdWxs
IHwgVHlwZU1heWJlQm9vbCB8IFR5cGVNYXliZU90aGVyOworICAgICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBUeXBlQml0cyA9IFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVN
YXliZU51bGwgfCBUeXBlTWF5YmVCb29sIHwgVHlwZU1heWJlQmlnSW50IHwgVHlwZU1heWJlT3Ro
ZXI7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0c05lZWRl
ZCA9IDY7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkp
ID09IFR5cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCiAg
ICAgICAgIGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQpAQCAtNzAsNiArNzEsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKG1fYml0cyAmIFR5cGVCaXRzKSA9
PSBUeXBlTWF5YmVCb29sOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBkZWZpbml0ZWx5SXNC
aWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKG1fYml0cyAmIFR5
cGVCaXRzKSA9PSBUeXBlTWF5YmVCaWdJbnQ7CisgICAgICAgIH0KKwogICAgICAgICBib29sIG1p
Z2h0QmVOdW1iZXIoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9iaXRz
ICYgVHlwZU1heWJlTnVtYmVyOwpAQCAtODAsNiArODYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gIW1pZ2h0QmVOdW1iZXIoKTsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgYm9vbCBtaWdodEJlQmlnSW50KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0cyAmIFR5cGVNYXliZUJpZ0ludDsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgaXNOb3RCaWdJbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
IW1pZ2h0QmVCaWdJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGljIFJl
c3VsdFR5cGUgbnVsbFR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0
VHlwZShUeXBlTWF5YmVOdWxsKTsKQEAgLTEwNSwxMSArMTIxLDIxIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1h
eWJlU3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5
cGUgYWRkUmVzdWx0VHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRU
eXBlKFR5cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZUJpZ0ludCk7
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIHN0cmluZ1R5
cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVT
dHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBi
aWdJbnRUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlw
ZU1heWJlQmlnSW50KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGljIFJlc3Vs
dFR5cGUgdW5rbm93blR5cGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gUmVzdWx0
VHlwZShUeXBlQml0cyk7CkBAIC0xMjEsNyArMTQ3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsKICAgICAgICAgICAgIGlmIChvcDEuZGVm
aW5pdGVseUlzU3RyaW5nKCkgfHwgb3AyLmRlZmluaXRlbHlJc1N0cmluZygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdHJpbmdUeXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nT3JO
dW1iZXJUeXBlKCk7CisgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc0JpZ0ludCgpICYm
IG9wMi5kZWZpbml0ZWx5SXNCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmlnSW50
VHlwZSgpOworICAgICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdFR5cGUoKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFVubGlrZSBpbiBDLCBhIGxvZ2ljYWwgb3AgcHJvZHVjZXMgdGhlIHZhbHVl
IG9mIHRoZQpAQCAtMTM0LDYgKzE2Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJ
c1N0cmluZygpICYmIG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nVHlwZSgpOworICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJ
bnQoKSAmJiBvcDIuZGVmaW5pdGVseUlzQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludFR5cGUoKTsKICAgICAgICAgICAgIHJldHVybiB1bmtub3duVHlwZSgpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5k
ZXggOGRiMzVjNy4uNTM5YzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0IGNvbnN0ZXhwciBpbnQgTWV0YVByb3BlcnR5Qml0ID0gMHg4MDAwMDAwMDsKICAgICBlbnVt
IDogaW50IHsgTm9uZUV4cHIgPSAwLAotICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVF
eHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAgUmVzb2x2
ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4
cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJl
Z0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENsYXNz
RXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4
cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFy
eUV4cHIsCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcnJh
eUxpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG91YmxlRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIERvdWJsZUV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVJbnRlZ2VyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBk
b3VibGUpIHsgcmV0dXJuIEludGVnZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QmlnSW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIEJpZ0ludEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggMTkzYzkxZS4uZDY0NzY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMCw2ICszMCw3IEBACiAgICAgbWFjcm8oQXJy
YXlCdWZmZXIpIFwKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oQllURVNf
UEVSX0VMRU1FTlQpIFwKKyAgICBtYWNybyhCaWdJbnQpIFwKICAgICBtYWNybyhCb29sZWFuKSBc
CiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhDcmVkZW50aWFsKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uM2Y4MzViNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMCwwICsxLDcwMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogUGFydHMgb2YgdGhlIGltcGxlbWVu
dGF0aW9uIGJlbG93OgorICoKKyAqIENvcHlyaWdodCAyMDE3IHRoZSBWOCBwcm9qZWN0IGF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgKiBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorICoKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgdGhlIERhcnQg
cHJvamVjdCBhdXRob3JzLiAgUGxlYXNlIHNlZSB0aGUgQVVUSE9SUyBmaWxlIFsxXQorICogZm9y
IGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEKKyAqIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUgWzJdLgorICoKKyAqIFsxXSBodHRwczovL2dpdGh1Yi5jb20vZGFy
dC1sYW5nL3Nkay9ibG9iL21hc3Rlci9BVVRIT1JTCisgKiBbMl0gaHR0cHM6Ly9naXRodWIuY29t
L2RhcnQtbGFuZy9zZGsvYmxvYi9tYXN0ZXIvTElDRU5TRQorICoKKyAqIENvcHlyaWdodCAyMDA5
IFRoZSBHbyBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKKyAqIGxpY2Vuc2UgdGhhdCBjYW4g
YmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBbM10uCisgKgorICogWzNdIGh0dHBzOi8vZ29s
YW5nLm9yZy9MSUNFTlNFCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
QmlnSW50LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWF0aENvbW1v
bi5oIgorI2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZlY3Rvci5oPgorCisjZGVmaW5lIFNUQVRJQ19BU1NFUlQoY29u
ZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQgYXNzdW1lcyAiICNjb25kKQorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQmlnSW50OjpzX2luZm8gPQorICAgIHsg
IkpTQmlnSW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0JpZ0ludCkgfTsKKwordm9pZCBKU0JpZ0ludDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQmlnSW50KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQmlnSW50Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Cit9CisKK0pTQmlnSW50OjpKU0JpZ0ludChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQgbGVuZ3RoKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQoreyB9CisKK3ZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6
YXRpb25UeXBlIGluaXRUeXBlKQoreworICAgIHNldFNpZ24oZmFsc2UpOworICAgIGlmIChpbml0
VHlwZSA9PSBJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKQorICAgICAgICBtZW1zZXQoZGF0
YVN0b3JhZ2UoKSwgMCwgbGVuZ3RoKCkgKiBzaXplb2YoRGlnaXQpKTsKK30KKworU3RydWN0dXJl
KiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVpl
cm8oVk0mIHZtKQoreworICAgIEpTQmlnSW50KiB6ZXJvQmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aCh2bSwgMCk7CisgICAgemVyb0JpZ0ludC0+c2V0U2lnbihmYWxzZSk7CisgICAgcmV0dXJuIHpl
cm9CaWdJbnQ7Cit9CisKK3NpemVfdCBKU0JpZ0ludDo6YWxsb2NhdGlvblNpemUoaW50IGxlbmd0
aCkKK3sKKyAgICBzaXplX3Qgc2l6ZVdpdGhQYWRkaW5nID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihzaXplX3QpPihzaXplb2YoSlNCaWdJbnQpKTsKKyAgICByZXR1cm4gc2l6ZVdp
dGhQYWRkaW5nICsgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KTsKK30KKworSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVXaXRoTGVuZ3RoKFZNJiB2bSwgaW50IGxlbmd0aCkKK3sKKyAgICBKU0JpZ0lu
dCogYmlnSW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCaWdJbnQ+KHZtLmhlYXAs
IGFsbG9jYXRpb25TaXplKGxlbmd0aCkpKSBKU0JpZ0ludCh2bSwgdm0uYmlnSW50U3RydWN0dXJl
LmdldCgpLCBsZW5ndGgpOworICAgIGJpZ0ludC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBiaWdJbnQ7Cit9Cit2b2lkIEpTQmlnSW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitKU1ZhbHVlIEpTQmlnSW50Ojp0
b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAorewor
ICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7Cit9CisKK3N0ZDo6b3B0aW9u
YWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKQoreworICAg
IGlmIChpc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKGxlbmd0aCgp
ID09IDEgJiYgIXNpZ24oKSkgeworICAgICAgICBEaWdpdCByRGlnaXQgPSBkaWdpdCgwKTsKKyAg
ICAgICAgaWYgKHJEaWdpdCA8PSA5KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJEaWdpdCk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK0pTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBTdHJpbmdWaWV3IHMs
IHVpbnQ4X3QgcmFkaXgpCit7CisgICAgaWYgKHMuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBw
YXJzZUludChzdGF0ZSwgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgs
IGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnMxNigp
LCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOworfQorCitTdHJpbmcgSlNCaWdJbnQ6OnRv
U3RyaW5nKEV4ZWNTdGF0ZSYgc3RhdGUsIGludCByYWRpeCkKK3sKKyAgICBpZiAodGhpcy0+aXNa
ZXJvKCkpCisgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmdSZXAoJzAnKTsKKworICAgIHJldHVybiB0b1N0cmluZ0dlbmVyaWMoc3RhdGUs
IHRoaXMsIHJhZGl4KTsKK30KKworYm9vbCBKU0JpZ0ludDo6aXNaZXJvKCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoKCkgfHwgIXNpZ24oKSk7CisgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7Cit9CisK
Ky8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRv
IHRoZSByZXN1bHQuCit2b2lkIEpTQmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQodWludHB0cl90
IGZhY3RvciwgdWludHB0cl90IHN1bW1hbmQpCit7CisgICAgU1RBVElDX0FTU0VSVChzaXplb2Yo
ZmFjdG9yKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBTVEFUSUNfQVNTRVJUKHNpemVvZihzdW1t
YW5kKSA9PSBzaXplb2YoRGlnaXQpKTsKKworICAgIGludGVybmFsTXVsdGlwbHlBZGQodGhpcywg
ZmFjdG9yLCBzdW1tYW5kLCBsZW5ndGgoKSwgdGhpcyk7Cit9CisKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQorI2RlZmluZSBIQVZFX1RXT19ESUdJVCAxCit0eXBlZGVmIHVpbnQ2NF90IFR3b0RpZ2l0
OworI2VsaWYgSEFWRShJTlQxMjhfVCkKKyNkZWZpbmUgSEFWRV9UV09fRElHSVQgMQordHlwZWRl
ZiBfX3VpbnQxMjhfdCBUd29EaWdpdDsKKyNlbHNlCisjZGVmaW5lIEhBVkVfVFdPX0RJR0lUIDAK
KyNlbmRpZgorCisvLyB7Y2Fycnl9IG11c3QgcG9pbnQgdG8gYW4gaW5pdGlhbGl6ZWQgRGlnaXQg
YW5kIHdpbGwgZWl0aGVyIGJlIGluY3JlbWVudGVkCisvLyBieSBvbmUgb3IgbGVmdCBhbG9uZS4K
K0pTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXRBZGQoRGlnaXQgYSwgRGlnaXQgYiwgRGln
aXQmIGNhcnJ5KQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGlnaXQgcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICsgc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGIpOworICAg
IGNhcnJ5ICs9IHJlc3VsdCA+PiBkaWdpdEJpdHM7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RGlnaXQ+KHJlc3VsdCk7CisjZWxzZQorICAgIERpZ2l0IHJlc3VsdCA9IGEgKyBiOworCisgICAg
aWYgKHJlc3VsdCA8IGEpCisgICAgICAgIGNhcnJ5ICs9IDE7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKKyNlbmRpZgorfQorCisvLyB7Ym9ycm93fSBtdXN0IHBvaW50IHRvIGFuIGluaXRpYWxp
emVkIERpZ2l0IGFuZCB3aWxsIGVpdGhlciBiZSBpbmNyZW1lbnRlZAorLy8gYnkgb25lIG9yIGxl
ZnQgYWxvbmUuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0U3ViKERpZ2l0IGEsIERp
Z2l0IGIsIERpZ2l0JiBib3Jyb3cpCit7CisjaWYgSEFWRV9UV09fRElHSVQKKyAgICBUd29EaWdp
dCByZXN1bHQgPSBzdGF0aWNfY2FzdDxUd29EaWdpdD4oYSkgLSBzdGF0aWNfY2FzdDxUd29EaWdp
dD4oYik7CisgICAgYm9ycm93ICs9IChyZXN1bHQgPj4gZGlnaXRCaXRzKSAmIDE7CisgICAgCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICBEaWdpdCBy
ZXN1bHQgPSBhIC0gYjsKKyAgICBpZiAocmVzdWx0ID4gYSkKKyAgICAgICAgYm9ycm93ICs9IDE7
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpZ2l0PihyZXN1bHQpOworI2VuZGlmCit9
CisKKy8vIFJldHVybnMgdGhlIGxvdyBoYWxmIG9mIHRoZSByZXN1bHQuIEhpZ2ggaGFsZiBpcyBp
biB7aGlnaH0uCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0TXVsKERpZ2l0IGEsIERp
Z2l0IGIsIERpZ2l0JiBoaWdoKQoreworI2lmIEhBVkVfVFdPX0RJR0lUCisgICAgVHdvRGlnaXQg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+KGEpICogc3RhdGljX2Nhc3Q8VHdvRGlnaXQ+
KGIpOworICAgIGhpZ2ggPSByZXN1bHQgPj4gZGlnaXRCaXRzOworCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERpZ2l0PihyZXN1bHQpOworI2Vsc2UKKyAgICAvLyBNdWx0aXBseSBpbiBoYWxmLXBv
aW50ZXItc2l6ZWQgY2h1bmtzLgorICAgIC8vIEZvciBpbnB1dHMgW0FIIEFMXSpbQkggQkxdLCB0
aGUgcmVzdWx0IGlzOgorICAgIC8vCisgICAgLy8gICAgICAgICAgICBbQUwqQkxdICAvLyByTG93
CisgICAgLy8gICAgKyAgICBbQUwqQkhdICAgICAvLyByTWlkMQorICAgIC8vICAgICsgICAgW0FI
KkJMXSAgICAgLy8gck1pZDIKKyAgICAvLyAgICArIFtBSCpCSF0gICAgICAgIC8vIHJIaWdoCisg
ICAgLy8gICAgPSBbUjQgUjMgUjIgUjFdICAvLyBoaWdoID0gW1I0IFIzXSwgbG93ID0gW1IyIFIx
XQorICAgIC8vCisgICAgLy8gV2hlcmUgb2YgY291cnNlIHdlIG11c3QgYmUgY2FyZWZ1bCB3aXRo
IGNhcnJpZXMgYmV0d2VlbiB0aGUgY29sdW1ucy4KKyAgICBEaWdpdCBhTG93ID0gYSAmIGhhbGZE
aWdpdE1hc2s7CisgICAgRGlnaXQgYUhpZ2ggPSBhID4+IGhhbGZEaWdpdEJpdHM7CisgICAgRGln
aXQgYkxvdyA9IGIgJiBoYWxmRGlnaXRNYXNrOworICAgIERpZ2l0IGJIaWdoID0gYiA+PiBoYWxm
RGlnaXRCaXRzOworICAgIAorICAgIERpZ2l0IHJMb3cgPSBhTG93ICogYkxvdzsKKyAgICBEaWdp
dCByTWlkMSA9IGFMb3cgKiBiSGlnaDsKKyAgICBEaWdpdCByTWlkMiA9IGFIaWdoICogYkxvdzsK
KyAgICBEaWdpdCBySGlnaCA9IGFIaWdoICogYkhpZ2g7CisgICAgCisgICAgRGlnaXQgY2Fycnkg
PSAwOworICAgIERpZ2l0IGxvdyA9IGRpZ2l0QWRkKHJMb3csIHJNaWQxIDw8IGhhbGZEaWdpdEJp
dHMsIGNhcnJ5KTsKKyAgICBsb3cgPSBkaWdpdEFkZChsb3csIHJNaWQyIDw8IGhhbGZEaWdpdEJp
dHMsIGNhcnJ5KTsKKworICAgIGhpZ2ggPSAock1pZDEgPj4gaGFsZkRpZ2l0Qml0cykgKyAock1p
ZDIgPj4gaGFsZkRpZ2l0Qml0cykgKyBySGlnaCArIGNhcnJ5OworCisgICAgcmV0dXJuIGxvdzsK
KyNlbmRpZgorfQorCisvLyBSYWlzZXMge2Jhc2V9IHRvIHRoZSBwb3dlciBvZiB7ZXhwb25lbnR9
LiBEb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6
OmRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50KQoreworICAgIERpZ2l0IHJlc3Vs
dCA9IDF1bGw7CisgICAgd2hpbGUgKGV4cG9uZW50ID4gMCkgeworICAgICAgICBpZiAoZXhwb25l
bnQgJiAxKQorICAgICAgICAgICAgcmVzdWx0ICo9IGJhc2U7CisKKyAgICAgICAgZXhwb25lbnQg
Pj49IDE7CisgICAgICAgIGJhc2UgKj0gYmFzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCisvLyBSZXR1cm5zIHRoZSBxdW90aWVudC4KKy8vIHF1b3RpZW50ID0gKGhpZ2ggPDwg
ZGlnaXRCaXRzICsgbG93IC0gcmVtYWluZGVyKSAvIGRpdmlzb3IKK0pTQmlnSW50OjpEaWdpdCBK
U0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLCBE
aWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChoaWdoIDwgZGl2aXNvcik7CisjaWYgQ1BV
KFg4Nl82NCkgJiYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorICAgIERpZ2l0IHF1b3RpZW50Owor
ICAgIERpZ2l0IHJlbTsKKyAgICBfX2FzbV9fKCJkaXZxICAlW2Rpdmlzb3JdIgorICAgICAgICAv
LyBPdXRwdXRzOiB7cXVvdGllbnR9IHdpbGwgYmUgaW4gcmF4LCB7cmVtfSBpbiByZHguCisgICAg
ICAgIDogIj1hIihxdW90aWVudCksICI9ZCIocmVtKQorICAgICAgICAvLyBJbnB1dHM6IHB1dCB7
aGlnaH0gaW50byByZHgsIHtsb3d9IGludG8gcmF4LCBhbmQge2Rpdmlzb3J9IGludG8KKyAgICAg
ICAgLy8gYW55IHJlZ2lzdGVyIG9yIHN0YWNrIHNsb3QuCisgICAgICAgIDogImQiKGhpZ2gpLCAi
YSIobG93KSwgW2Rpdmlzb3JdICJybSIoZGl2aXNvcikpOworICAgIHJlbWFpbmRlciA9IHJlbTsK
KyAgICByZXR1cm4gcXVvdGllbnQ7CisjZWxpZiBDUFUoWDg2KSAmJiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCisgICAgRGlnaXQgcXVvdGllbnQ7CisgICAgRGlnaXQgcmVtOworICAgIF9fYXNtX18o
ImRpdmwgICVbZGl2aXNvcl0iCisgICAgICAgIC8vIE91dHB1dHM6IHtxdW90aWVudH0gd2lsbCBi
ZSBpbiBlYXgsIHtyZW19IGluIGVkeC4KKyAgICAgICAgOiAiPWEiKHF1b3RpZW50KSwgIj1kIihy
ZW0pCisgICAgICAgIC8vIElucHV0czogcHV0IHtoaWdofSBpbnRvIGVkeCwge2xvd30gaW50byBl
YXgsIGFuZCB7ZGl2aXNvcn0gaW50bworICAgICAgICAvLyBhbnkgcmVnaXN0ZXIgb3Igc3RhY2sg
c2xvdC4KKyAgICAgICAgOiAiZCIoaGlnaCksICJhIihsb3cpLCBbZGl2aXNvcl0gInJtIihkaXZp
c29yKSk7CisgICAgcmVtYWluZGVyID0gcmVtOworICAgIHJldHVybiBxdW90aWVudDsKKyNlbHNl
CisgICAgc3RhdGljIGNvbnN0IERpZ2l0IGtIYWxmRGlnaXRCYXNlID0gMXVsbCA8PCBoYWxmRGln
aXRCaXRzOworICAgIC8vIEFkYXB0ZWQgZnJvbSBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIHAu
IDE1Mi4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGludCBzID0gY2x6NjQoZGl2aXNvcik7Cisj
ZWxzZQorICAgIGludCBzID0gY2x6MzIoZGl2aXNvcik7CisjZW5kaWYKKyAgICBkaXZpc29yIDw8
PSBzOworICAgIAorICAgIERpZ2l0IHZuMSA9IGRpdmlzb3IgPj4gaGFsZkRpZ2l0Qml0czsKKyAg
ICBEaWdpdCB2bjAgPSBkaXZpc29yICYgaGFsZkRpZ2l0TWFzazsKKworICAgIC8vIHtzfSBjYW4g
YmUgMC4gImxvdyA+PiBkaWdpdEJpdHMgPT0gbG93IiBvbiB4ODYsIHNvIHdlICImIiBpdCB3aXRo
CisgICAgLy8ge3NfemVyb19tYXNrfSB3aGljaCBpcyAwIGlmIHMgPT0gMCBhbmQgYWxsIDEtYml0
cyBvdGhlcndpc2UuCisgICAgU1RBVElDX0FTU0VSVChzaXplb2YoaW50cHRyX3QpID09IHNpemVv
ZihEaWdpdCkpOworICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oLXMpID4+IChkaWdpdEJpdHMgLSAxKSk7CisgICAgRGlnaXQgdW4z
MiA9IChoaWdoIDw8IHMpIHwgKChsb3cgPj4gKGRpZ2l0Qml0cyAtIHMpKSAmIHNaZXJvTWFzayk7
CisgICAgRGlnaXQgdW4xMCA9IGxvdyA8PCBzOworICAgIERpZ2l0IHVuMSA9IHVuMTAgPj4gaGFs
ZkRpZ2l0Qml0czsKKyAgICBEaWdpdCB1bjAgPSB1bjEwICYgaGFsZkRpZ2l0TWFzazsKKyAgICBE
aWdpdCBxMSA9IHVuMzIgLyB2bjE7CisgICAgRGlnaXQgcmhhdCA9IHVuMzIgLSBxMSAqIHZuMTsK
KworICAgIHdoaWxlIChxMSA+PSBrSGFsZkRpZ2l0QmFzZSB8fCBxMSAqIHZuMCA+IHJoYXQgKiBr
SGFsZkRpZ2l0QmFzZSArIHVuMSkgeworICAgICAgICBxMS0tOworICAgICAgICByaGF0ICs9IHZu
MTsKKyAgICAgICAgaWYgKHJoYXQgPj0ga0hhbGZEaWdpdEJhc2UpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBEaWdpdCB1bjIxID0gdW4zMiAqIGtIYWxmRGlnaXRCYXNlICsgdW4x
IC0gcTEgKiBkaXZpc29yOworICAgIERpZ2l0IHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0g
dW4yMSAtIHEwICogdm4xOworCisgICAgd2hpbGUgKHEwID49IGtIYWxmRGlnaXRCYXNlIHx8IHEw
ICogdm4wID4gcmhhdCAqIGtIYWxmRGlnaXRCYXNlICsgdW4wKSB7CisgICAgICAgIHEwLS07Cisg
ICAgICAgIHJoYXQgKz0gdm4xOworICAgICAgICBpZiAocmhhdCA+PSBrSGFsZkRpZ2l0QmFzZSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlbWFpbmRlciA9ICh1bjIxICoga0hh
bGZEaWdpdEJhc2UgKyB1bjAgLSBxMCAqIGRpdmlzb3IpID4+IHM7CisgICAgcmV0dXJuIHExICog
a0hhbGZEaWdpdEJhc2UgKyBxMDsKKyNlbmRpZgorfQorCisvLyBNdWx0aXBsaWVzIHtzb3VyY2V9
IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCisvLyB7cmVz
dWx0fSBhbmQge3NvdXJjZX0gbWF5IGJlIHRoZSBzYW1lIEJpZ0ludCBmb3IgaW5wbGFjZSBtb2Rp
ZmljYXRpb24uCit2b2lkIEpTQmlnSW50OjppbnRlcm5hbE11bHRpcGx5QWRkKEpTQmlnSW50KiBz
b3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgaW50IG4sIEpTQmlnSW50KiByZXN1
bHQpCit7CisgICAgQVNTRVJUKHNvdXJjZS0+bGVuZ3RoKCkgPj0gbik7CisgICAgQVNTRVJUKHJl
c3VsdC0+bGVuZ3RoKCkgPj0gbik7CisKKyAgICBEaWdpdCBjYXJyeSA9IHN1bW1hbmQ7CisgICAg
RGlnaXQgaGlnaCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAg
ICAgRGlnaXQgY3VycmVudCA9IHNvdXJjZS0+ZGlnaXQoaSk7CisgICAgICAgIERpZ2l0IG5ld0Nh
cnJ5ID0gMDsKKworICAgICAgICAvLyBDb21wdXRlIHRoaXMgcm91bmQncyBtdWx0aXBsaWNhdGlv
bi4KKyAgICAgICAgRGlnaXQgbmV3SGlnaCA9IDA7CisgICAgICAgIGN1cnJlbnQgPSBkaWdpdE11
bChjdXJyZW50LCBmYWN0b3IsIG5ld0hpZ2gpOworCisgICAgICAgIC8vIEFkZCBsYXN0IHJvdW5k
J3MgY2FycnlvdmVycy4KKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGhpZ2gs
IG5ld0NhcnJ5KTsKKyAgICAgICAgY3VycmVudCA9IGRpZ2l0QWRkKGN1cnJlbnQsIGNhcnJ5LCBu
ZXdDYXJyeSk7CisKKyAgICAgICAgLy8gU3RvcmUgcmVzdWx0IGFuZCBwcmVwYXJlIGZvciBuZXh0
IHJvdW5kLgorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGN1cnJlbnQpOworICAgICAgICBj
YXJyeSA9IG5ld0NhcnJ5OworICAgICAgICBoaWdoID0gbmV3SGlnaDsKKyAgICB9CisKKyAgICBp
ZiAocmVzdWx0LT5sZW5ndGgoKSA+IG4pIHsKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChuKyss
IGNhcnJ5ICsgaGlnaCk7CisKKyAgICAgICAgLy8gQ3VycmVudCBjYWxsZXJzIGRvbid0IHBhc3Mg
aW4gc3VjaCBsYXJnZSByZXN1bHRzLCBidXQgbGV0J3MgYmUgcm9idXN0LgorICAgICAgICB3aGls
ZSAobiA8IHJlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXN1bHQtPnNldERpZ2l0KG4r
KywgMCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVCghKGNhcnJ5ICsgaGlnaCkpOworfQor
Citib29sIEpTQmlnSW50OjplcXVhbHMoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQoreworICAg
IGlmICh4LT5zaWduKCkgIT0geS0+c2lnbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoeC0+bGVuZ3RoKCkgIT0geS0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeC0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBp
ZiAoeC0+ZGlnaXQoaSkgIT0geS0+ZGlnaXQoaSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERpdmlkZXMge3h9IGJ5IHtkaXZp
c29yfSwgcmV0dXJuaW5nIHRoZSByZXN1bHQgaW4ge3F1b3RpZW50fSBhbmQge3JlbWFpbmRlcn0u
CisvLyBNYXRoZW1hdGljYWxseSwgdGhlIGNvbnRyYWN0IGlzOgorLy8gcXVvdGllbnQgPSAoeCAt
IHJlbWFpbmRlcikgLyBkaXZpc29yLCB3aXRoIDAgPD0gcmVtYWluZGVyIDwgZGl2aXNvci4KKy8v
IElmIHtxdW90aWVudH0gaXMgYW4gZW1wdHkgaGFuZGxlLCBhbiBhcHByb3ByaWF0ZWx5IHNpemVk
IEJpZ0ludCB3aWxsIGJlCisvLyBhbGxvY2F0ZWQgZm9yIGl0OyBvdGhlcndpc2UgdGhlIGNhbGxl
ciBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGJpZyBlbm91Z2guCisvLyB7cXVvdGllbnR9IGNhbiBi
ZSB0aGUgc2FtZSBhcyB7eH0gZm9yIGFuIGluLXBsYWNlIGRpdmlzaW9uLiB7cXVvdGllbnR9IGNh
bgorLy8gYWxzbyBiZSBudWxscHRyIGlmIHRoZSBjYWxsZXIgaXMgb25seSBpbnRlcmVzdGVkIGlu
IHRoZSByZW1haW5kZXIuCit2b2lkIEpTQmlnSW50OjphYnNvbHV0ZURpdlNtYWxsKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQmlnSW50KiB4LCBEaWdpdCBkaXZpc29yLCBKU0JpZ0ludCoqIHF1b3RpZW50
LCBEaWdpdCYgcmVtYWluZGVyKQoreworICAgIEFTU0VSVChkaXZpc29yKTsKKworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgQVNTRVJUKCF4LT5pc1plcm8oKSk7CisgICAgcmVtYWluZGVy
ID0gMDsKKyAgICBpZiAoZGl2aXNvciA9PSAxKSB7CisgICAgICAgIGlmIChxdW90aWVudCAhPSBu
dWxscHRyKQorICAgICAgICAgICAgKnF1b3RpZW50ID0geDsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGludCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBpZiAocXVvdGllbnQgIT0g
bnVsbHB0cikgeworICAgICAgICBpZiAoKnF1b3RpZW50ID09IG51bGxwdHIpCisgICAgICAgICAg
ICAqcXVvdGllbnQgPSBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCh2bSwgbGVuZ3RoKTsKKwor
ICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAg
ICAgIERpZ2l0IHEgPSBkaWdpdERpdihyZW1haW5kZXIsIHgtPmRpZ2l0KGkpLCBkaXZpc29yLCBy
ZW1haW5kZXIpOworICAgICAgICAgICAgKCpxdW90aWVudCktPnNldERpZ2l0KGksIHEpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkg
Pj0gMDsgaS0tKQorICAgICAgICAgICAgZGlnaXREaXYocmVtYWluZGVyLCB4LT5kaWdpdChpKSwg
ZGl2aXNvciwgcmVtYWluZGVyKTsKKyAgICB9Cit9CisKKy8vIExvb2t1cCB0YWJsZSBmb3IgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGJpdHMgcmVxdWlyZWQgcGVyIGNoYXJhY3RlciBvZiBhCisvLyBi
YXNlLU4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtYmVyLiBUbyBpbmNyZWFzZSBhY2N1
cmFjeSwgdGhlIGFycmF5CisvLyB2YWx1ZSBpcyB0aGUgYWN0dWFsIHZhbHVlIG11bHRpcGxpZWQg
YnkgMzIuIFRvIGdlbmVyYXRlIHRoaXMgdGFibGU6CisvLyBmb3IgKHZhciBpID0gMDsgaSA8PSAz
NjsgaSsrKSB7IHByaW50KE1hdGguY2VpbChNYXRoLmxvZzIoaSkgKiAzMikgKyAiLCIpOyB9Citj
b25zdGV4cHIgdWludDhfdCBtYXhCaXRzUGVyQ2hhclRhYmxlW10gPSB7CisgICAgMCwgICAwLCAg
IDMyLCAgNTEsICA2NCwgIDc1LCAgODMsICA5MCwgIDk2LCAvLyAwLi44CisgICAgMTAyLCAxMDcs
IDExMSwgMTE1LCAxMTksIDEyMiwgMTI2LCAxMjgsICAgICAvLyA5Li4xNgorICAgIDEzMSwgMTM0
LCAxMzYsIDEzOSwgMTQxLCAxNDMsIDE0NSwgMTQ3LCAgICAgLy8gMTcuLjI0CisgICAgMTQ5LCAx
NTEsIDE1MywgMTU0LCAxNTYsIDE1OCwgMTU5LCAxNjAsICAgICAvLyAyNS4uMzIKKyAgICAxNjIs
IDE2MywgMTY1LCAxNjYsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMzLi4zNgorfTsKKwor
c3RhdGljIGNvbnN0IGludCBiaXRzUGVyQ2hhclRhYmxlU2hpZnQgPSA1Oworc3RhdGljIGNvbnN0
IHNpemVfdCBiaXRzUGVyQ2hhclRhYmxlTXVsdGlwbGllciA9IDF1IDw8IGJpdHNQZXJDaGFyVGFi
bGVTaGlmdDsKKworLy8gQ29tcHV0ZSAoYW4gb3ZlcmFwcHJveGltYXRpb24gb2YpIHRoZSBsZW5n
dGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmc6CisvLyBEaXZpZGUgYml0IGxlbmd0aCBvZiB0aGUg
QmlnSW50IGJ5IGJpdHMgcmVwcmVzZW50YWJsZSBwZXIgY2hhcmFjdGVyLgordWludDY0X3QgSlNC
aWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoaW50IGxlbmd0aCwgaW50
IHJhZGl4LCBEaWdpdCBsYXN0RGlnaXQsIGJvb2wgc2lnbikKK3sKKyAgICBpbnQgbGVhZGluZ1pl
cm9zOworICAgIGlmIChzaXplb2YobGFzdERpZ2l0KSA9PSA4KQorICAgICAgICBsZWFkaW5nWmVy
b3MgPSBjbHo2NChsYXN0RGlnaXQpOworICAgIGVsc2UKKyAgICAgICAgbGVhZGluZ1plcm9zID0g
Y2x6MzIobGFzdERpZ2l0KTsKKworICAgIHNpemVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBkaWdp
dEJpdHMgLSBsZWFkaW5nWmVyb3M7CisKKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBiaXRzIHdl
IGNhbiByZXByZXNlbnQgd2l0aCBvbmUgY2hhcmFjdGVyLiBXZSdsbCB1c2UgdGhpcworICAgIC8v
IHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgY2h1bmsgc2l6ZSBiZWxvdy4KKyAgICB1aW50OF90IG1h
eEJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXJUYWJsZVtyYWRpeF07CisKKyAgICAvLyBGb3Ig
ZXN0aW1hdGluZyByZXN1bHQgbGVuZ3RoLCB3ZSBoYXZlIHRvIGJlIHBlc3NpbWlzdGljIGFuZCB3
b3JrIHdpdGgKKyAgICAvLyB0aGUgbWluaW11bSBudW1iZXIgb2YgYml0cyBvbmUgY2hhcmFjdGVy
IGNhbiByZXByZXNlbnQuCisgICAgdWludDhfdCBtaW5CaXRzUGVyQ2hhciA9IG1heEJpdHNQZXJD
aGFyIC0gMTsKKworICAgIC8vIFBlcmZvcm0gdGhlIGZvbGxvd2luZyBjb21wdXRhdGlvbiB3aXRo
IHVpbnQ2NF90IHRvIGF2b2lkIG92ZXJmbG93cy4KKyAgICB1aW50NjRfdCBtYXhpbXVtQ2hhcmFj
dGVyc1JlcXVpcmVkID0gYml0TGVuZ3RoOworICAgIG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQg
Kj0gYml0c1BlckNoYXJUYWJsZU11bHRpcGxpZXI7CisKKyAgICAvLyBSb3VuZCB1cC4KKyAgICBt
YXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkICs9IG1pbkJpdHNQZXJDaGFyIC0gMTsKKyAgICBtYXhp
bXVtQ2hhcmFjdGVyc1JlcXVpcmVkIC89IG1pbkJpdHNQZXJDaGFyOworICAgIG1heGltdW1DaGFy
YWN0ZXJzUmVxdWlyZWQgKz0gc2lnbjsKKyAgICAKKyAgICByZXR1cm4gbWF4aW11bUNoYXJhY3Rl
cnNSZXF1aXJlZDsKK30KKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNCaWdJbnQqIHgsIGludCByYWRpeCkKK3sKKyAgICAvLyBGSVhNRTogW0pT
Q10gUmV2aXNpdCB1c2FnZSBvZiBTdHJpbmdWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcK
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAg
ICBTdHJpbmdWZWN0b3I8TENoYXI+IHJlc3VsdFN0cmluZzsKKworICAgIEFTU0VSVChyYWRpeCA+
PSAyICYmIHJhZGl4IDw9IDM2KTsKKyAgICBBU1NFUlQoIXgtPmlzWmVybygpKTsKKworICAgIGlu
dCBsZW5ndGggPSB4LT5sZW5ndGgoKTsKKyAgICBib29sIHNpZ24gPSB4LT5zaWduKCk7CisKKyAg
ICB1aW50OF90IG1heEJpdHNQZXJDaGFyID0gbWF4Qml0c1BlckNoYXJUYWJsZVtyYWRpeF07Cisg
ICAgdWludDY0X3QgbWF4aW11bUNoYXJhY3RlcnNSZXF1aXJlZCA9IGNhbGN1bGF0ZU1heGltdW1D
aGFyYWN0ZXJzUmVxdWlyZWQobGVuZ3RoLCByYWRpeCwgeC0+ZGlnaXQobGVuZ3RoIC0gMSksIHNp
Z24pOworCisgICAgaWYgKG1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQgPiBKU1N0cmluZzo6TWF4
TGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRl
LnZtKCkpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7Cisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBEaWdpdCBsYXN0RGlnaXQ7Cisg
ICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYXN0RGlnaXQgPSB4LT5kaWdpdCgwKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaW50IGNodW5rQ2hhcnMgPSBkaWdpdEJpdHMgKiBiaXRzUGVyQ2hh
clRhYmxlTXVsdGlwbGllciAvIG1heEJpdHNQZXJDaGFyOworICAgICAgICBEaWdpdCBjaHVua0Rp
dmlzb3IgPSBkaWdpdFBvdyhyYWRpeCwgY2h1bmtDaGFycyk7CisKKyAgICAgICAgLy8gQnkgY29u
c3RydWN0aW9uIG9mIGNodW5rQ2hhcnMsIHRoZXJlIGNhbid0IGhhdmUgYmVlbiBvdmVyZmxvdy4K
KyAgICAgICAgQVNTRVJUKGNodW5rRGl2aXNvcik7CisgICAgICAgIGludCBub25aZXJvRGlnaXQg
PSBsZW5ndGggLSAxOworICAgICAgICBBU1NFUlQoeC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisK
KyAgICAgICAgLy8ge3Jlc3R9IGhvbGRzIHRoZSBwYXJ0IG9mIHRoZSBCaWdJbnQgdGhhdCB3ZSBo
YXZlbid0IGxvb2tlZCBhdCB5ZXQuCisgICAgICAgIC8vIE5vdCB0byBiZSBjb25mdXNlZCB3aXRo
ICJyZW1haW5kZXIiIQorICAgICAgICBKU0JpZ0ludCogcmVzdCA9IG51bGxwdHI7CisKKyAgICAg
ICAgLy8gSW4gdGhlIGZpcnN0IHJvdW5kLCBkaXZpZGUgdGhlIGlucHV0LCBhbGxvY2F0aW5nIGEg
bmV3IEJpZ0ludCBmb3IKKyAgICAgICAgLy8gdGhlIHJlc3VsdCA9PSByZXN0OyBmcm9tIHRoZW4g
b24gZGl2aWRlIHRoZSByZXN0IGluLXBsYWNlLgorICAgICAgICBKU0JpZ0ludCoqIGRpdmlkZW5k
ID0gJng7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIERpZ2l0IGNodW5rOworICAgICAgICAg
ICAgYWJzb2x1dGVEaXZTbWFsbChzdGF0ZSwgKmRpdmlkZW5kLCBjaHVua0Rpdmlzb3IsICZyZXN0
LCBjaHVuayk7CisgICAgICAgICAgICBBU1NFUlQocmVzdCk7CisKKyAgICAgICAgICAgIGRpdmlk
ZW5kID0gJnJlc3Q7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNodW5rQ2hhcnM7
IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQocmFkaXhEaWdpdHNb
Y2h1bmsgJSByYWRpeF0pOworICAgICAgICAgICAgICAgIGNodW5rIC89IHJhZGl4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCFjaHVuayk7CisKKyAgICAgICAgICAgIGlmICgh
cmVzdC0+ZGlnaXQobm9uWmVyb0RpZ2l0KSkKKyAgICAgICAgICAgICAgICBub25aZXJvRGlnaXQt
LTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5ldmVyIGNsZWFyIG1vcmUgdGhhbiBvbmUgZGln
aXQgcGVyIGl0ZXJhdGlvbiwgYmVjYXVzZQorICAgICAgICAgICAgLy8gY2h1bmtEaXZpc29yIGlz
IHNtYWxsZXIgdGhhbiBtYXggZGlnaXQgdmFsdWUuCisgICAgICAgICAgICBBU1NFUlQocmVzdC0+
ZGlnaXQobm9uWmVyb0RpZ2l0KSk7CisgICAgICAgIH0gd2hpbGUgKG5vblplcm9EaWdpdCA+IDAp
OworCisgICAgICAgIGxhc3REaWdpdCA9IHJlc3QtPmRpZ2l0KDApOworICAgIH0KKworICAgIGRv
IHsKKyAgICAgICAgcmVzdWx0U3RyaW5nLmFwcGVuZChyYWRpeERpZ2l0c1tsYXN0RGlnaXQgJSBy
YWRpeF0pOworICAgICAgICBsYXN0RGlnaXQgLz0gcmFkaXg7CisgICAgfSB3aGlsZSAobGFzdERp
Z2l0ID4gMCk7CisgICAgQVNTRVJUKHJlc3VsdFN0cmluZy5zaXplKCkpOworICAgIEFTU0VSVChy
ZXN1bHRTdHJpbmcuc2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bUNoYXJhY3Rl
cnNSZXF1aXJlZCkpOworCisgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb2VzLgorICAgIGludCBu
ZXdTaXplTm9MZWFkaW5nWmVyb2VzID0gcmVzdWx0U3RyaW5nLnNpemUoKTsKKyAgICB3aGlsZSAo
bmV3U2l6ZU5vTGVhZGluZ1plcm9lcyAgPiAxICYmIHJlc3VsdFN0cmluZ1tuZXdTaXplTm9MZWFk
aW5nWmVyb2VzIC0gMV0gPT0gJzAnKQorICAgICAgICBuZXdTaXplTm9MZWFkaW5nWmVyb2VzLS07
CisKKyAgICByZXN1bHRTdHJpbmcuc2hyaW5rKG5ld1NpemVOb0xlYWRpbmdaZXJvZXMpOworCisg
ICAgaWYgKHNpZ24pCisgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoJy0nKTsKKworICAgIHN0
ZDo6cmV2ZXJzZShyZXN1bHRTdHJpbmcuYmVnaW4oKSwgcmVzdWx0U3RyaW5nLmVuZCgpKTsKKwor
ICAgIHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHJlc3VsdFN0cmluZykpOworfQor
CitKU0JpZ0ludCogSlNCaWdJbnQ6OnJpZ2h0VHJpbShWTSYgdm0pCit7CisgICAgaWYgKGlzWmVy
bygpKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIGludCBub25aZXJvSW5kZXggPSBtX2xl
bmd0aCAtIDE7CisgICAgd2hpbGUgKG5vblplcm9JbmRleCA+PSAwICYmICFkaWdpdChub25aZXJv
SW5kZXgpKQorICAgICAgICBub25aZXJvSW5kZXgtLTsKKworICAgIGlmIChub25aZXJvSW5kZXgg
PT0gbV9sZW5ndGggLSAxKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIGludCBuZXdMZW5n
dGggPSBub25aZXJvSW5kZXggKyAxOworICAgIEpTQmlnSW50KiB0cmltbWVkQmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aCh2bSwgbmV3TGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0cmltbWVk
QmlnSW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0YVN0b3JhZ2UoKSwgZGF0YVN0b3JhZ2UoKSArIG5l
d0xlbmd0aCwgdHJpbW1lZEJpZ0ludC0+ZGF0YVN0b3JhZ2UoKSk7IAorCisgICAgdHJpbW1lZEJp
Z0ludC0+c2V0U2lnbih0aGlzLT5zaWduKCkpOworCisgICAgcmV0dXJuIHRyaW1tZWRCaWdJbnQ7
Cit9CisKK0pTQmlnSW50KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoRXhlY1N0YXRlKiBzdGF0ZSwg
Vk0mIHZtLCBpbnQgcmFkaXgsIGludCBjaGFyY291bnQpCit7CisgICAgQVNTRVJUKDIgPD0gcmFk
aXggJiYgcmFkaXggPD0gMzYpOworICAgIEFTU0VSVChjaGFyY291bnQgPj0gMCk7CisKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBzaXplX3QgYml0c1Bl
ckNoYXIgPSBtYXhCaXRzUGVyQ2hhclRhYmxlW3JhZGl4XTsKKyAgICBzaXplX3QgY2hhcnMgPSBj
aGFyY291bnQ7CisgICAgY29uc3QgaW50IHJvdW5kdXAgPSBiaXRzUGVyQ2hhclRhYmxlTXVsdGlw
bGllciAtIDE7CisgICAgaWYgKGNoYXJzIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIC0gcm91bmR1cCkgLyBiaXRzUGVyQ2hhcikgeworICAgICAgICBzaXplX3QgYml0c01p
biA9IGJpdHNQZXJDaGFyICogY2hhcnM7CisKKyAgICAgICAgLy8gRGl2aWRlIGJ5IDMyIChzZWUg
dGFibGUpLCByb3VuZGluZyB1cC4KKyAgICAgICAgYml0c01pbiA9IChiaXRzTWluICsgcm91bmR1
cCkgPj4gYml0c1BlckNoYXJUYWJsZVNoaWZ0OworICAgICAgICBpZiAoYml0c01pbiA8PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1heEludCkpIHsKKyAgICAgICAgICAgIC8vIERpdmlkZSBieSBrRGln
aXRzQml0cywgcm91bmRpbmcgdXAuCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKHN0YXRpY19j
YXN0PGludD4oYml0c01pbikgKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0czsKKyAgICAgICAg
ICAgIGlmIChsZW5ndGggPD0gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKHZtLCBsZW5ndGgpOworICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoc3RhdGUpCisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0ZSwg
c2NvcGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzaXplX3QgSlNCaWdJbnQ6OmVzdGlt
YXRlZFNpemUoSlNDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXpl
KGNlbGwpICsganNDYXN0PEpTQmlnSW50Kj4oY2VsbCktPm1fbGVuZ3RoICogc2l6ZW9mKERpZ2l0
KTsKK30KKworZG91YmxlIEpTQmlnSW50Ojp0b051bWJlcihFeGVjU3RhdGUqIHN0YXRlKSBjb25z
dAoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ29udmVydGlvbiBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxv
d2VkLiIpKTsKKyAgICByZXR1cm4gMC4wOworfQorCitib29sIEpTQmlnSW50OjpnZXRQcmltaXRp
dmVOdW1iZXIoRXhlY1N0YXRlKiBzdGF0ZSwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3Vs
dCkgY29uc3QKK3sKKyAgICByZXN1bHQgPSB0aGlzOworICAgIG51bWJlciA9IHRvTnVtYmVyKHN0
YXRlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2l6ZV90IEpTQmlnSW50OjpvZmZzZXRPZkRh
dGEoKQoreworICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKERpZ2l0
KT4oc2l6ZW9mKEpTQmlnSW50KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
K0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBD
aGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRpeCwgYm9v
bCBhbGxvd0VtcHR5U3RyaW5nKQoreworICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CisgICAgaW50
IHAgPSBzdGFydEluZGV4OworCisgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5k
ZXggPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFNraXBwaW5n
IGxlYWRpbmcgemVyb3MKKyAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBkYXRhW3BdID09ICcwJykK
KyAgICAgICAgKytwOworCisgICAgaW50IGVuZEluZGV4ID0gbGVuZ3RoIC0gMTsKKyAgICAvLyBS
ZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKKyAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBpc1N0
cldoaXRlU3BhY2UoZGF0YVtlbmRJbmRleF0pKQorICAgICAgICAtLWVuZEluZGV4OworCisgICAg
bGVuZ3RoID0gZW5kSW5kZXggKyAxOworCisgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gY3JlYXRlWmVybyh2bSk7CisKKyAgICBpbnQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwg
MTAgPyByYWRpeCA6IDEwKTsKKyAgICBpbnQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwor
ICAgIGludCBsaW1pdEEgPSAnQScgKyAocmFkaXggLSAxMCk7CisKKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWxsb2NhdGVGb3Ioc3RhdGUsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5pbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworCisgICAgZm9yIChpbnQgaSA9IHA7
IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7CisgICAgICAgIHVpbnQzMl90IGRpZ2l0OworICAgICAg
ICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKKyAgICAgICAgICAgIGRp
Z2l0ID0gZGF0YVtpXSAtICcwJzsKKyAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYg
ZGF0YVtpXSA8IGxpbWl0YSkKKyAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEw
OworICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQor
ICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4ocmFkaXgpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGRpZ2l0
KSk7CisgICAgfQorCisgICAgaWYgKHAgPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gcmVzdWx0
LT5yaWdodFRyaW0odm0pOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTQmlnSW50OjpE
aWdpdCogSlNCaWdJbnQ6OmRhdGFTdG9yYWdlKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxEaWdpdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZEYXRh
KCkpOworfQorCitKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KGludCBuKQoreworICAg
IEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAgICByZXR1cm4gZGF0YVN0b3JhZ2Uo
KVtuXTsKK30KKwordm9pZCBKU0JpZ0ludDo6c2V0RGlnaXQoaW50IG4sIERpZ2l0IHZhbHVlKQor
eworICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKKyAgICBkYXRhU3RvcmFnZSgp
W25dID0gdmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDdlODNkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
Q2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQYXJzZUludC5oIgor
I2luY2x1ZGUgPHd0Zi9DYWdlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0JpZ0ludCA6IHB1
YmxpYyBKU0NlbGwgeworICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisKK3B1YmxpYzoKKworICAg
IEpTQmlnSW50KFZNJiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCk7CisKKyAgICBlbnVtIGNsYXNz
IEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07CisgICAgdm9pZCBpbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNp
emUoSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShpbnQgbGVuZ3Ro
KTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworCisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVaZXJvKFZNJik7CisgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVXaXRoTGVuZ3RoKFZNJiwg
aW50IGxlbmd0aCk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOworCisgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2lnbihib29sIHNp
Z24pIHsgbV9zaWduID0gc2lnbjsgfQorICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2lnbjsgfQorCisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxl
bmd0aDsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisg
ICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcs
IHVpbnQ4X3QgcmFkaXgpOworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gc2luZ2xl
RGlnaXRWYWx1ZUZvclN0cmluZygpOworICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUmLCBp
bnQgcmFkaXgpOworICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFs
cyhKU0JpZ0ludCosIEpTQmlnSW50Kik7CisKKyAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihF
eGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsKKyAgICBk
b3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHVz
aW5nIERpZ2l0ID0gdWludHB0cl90OworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IGJp
dHNQZXJCeXRlID0gODsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGludCBkaWdpdEJpdHMg
PSBzaXplb2YoRGlnaXQpICogYml0c1BlckJ5dGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBpbnQgaGFsZkRpZ2l0Qml0cyA9IGRpZ2l0Qml0cyAvIDI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBEaWdpdCBoYWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgaGFsZkRpZ2l0Qml0cykgLSAx
OworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IG1heEludCA9IDB4N0ZGRkZGRkY7Cisg
ICAgCisgICAgLy8gVGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gc3VwcG9ydHMgd291bGQgYmUKKyAgICAvLyBtYXhJbnQgLyBkaWdpdEJpdHMuIEhvd2V2
ZXIsIHdlIHVzZSBhIGxvd2VyIGxpbWl0IGZvciBub3csIGJlY2F1c2UKKyAgICAvLyByYWlzaW5n
IGl0IGxhdGVyIGlzIGVhc2llciB0aGFuIGxvd2VyaW5nIGl0LgorICAgIC8vIFN1cHBvcnQgdXAg
dG8gMSBtaWxsaW9uIGJpdHMuCisgICAgc3RhdGljIGNvbnN0IGludCBtYXhMZW5ndGggPSAxMDI0
ICogMTAyNCAvIChzaXplb2Yodm9pZCopICogYml0c1BlckJ5dGUpOworICAgIAorICAgIHN0YXRp
YyB1aW50NjRfdCBjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1JlcXVpcmVkKGludCBsZW5ndGgs
IGludCByYWRpeCwgRGlnaXQgbGFzdERpZ2l0LCBib29sIHNpZ24pOworICAgIAorICAgIHN0YXRp
YyB2b2lkIGFic29sdXRlRGl2U21hbGwoRXhlY1N0YXRlJiwgSlNCaWdJbnQqIHgsIERpZ2l0IGRp
dmlzb3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOworICAgIHN0YXRp
YyB2b2lkIGludGVybmFsTXVsdGlwbHlBZGQoSlNCaWdJbnQqIHNvdXJjZSwgRGlnaXQgZmFjdG9y
LCBEaWdpdCBzdW1tYW5kLCBpbnQsIEpTQmlnSW50KiByZXN1bHQpOworCisgICAgLy8gRGlnaXQg
YXJpdGhtZXRpYyBoZWxwZXJzLgorICAgIHN0YXRpYyBEaWdpdCBkaWdpdEFkZChEaWdpdCBhLCBE
aWdpdCBiLCBEaWdpdCYgY2FycnkpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdFN1YihEaWdpdCBh
LCBEaWdpdCBiLCBEaWdpdCYgYm9ycm93KTsKKyAgICBzdGF0aWMgRGlnaXQgZGlnaXRNdWwoRGln
aXQgYSwgRGlnaXQgYiwgRGlnaXQmIGhpZ2gpOworICAgIHN0YXRpYyBEaWdpdCBkaWdpdERpdihE
aWdpdCBoaWdoLCBEaWdpdCBsb3csIERpZ2l0IGRpdmlzb3IsIERpZ2l0JiByZW1haW5kZXIpOwor
ICAgIHN0YXRpYyBEaWdpdCBkaWdpdFBvdyhEaWdpdCBiYXNlLCBEaWdpdCBleHBvbmVudCk7CisK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nR2VuZXJpYyhFeGVjU3RhdGUmLCBKU0JpZ0ludCos
IGludCByYWRpeCk7CisKKyAgICBib29sIGlzWmVybygpOworCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgorICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwg
Vk0mLCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRp
eCwgYm9vbCBhbGxvd0VtcHR5U3RyaW5nID0gdHJ1ZSk7CisKKyAgICBzdGF0aWMgSlNCaWdJbnQq
IGFsbG9jYXRlRm9yKEV4ZWNTdGF0ZSosIFZNJiwgaW50IHJhZGl4LCBpbnQgY2hhcmNvdW50KTsK
KworICAgIEpTQmlnSW50KiByaWdodFRyaW0oVk0mKTsKKworICAgIHZvaWQgaW5wbGFjZU11bHRp
cGx5QWRkKERpZ2l0IG11bHRpcGxpZXIsIERpZ2l0IHBhcnQpOworICAgIAorICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZEYXRhKCk7CisgICAgRGlnaXQqIGRhdGFTdG9yYWdlKCk7CisKKyAgICBE
aWdpdCBkaWdpdChpbnQpOworICAgIHZvaWQgc2V0RGlnaXQoaW50LCBEaWdpdCk7CisgICAgICAg
IAorICAgIGludCBtX2xlbmd0aDsKKyAgICBib29sIG1fc2lnbjsKK307CisKK2lubGluZSBKU0Jp
Z0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxs
KCktPmlzQmlnSW50KCkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0Nl
bGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBiYWY0ZGZkLi4yNzJiMTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgpAQCAtMTI5LDYgKzEzMCw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVz
aXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsK
ICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKKyAgICAgICAgLy8gRklYTUU6IFtF
U05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludENvbnN0cnVjdG9yIGFuZCBCaWdJbnRQcm90
b3R5cGUKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTM1OQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghaXNCaWdJbnQoKSk7CiAgICAgICAgIEFT
U0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+c3ltYm9sUHJvdG90eXBlKCk7CiAgICAgfQpAQCAtMzc1LDYgKzM3OSwxMiBAQCBKU1N0
cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0
dXJuRW1wdHlTdHJpbmdPbkVycgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CisgICAgaWYgKGlzQmlnSW50KCkpIHsK
KyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKKyAgICAgICAgaWYg
KGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkKKyAgICAg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdp
dCArICcwJyk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBiaWdJbnQt
PnRvU3RyaW5nKCpleGVjLCAxMCkpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGMy
NGVhNWJiLi45ZjM5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnlJbnQoKSBj
b25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNv
bnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0
ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IGEyN2Y2YTEuLmFhNTFkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCkBAIC01NzgsNiArNTc5LDExIEBAIGlubGluZSBib29sIEpTVmFs
dWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlz
U3RyaW5nKCk7CiB9CiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50KCk7Cit9CisKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC0xMDIwLDYgKzEwMjYsOCBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFz
Q2VsbCgpLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChl
eGVjLCBhc1N0cmluZyh2MikpOworICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxLmFzQ2VsbCgp
KSwgYXNCaWdJbnQodjIuYXNDZWxsKCkpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDE0MzQ2ZTguLjc2N2U4
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTEzLDcg
KzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5n
KCkgfHwgY2VsbC0+aXNTeW1ib2woKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxs
LT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
KGNlbGwpLnB1dFRvUHJpbWl0aXZlKGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEpTQ2VsbDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SlNWYWx1ZQogCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpKSB7
CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5p
c0JpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRo
cm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0K
QEAgLTE1NSw2ICsxNTUsOCBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRl
KiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cAogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywg
cHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVk
VHlwZSk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShleGVjLCBwcmVmZXJyZWRUeXBlKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRp
dmUoZXhlYywgcHJlZmVycmVkVHlwZSk7CiB9CiAKQEAgLTE2NCw2ICsxNjYsOCBAQCBib29sIEpT
Q2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIs
IEpTVmFsdWUmIHZhbHVlKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJp
bmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKKyAgICBp
ZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIsIHZhbHVlKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVt
YmVyKGV4ZWMsIG51bWJlciwgdmFsdWUpOwogfQogCkBAIC0xNzMsNiArMTc3LDggQEAgZG91Ymxl
IEpTQ2VsbDo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CiAgICAg
aWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wq
Pih0aGlzKS0+dG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJlcihleGVjKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIo
ZXhlYyk7CiB9CiAKQEAgLTE4MSw2ICsxODcsOSBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVj
dFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjbwog
ICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChleGVjLCBn
bG9iYWxPYmplY3QpOworICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBK
U0JpZ0ludCwgQmlnSW50Q29uc3RydWN0b3IgYW5kIEJpZ0ludFByb3RvdHlwZQorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNTkKKyAgICBSRUxFQVNF
X0FTU0VSVCghaXNCaWdJbnQoKSk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggMmU5
MTk3My4uNGRhNzdhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAg
LTEwOCw2ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhl
IHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNv
bnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCA2NzM2ZjVmLi44OTM0Yzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0x
OTIsNiArMTkyLDExIEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAoraW5saW5lIGJvb2wgSlNDZWxsOjpp
c0JpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworfQor
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
eXBlID09IFN5bWJvbFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAKaW5kZXggYzFjMDM4Ni4uNmZhMmY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjYsMTAgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIK
IAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApp
bmRleCA4NTM1NmQzLi41NzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaApAQCAtMzMsNiArMzMsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxU
eXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKKyAgICBCaWdJbnRUeXBlLAog
CiAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwKICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGU4ZjMxNmMu
LjBmZGM3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhD
b21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgK
QEAgLTY2LDYgKzY2LDI1IEBAIGlubGluZSBpbnQgY2x6MzIodWludDMyX3QgbnVtYmVyKQogI2Vu
ZGlmCiB9CiAKK2lubGluZSBpbnQgY2x6NjQodWludDY0X3QgbnVtYmVyKQoreworI2lmIENPTVBJ
TEVSKEdDQ19PUl9DTEFORykKKyAgICBpbnQgemVyb0NvdW50ID0gNjQ7CisgICAgaWYgKG51bWJl
cikKKyAgICAgICAgemVyb0NvdW50ID0gX19idWlsdGluX2NsemxsKG51bWJlcik7CisgICAgcmV0
dXJuIHplcm9Db3VudDsKKyNlbHNlCisgICAgaW50IHplcm9Db3VudCA9IDA7CisgICAgZm9yIChp
bnQgaSA9IDYzOyBpID49IDA7IGktLSkgeworICAgICAgICBpZiAoIShudW1iZXIgPj4gaSkpCisg
ICAgICAgICAgICB6ZXJvQ291bnQrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB6ZXJvQ291bnQ7CisjZW5kaWYKK30KKwogLy8gVGhpcyBpbiB0
aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNN
QS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8g
VG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgogLy8gb2YgdGhlIHJlc3VsdGlu
ZyBiaXQtcGF0dGVybiAoYXMgc3VjaCB0aGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCmluZGV4IDU1MGI4ZjcuLmE2M2QwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlICJVaW50MTZX
aXRoRnJhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CkBAIC0xMzksOSArMTQwLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBn
ZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvdywgaW4KIC8v
IGZvIGFueSBudW1iZXIgb2YgZGlnaXRzIGFuIElFRUUgbnVtYmVyIG1heSByZXF1aXJlIHRvIHJl
cHJlc2VudC4KIHR5cGVkZWYgY2hhciBSYWRpeEJ1ZmZlclsyMTgwXTsKIAotLy8gTWFwcGluZyBm
cm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50aWZ5aW5nIHRoaXMgdmFsdWUsIGZvciBy
YWRpeCAyLi4zNi4KLXN0YXRpYyBjb25zdCBjaGFyIHJhZGl4RGlnaXRzW10gPSAiMDEyMzQ1Njc4
OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKLQogc3RhdGljIGlubGluZSBjaGFyKiBpbnQ1
MlRvU3RyaW5nV2l0aFJhZGl4KGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcsIGludDY0X3QgaW50
NTJWYWx1ZSwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA2ZDEw
NTU4Li45N2NmYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcApAQCAtODIsNiArODIsOCBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpOwogICAgIGlmICh2LmlzU3ltYm9s
KCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc3ltYm9sU3RyaW5nKCk7CisgICAg
aWYgKHYuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5iaWdpbnRT
dHJpbmcoKTsKICAgICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdCh2KTsKICAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmpl
Y3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKQEAgLTExMiw3ICsxMTQsNyBAQCBib29sIGpzSXNP
YmplY3RUeXBlT3JOdWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgICAg
IHJldHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBl
KCk7Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUpCisg
ICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9
PSBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2Jq
ZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IDAwYzEwNDkuLmZhZGZiMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTQ4MCw2ICs0ODAs
NyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVBc3luY0l0ZXJhdGlvbiA9IGZhbHNlOwogICAgIHYo
Ym9vbCwgdXNlQ2FsbElDc0ZvcldlYkFzc2VtYmx5VG9KU0NhbGxzLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB3ZSB3aWxsIHVzZSBDYWxsTGlua0luZm8gdG8gaW5saW5lIGNhY2hlIFdhc20gdG8g
SlMgY2FsbHMuIikgXAogICAgIHYoYm9vbCwgdXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hp
bmcsIGZhbHNlLCBOb3JtYWwsICJVbm5hbWVkIFdlYkFzc2VtYmx5IG1vZHVsZXMgYXJlIGlkZW50
aWZpZWQgaW4gYmFja3RyYWNlcyB0aHJvdWdoIHRoZWlyIGhhc2gsIGlmIGF2YWlsYWJsZS4iKSBc
CiAgICAgdihib29sLCB1c2VPYmplY3RSZXN0U3ByZWFkLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVl
LCB3ZSB3aWxsIGVuYWJsZSBPYmplY3QgUmVzdC9TcHJlYWQgZmVhdHVyZS4iKSBcCisgICAgdihi
b29sLCB1c2VCaWdJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBC
aWdJbnQgc3VwcG9ydC4iKSBcCiAgICAgdihib29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxp
bmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdp
bGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKVwKICAgICB2KGJvb2wsIGZvcmNlUG9s
eVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBhbHdheXMg
Y3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKaW5kZXggZTQ3OTVlYy4uZjMxMDE1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCkBAIC0yMjYsNCArMjI2
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJh
Y2tXaGVuTm9FeGNlcHRpb24oU3RyaW5nVmlldykKICAgICByZXR1cm4gY2FsbGJhY2sodmlld1dp
dGhTdHJpbmcudmlldyk7CiB9CiAKKy8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBk
aWdpdCBpZGVudGlmeWluZyB0aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCitjb25zdCBjaGFy
IHJhZGl4RGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5oCmluZGV4IDg1ZDRjYjEuLjg4NTBjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC00MCw2ICs0MCw3IEBACiAgICAgbWFj
cm8odW5kZWZpbmVkKSBcCiAgICAgbWFjcm8oc3RyaW5nKSBcCiAgICAgbWFjcm8oc3ltYm9sKSBc
CisgICAgbWFjcm8oYmlnaW50KSBcCiAgICAgbWFjcm8odHJ1ZSkKIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0xMDMsNiArMTA0LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG9iamVjdFN0
cmluZygpOwogICAgICAgICBjYXNlIFR5cGVvZlR5cGU6OkZ1bmN0aW9uOgogICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uU3RyaW5nKCk7CisgICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6QmlnSW50
OgorICAgICAgICAgICAgcmV0dXJuIGJpZ2ludFN0cmluZygpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggYjNjZTAyOS4uNzA2ZDBlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJEdW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCBhZTUyMTA3Li4z
YmZjZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCkBAIC0yMDMsNyArMjAzLDYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3Rv
dHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAog
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwog
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwotCiB9CiAKIGlubGlu
ZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlb2ZUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVv
ZlR5cGUuY3BwCmluZGV4IGRiMTYyYjcuLmFhM2ZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVvZlR5cGUuY3BwCkBAIC01NCw2ICs1NCw5IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBUeXBlb2ZUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBl
b2ZUeXBlOjpGdW5jdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBUeXBlb2ZUeXBlOjpCaWdJbnQ6CisgICAgICAgIG91dC5wcmlu
dCgiYmlnaW50Iik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVvZlR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVv
ZlR5cGUuaAppbmRleCAzMzJmYTgxLi45NjQ4NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlb2ZUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZW9mVHlwZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBlbnVtIGNsYXNzIFR5cGVvZlR5cGUgewogICAgIFVuZGVmaW5lZCwKKyAgICBCaWdJbnQsCiAg
ICAgQm9vbGVhbiwKICAgICBOdW1iZXIsCiAgICAgU3RyaW5nLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IDNmZjBhY2QuLjljM2U0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5o
IgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFy
cmF5LmgiCkBAIC0zMDgsNiArMzA5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgIGhhc2hNYXBCdWNrZXRNYXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBIYXNo
TWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1NldEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
bWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgYmlnSW50U3RydWN0dXJlLnNldCgqdGhp
cywgSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKIAogICAg
IHNlbnRpbmVsU2V0QnVja2V0LnNldCgqdGhpcywgSlNTZXQ6OkJ1Y2tldFR5cGU6OmNyZWF0ZVNl
bnRpbmVsKCp0aGlzKSk7CiAgICAgc2VudGluZWxNYXBCdWNrZXQuc2V0KCp0aGlzLCBKU01hcDo6
QnVja2V0VHlwZTo6Y3JlYXRlU2VudGluZWwoKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IGZjOTI2NzYuLmEzMzczZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtNDA5LDYgKzQwOSw3IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJlPiBo
YXNoTWFwQnVja2V0TWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNldEl0ZXJh
dG9yU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1hcEl0ZXJhdG9yU3RydWN0dXJl
OworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKIAogICAgIFN0cm9uZzxK
U0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBTdHJvbmc8SlNDZWxsPiBz
ZW50aW5lbFNldEJ1Y2tldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODc2ZDQxNS4uZDJlODc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxNy0xMi0xMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0Jp
Z0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgYW5kIFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgKiB3dGYvSGFzaEZ1bmN0aW9ucy5oOgorCiAyMDE3LTEyLTA5ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIFJlbW92ZSBS
RUxBWEVEX0NPTlNURVhQUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9u
cy5oIGIvU291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9ucy5oCmluZGV4IGRjNDJmMjcuLjlkYjkx
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoRnVuY3Rpb25zLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAvLyBtYWtlIEludEhhc2ggdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiBmb3Ig
bWFueSBpbnRlZ2VyIHR5cGVzCiAKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxi
b29sPiB7IHR5cGVkZWYgSW50SGFzaDx1aW50OF90PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPHVpbnQ4X3Q+IHsgdHlwZWRlZiBJbnRIYXNoPHVpbnQ4X3Q+IEhh
c2g7IH07CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c2hvcnQ+IHsgdHlwZWRl
ZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPHVuc2lnbmVkIHNob3J0PiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsg
fTsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxpbnQ+IHsgdHlwZWRlZiBJbnRI
YXNoPHVuc2lnbmVkPiBIYXNoOyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDE4YmIzNjAuLmE4N2M3YzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgYW5kIFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE3LTEyLTA5ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEZpeCBXVEY6Okhhc2hlciB0dXBs
ZSBleHBhbnNpb24gd2l0aCB2YXJpYWRpYyBhcmdzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0
cwppbmRleCBkZDU3MWUxLi42MDNjNGQwIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
QEAgLTYxNiw2ICs2MTYsMTAgQEAgZGVmIHJ1bkRlZmF1bHQoKm9wdGlvbmFsVGVzdFNwZWNpZmlj
T3B0aW9ucykKICAgICBydW4oImRlZmF1bHQiLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0
U3BlY2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVuQmlnSW50RW5hYmxlZCgqb3B0aW9uYWxU
ZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmlnLWludC1lbmFibGVkIiwgIi0tdXNlQmln
SW50PXRydWUiICwgKihGVExfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykp
CitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQog
ICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElP
TlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>