<?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>209408</bug_id>
          
          <creation_ts>2020-03-22 18:02:24 -0700</creation_ts>
          <short_desc>Move TextIterator::rangeFromLocationAndLength off of live ranges</short_desc>
          <delta_ts>2020-03-30 10:55:30 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>209207</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1632714</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-22 18:02:24 -0700</bug_when>
    <thetext>Move TextIterator::rangeFromLocationAndLength off of live ranges</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632717</commentid>
    <comment_count>1</comment_count>
      <attachid>394236</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-22 18:36:16 -0700</bug_when>
    <thetext>Created attachment 394236
Patch for EWS (includes all of the patch from bug 209207 too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633088</commentid>
    <comment_count>2</comment_count>
      <attachid>394316</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-23 15:55:34 -0700</bug_when>
    <thetext>Created attachment 394316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634992</commentid>
    <comment_count>3</comment_count>
      <attachid>394757</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-27 14:05:09 -0700</bug_when>
    <thetext>Created attachment 394757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635043</commentid>
    <comment_count>4</comment_count>
      <attachid>394767</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-27 16:05:30 -0700</bug_when>
    <thetext>Created attachment 394767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635094</commentid>
    <comment_count>5</comment_count>
      <attachid>394782</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-27 19:27:19 -0700</bug_when>
    <thetext>Created attachment 394782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635193</commentid>
    <comment_count>6</comment_count>
      <attachid>394821</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 09:24:23 -0700</bug_when>
    <thetext>Created attachment 394821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635246</commentid>
    <comment_count>7</comment_count>
      <attachid>394846</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 15:55:34 -0700</bug_when>
    <thetext>Created attachment 394846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635262</commentid>
    <comment_count>8</comment_count>
      <attachid>394848</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 17:38:10 -0700</bug_when>
    <thetext>Created attachment 394848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635275</commentid>
    <comment_count>9</comment_count>
      <attachid>394851</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 19:26:19 -0700</bug_when>
    <thetext>Created attachment 394851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635282</commentid>
    <comment_count>10</comment_count>
      <attachid>394853</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 19:51:39 -0700</bug_when>
    <thetext>Created attachment 394853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635313</commentid>
    <comment_count>11</comment_count>
      <attachid>394859</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 23:15:24 -0700</bug_when>
    <thetext>Created attachment 394859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635314</commentid>
    <comment_count>12</comment_count>
      <attachid>394860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 23:23:26 -0700</bug_when>
    <thetext>Created attachment 394860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635315</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 23:23:47 -0700</bug_when>
    <thetext>OK, should be ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635316</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-28 23:27:22 -0700</bug_when>
    <thetext>This patch also resolves bug 205314; should probably mention that in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635339</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 09:00:31 -0700</bug_when>
    <thetext>Windows bot failure isn’t real. Just conflict with a part of my latch with Dave Kilzer’s identical fix for a compile error on newer macOS that prevented the bot from applying the patch. I could upload a new patch to address it but I don’t think I should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635347</commentid>
    <comment_count>16</comment_count>
      <attachid>394869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 10:19:44 -0700</bug_when>
    <thetext>Created attachment 394869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635360</commentid>
    <comment_count>17</comment_count>
      <attachid>394869</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-29 12:05:22 -0700</bug_when>
    <thetext>Comment on attachment 394869
Patch

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

&gt; Source/WebCore/editing/CharacterRange.h:40
&gt; +using CharacterCount = std::size_t;

Why is this alias helpful? Why not just use size_t?

(I know it is not new in this patch)

&gt; Source/WebCore/editing/CharacterRange.h:44
&gt; +    CharacterCount location { 0 };
&gt; +    CharacterCount length { 0 };

It is bit weird that a location type is called &quot;count&quot;.

&gt; Source/WebCore/editing/CharacterRange.h:79
&gt; +inline Optional&lt;CharacterRange&gt; makeCharacterRange(CFRange range)
&gt; +{
&gt; +    ASSERT(range.location == kCFNotFound || range.location &gt;= 0);
&gt; +    ASSERT(range.length &gt;= 0);
&gt; +    if (range.location &lt; 0 || range.length &lt; 0)
&gt; +        return WTF::nullopt;
&gt; +    return CharacterRange { static_cast&lt;CharacterCount&gt;(range.location), static_cast&lt;CharacterCount&gt;(range.length) };
&gt; +}

Most clients are just unwrapping the Optional without any checking. It might be better to add a separate function for the few cases where kCFNotFound is actually a valid input (makeCharacterRangeIfValid or something) and make the regular version assert and return a plain CharacterRange.

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:67
&gt; +        badGrammar.range.location = checkLocation + badGrammarLocation;
&gt; +        badGrammar.range.length = badGrammarLength;

badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };

?

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:101
&gt; +            misspelling.range.location = wordStart + misspellingLocation;
&gt; +            misspelling.range.length = misspellingLength;

Similarly

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:279
&gt; +            CharacterRange mispellingCharacterRange;
&gt; +            mispellingCharacterRange.location = currentChunkOffset + misspellingLocation;
&gt; +            mispellingCharacterRange.length = misspellingLength;

auto mispellingCharacterRange = CharacterRange { currentChunkOffset + misspellingLocation,  misspellingLength };

?

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:317
&gt; +    outGrammarDetail.range.location = 0;
&gt; +    outGrammarDetail.range.length = 0;

outGrammarDetail.range = { };

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:471
&gt; +    outGrammarDetail.range.location = 0;
&gt; +    outGrammarDetail.range.length = 0;

outGrammarDetail.range = { };

&gt; Source/WebKit/UIProcess/WebGrammarDetail.cpp:48
&gt; +    m_grammarDetail.range.location = location;
&gt; +    m_grammarDetail.range.length = length;

m_grammarDetail.range = { location, length };

&gt; Source/WebKit/UIProcess/gtk/TextCheckerGtk.cpp:273
&gt; +        misspellingResult.range.location = offset + misspellingLocation;
&gt; +        misspellingResult.range.length = misspellingLength;

etc

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:5435
&gt; +    CharacterRange characterRange;
&gt; +    characterRange.location = WebCore::characterCount(*surroundingRange) + offset;
&gt; +    characterRange.length = characterCount;

etc

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:4081
&gt; +    CharacterRange newSelectionRange;
&gt; +    newSelectionRange.location = newSelectionLocation.unsafeGet();
&gt; +    newSelectionRange.length = newSelectionLength.unsafeGet();

etc

&gt; Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp:805
&gt; +        detail.range.location = location;
&gt; +        detail.range.length = length;

auto characterRange = CharacterRange { location, length }

&gt; Source/WebKitLegacy/win/WebView.cpp:7771
&gt; +    CharacterRange characterRange;
&gt; +    characterRange.location = location;
&gt; +    characterRange.length = length;

How about just

auto characterRange = CharacterRange { location, length }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635361</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 12:06:02 -0700</bug_when>
    <thetext>I now think this breaks the Mac Catalyst build and I won’t land it before learning how to at least build that configuration locally. Also I think we need this configuration in EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635362</commentid>
    <comment_count>19</comment_count>
      <attachid>394869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 12:17:38 -0700</bug_when>
    <thetext>Comment on attachment 394869
Patch

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

Thank you so much for the review! I really appreciate it. I could use a little help deciding what to do. A couple of your comments I can definitely do, the others open questions and I would like style advice.

&gt;&gt; Source/WebCore/editing/CharacterRange.h:40
&gt;&gt; +using CharacterCount = std::size_t;
&gt; 
&gt; Why is this alias helpful? Why not just use size_t?
&gt; 
&gt; (I know it is not new in this patch)

I think it’s helpful to make the semantics clearer. It’s like a variable name. Otherwise it just seems random what is int and what is size_t. But not 100% sure. I could definitely retire this type with a global replace.

Separate thought: maybe this should be std::uint64_t instead of std::size_t?

&gt;&gt; Source/WebCore/editing/CharacterRange.h:44
&gt;&gt; +    CharacterCount length { 0 };
&gt; 
&gt; It is bit weird that a location type is called &quot;count&quot;.

It’s the count of the number of characters before that location. I am open to other ideas about the names. Sometimes people call this an index or an offset.

&gt;&gt; Source/WebCore/editing/CharacterRange.h:79
&gt;&gt; +}
&gt; 
&gt; Most clients are just unwrapping the Optional without any checking. It might be better to add a separate function for the few cases where kCFNotFound is actually a valid input (makeCharacterRangeIfValid or something) and make the regular version assert and return a plain CharacterRange.

Thanks for the suggestion!

Seems OK, that’s how I started, and I’d be willing to go back to that approach.

If I was willing to just assert I could make this a constructor of CharacterRange instead of a named function. Not sure how you feel about that? Makes the code more elegant, but also elegantly hides the fact that we might need to check for not found.

I don’t really need to provide a helper function; can just check for &quot;not found&quot; in all the places that need it. But I was thinking this Optional might help people remember the check in future code they write?

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:67
&gt;&gt; +        badGrammar.range.length = badGrammarLength;
&gt; 
&gt; badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };
&gt; 
&gt; ?

Can’t do exactly that because checkLocation is unsigned, badGrammarLocation is int, badGrammarLength is int, and ranges want CharacterCount/std::size_t. We could write:

    badGrammar.range = CharacterRange(checkLocation + badGrammarLocation, badGrammarLength);

If you like that better I’d be willing to go with it.

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:101
&gt;&gt; +            misspelling.range.length = misspellingLength;
&gt; 
&gt; Similarly

Same issue/choice.

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:279
&gt;&gt; +            mispellingCharacterRange.length = misspellingLength;
&gt; 
&gt; auto mispellingCharacterRange = CharacterRange { currentChunkOffset + misspellingLocation,  misspellingLength };
&gt; 
&gt; ?

Same thing again, the mix of types.

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:317
&gt;&gt; +    outGrammarDetail.range.length = 0;
&gt; 
&gt; outGrammarDetail.range = { };

Will do. But really, out parameters stink and that’s the real fix. If we created a new GrammarDetail everything would be initialized.

&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:471
&gt;&gt; +    outGrammarDetail.range.length = 0;
&gt; 
&gt; outGrammarDetail.range = { };

OK.

&gt;&gt; Source/WebKit/UIProcess/WebGrammarDetail.cpp:48
&gt;&gt; +    m_grammarDetail.range.length = length;
&gt; 
&gt; m_grammarDetail.range = { location, length };

Same problem with types here. Could use the CharacterRange(location, length) syntax.

&gt;&gt; Source/WebKit/UIProcess/gtk/TextCheckerGtk.cpp:273
&gt;&gt; +        misspellingResult.range.length = misspellingLength;
&gt; 
&gt; etc

Yup, same thing again.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:5435
&gt;&gt; +    characterRange.length = characterCount;
&gt; 
&gt; etc

Same problem with types here. std::size_t + std::int64_t might not yield a std::size_t.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:4081
&gt;&gt; +    newSelectionRange.length = newSelectionLength.unsafeGet();
&gt; 
&gt; etc

Here it’s int64_t, not std::size_t.

&gt;&gt; Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp:805
&gt;&gt; +        detail.range.length = length;
&gt; 
&gt; auto characterRange = CharacterRange { location, length }

Here it’s int.

&gt;&gt; Source/WebKitLegacy/win/WebView.cpp:7771
&gt;&gt; +    characterRange.length = length;
&gt; 
&gt; How about just
&gt; 
&gt; auto characterRange = CharacterRange { location, length }

Here it’s unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635363</commentid>
    <comment_count>20</comment_count>
      <attachid>394869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 12:23:59 -0700</bug_when>
    <thetext>Comment on attachment 394869
Patch

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

&gt;&gt;&gt; Source/WebCore/editing/TextCheckingHelper.cpp:67
&gt;&gt;&gt; +        badGrammar.range.length = badGrammarLength;
&gt;&gt; 
&gt;&gt; badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };
&gt;&gt; 
&gt;&gt; ?
&gt; 
&gt; Can’t do exactly that because checkLocation is unsigned, badGrammarLocation is int, badGrammarLength is int, and ranges want CharacterCount/std::size_t. We could write:
&gt; 
&gt;     badGrammar.range = CharacterRange(checkLocation + badGrammarLocation, badGrammarLength);
&gt; 
&gt; If you like that better I’d be willing to go with it.

Or:

    badGrammar.range = { static_cast&lt;CharacterCount&gt;(checkLocation + badGrammarLocation), static_cast&lt;CharacterCount&gt;(badGrammarLength) };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635368</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-29 12:45:22 -0700</bug_when>
    <thetext>&gt; If I was willing to just assert I could make this a constructor of
&gt; CharacterRange instead of a named function. Not sure how you feel about
&gt; that? Makes the code more elegant, but also elegantly hides the fact that we
&gt; might need to check for not found.

I think for simple structs it is cleaner to use standalone construction functions that complex constructors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635370</commentid>
    <comment_count>22</comment_count>
      <attachid>394869</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-29 12:53:50 -0700</bug_when>
    <thetext>Comment on attachment 394869
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:2776
&gt; +static void correctSpellcheckingPreservingTextCheckingParagraph(TextCheckingParagraph&amp; paragraph, Range&amp; rangeToReplace, const String&amp; replacement, CharacterCount resultLocation, CharacterCount resultLength)

This could take CharacterRange

&gt; Source/WebCore/editing/Editor.cpp:3781
&gt; +        CharacterCount subrangeOffset = scannerPosition + relativeStartPosition;
&gt; +        CharacterCount subrangeLength = relativeEndPosition - relativeStartPosition + 1;

Could be CharacterRange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635378</commentid>
    <comment_count>23</comment_count>
      <attachid>394878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 16:42:39 -0700</bug_when>
    <thetext>Created attachment 394878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635379</commentid>
    <comment_count>24</comment_count>
      <attachid>394878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 16:43:10 -0700</bug_when>
    <thetext>Comment on attachment 394878
Patch

Already reviewed. Just need EWS to check various platforms before I land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635380</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 16:45:24 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #21)
&gt; &gt; If I was willing to just assert I could make this a constructor of
&gt; &gt; CharacterRange instead of a named function. Not sure how you feel about
&gt; &gt; that? Makes the code more elegant, but also elegantly hides the fact that we
&gt; &gt; might need to check for not found.
&gt; 
&gt; I think for simple structs it is cleaner to use standalone construction
&gt; functions that complex constructors

Oh, I didn&apos;t see this comment. I ended up making CharacterRange allow construction with CFRange and NSRange. It seems to have turned out well enough that I won’t change it to makeCharacterRange right now. Could come back and do that later if we have regrets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635381</commentid>
    <comment_count>26</comment_count>
      <attachid>394869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 16:48:01 -0700</bug_when>
    <thetext>Comment on attachment 394869
Patch

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:3781
&gt;&gt; +        CharacterCount subrangeLength = relativeEndPosition - relativeStartPosition + 1;
&gt; 
&gt; Could be CharacterRange

Did all the other changes in the patch I just posed. Did this change, too, locally and will include it in the patch I land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635382</commentid>
    <comment_count>27</comment_count>
      <attachid>394879</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 17:18:39 -0700</bug_when>
    <thetext>Created attachment 394879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635385</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 18:06:34 -0700</bug_when>
    <thetext>Committed r259184: &lt;https://trac.webkit.org/changeset/259184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635386</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-29 18:07:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/61036152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635584</commentid>
    <comment_count>30</comment_count>
      <attachid>394879</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-03-30 10:38:15 -0700</bug_when>
    <thetext>Comment on attachment 394879
Patch

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

&gt; LayoutTests/platform/mac-wk1/TestExpectations:241
&gt; +# FIXME: Should be fixed in Catalina; need to re-enable.

Asked someone to look into this.

&gt; LayoutTests/platform/mac-wk1/TestExpectations:723
&gt; +fast/images/animated-gif-paint-after-animation.html [ Skip ]
&gt; +fast/images/async-image-background-image-repeated.html [ Skip ]
&gt; +fast/images/async-image-background-image.html [ Skip ]
&gt; +fast/images/async-image-multiple-clients-repaint.html [ Skip ]
&gt; +fast/images/composited-animated-gif-outside-viewport.html [ Skip ]
&gt; +fast/images/decode-render-animated-image.html [ Skip ]
&gt; +fast/images/decode-render-static-image.html [ Skip ]
&gt; +fast/images/decoding-attribute-async-small-image.html [ Skip ]
&gt; +fast/images/decoding-attribute-dynamic-async-small-image.html [ Skip ]
&gt; +fast/images/sprite-sheet-image-draw.html [ Skip ]

We&apos;ve got a lot of unfortunate test expectations...

&gt; LayoutTests/platform/mac-wk2/TestExpectations:514
&gt;  # RTL Scrollbars are enabled on Sierra WebKit2.

This comment is obsolete.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:544
&gt;  # &lt;rdar://problem/25063128&gt;

This is closed as unreproducible. But still happening on some (internal) bots.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-585
&gt; -webkit.org/b/162524 [ Sierra Release ] http/tests/cache/disk-cache/disk-cache-redirect.html [ Pass Timeout ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-602
&gt; -webkit.org/b/163453 [ Sierra Release ] http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html [ Pass Timeout ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-614
&gt; -webkit.org/b/167206 [ Sierra Release ] mathml/opentype/large-operators-displaystyle-dynamic.html [ Pass ImageOnlyFailure ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-643
&gt; -webkit.org/b/171939 [ Sierra Release ] media/track/track-cue-rendering-on-resize.html [ Pass Timeout ]
&gt; -
&gt; -webkit.org/b/171947 [ Sierra Release ] transitions/extra-transition.html [ Pass Failure ]

We need to update the bugs.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-649
&gt; -webkit.org/b/172054 [ Sierra Debug ] loader/stateobjects/replacestate-size-iframe.html [ Pass Timeout ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:642
&gt; +http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-database.html [ Pass Timeout ]
&gt; +http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html [ Skip ]
&gt; +http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-database.html [ Skip ]

Something wrong about these, they are skipped everywhere with a confusing comment saying &quot;only tested on Mac&quot;.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-696
&gt; -webkit.org/b/172829 [ Sierra Debug ] loader/stateobjects/replacestate-size.html [ Pass Timeout ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:700
&gt; +http/tests/ssl/applepay/ApplePayError.html [ Pass ]
&gt; +http/tests/ssl/applepay/ApplePaySessionV3.html [ Pass ]
&gt; +http/tests/ssl/applepay/ApplePaySessionV4.html [ Pass ]
&gt; +http/tests/ssl/applepay/ApplePaySessionV5.html [ Pass ]
&gt; +http/tests/ssl/applepay/ApplePayRequestShippingContactV3.https.html [ Pass ]
&gt; +http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html [ Pass ]
&gt; +accessibility/mac/apple-pay-labels.html [ Pass ]
&gt; +accessibility/mac/apple-pay-session-v4.html [ Pass ]

None of this seems to be necessary, there are no other expectations that would skip these tests.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:712
&gt; +http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/cookie-deletion.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/add-blocking-to-redirect.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/grandfathering.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-redirects.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-requests.html [ Pass ]
&gt; +http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html [ Pass ]

Not sure why we are doing this one by one, not enabling the whole http/tests/resourceLoadStatistics directory.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-759
&gt; -webkit.org/b/178553 [ HighSierra Release ] imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html [ Skip ]
&gt; -
&gt; -webkit.org/b/165620 [ Sierra ] http/tests/cache/disk-cache/disk-cache-request-headers.html [ Pass Failure ]

We need to update the bugs.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-797
&gt; -webkit.org/b/183860 [ Sierra Release ] http/wpt/service-workers/third-party-registration.html [ Pass Failure ]

We need to update the bug.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:-857
&gt; -webkit.org/b/191658 [ Sierra Release ] fast/layers/no-clipping-overflow-hidden-added-after-transform.html [ Pass ImageOnlyFailure ]

We need to update the bug.

&gt; LayoutTests/platform/mac/TestExpectations:1169
&gt;  # rdar://problem/27475162

We need to update the bug.

&gt; LayoutTests/platform/mac/TestExpectations:1188
&gt; +webkit.org/b/159755 fast/text/emoji-num-glyphs.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-3.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-4.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-5.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-6.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-7.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-8.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-2-9.html [ Pass ]
&gt; +
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-3.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-4.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-5.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-6.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-7.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-8.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender-fe0f-9.html [ Pass ]
&gt; +webkit.org/b/159755 fast/text/emoji-gender.html [ Pass ]

Hmm, why are we not running these on iOS.

&gt; LayoutTests/platform/mac/TestExpectations:-1304
&gt; -webkit.org/b/171272 [ Sierra ] fast/text/kaithi.html [ ImageOnlyFailure ]

We need to update the bug.

&gt; LayoutTests/platform/mac/TestExpectations:-1341
&gt; -webkit.org/b/173328 [ Sierra ] fast/text/system-font-fallback-emoji.html [ Failure ]
&gt; -webkit.org/b/173328 [ Sierra ] fast/text/system-font-fallback.html [ ImageOnlyFailure ]

We need to update the bugs.

&gt; LayoutTests/platform/mac/TestExpectations:1389
&gt;  # &lt;rdar://problem/29031509&gt; REGRESSION? (FontParser-195): svg/W3C-SVG-1.1/fonts-elem-* and svg/W3C-SVG-1.1/text-intro-* tests failing
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-01-t.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-02-t.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-03-b.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-02-b.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/batik/text/textEffect3.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/batik/text/textPosition2.svg [ Failure ]
&gt; -[ HighSierra+ ] svg/custom/acid3-test-77.html [ Failure ]
&gt; -[ HighSierra+ ] svg/custom/svg-fonts-fallback.xhtml [ Failure ]
&gt; -[ HighSierra+ ] svg/wicd/test-rightsizing-b.xhtml [ Failure ]
&gt; -[ HighSierra+ ] fast/css-generated-content/initial-letter-first-line-wrapping.html [ ImageOnlyFailure  ]
&gt; +svg/W3C-SVG-1.1/fonts-elem-01-t.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/fonts-elem-02-t.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/fonts-elem-03-b.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/text-intro-02-b.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure ]
&gt; +svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure ]
&gt; +svg/batik/text/textEffect3.svg [ Failure ]
&gt; +svg/batik/text/textPosition2.svg [ Failure ]
&gt; +svg/custom/acid3-test-77.html [ Failure ]
&gt; +svg/custom/svg-fonts-fallback.xhtml [ Failure ]
&gt; +svg/wicd/test-rightsizing-b.xhtml [ Failure ]
&gt; +fast/css-generated-content/initial-letter-first-line-wrapping.html [ ImageOnlyFailure  ]

This bug is marked as fixed in High Sierra.

&gt; LayoutTests/platform/mac/TestExpectations:1391
&gt;  # &lt;rdar://problem/30493910&gt; REGRESSION: LayoutTest fast/writing-mode/broken-ideograph-small-caps.html failing

This is marked as no longer happening in High Sierra.

&gt; LayoutTests/platform/mac/TestExpectations:1394
&gt;  # &lt;rdar://problem/30182401&gt; REGRESSION: LayoutTest media/media-source/media-source-abort-resets-parser.html failing

This is marked as a duplicate of a fixed bug.

&gt; LayoutTests/platform/mac/TestExpectations:1397
&gt;  # &lt;rdar://problem/30517283&gt; REGRESSION: LayoutTests security/block-test.html and security/block-test-no-port.html failing

This too. There are probably quite a few more, I stopped checking.

&gt; LayoutTests/platform/mac/TestExpectations:1425
&gt;  # WebCryptoAPI features that enabled only for High Sierra/iOS 11

Surprising that we have to enable these one by one.

&gt; LayoutTests/platform/mac/TestExpectations:1635
&gt; +css-dark-mode/older-systems [ Skip ]

This directory should be deleted instead.

It is surprising that so much unrelated TestExpectations cleanup was done in this patch, without expert review.

&gt; LayoutTests/platform/mac/TestExpectations:-1703
&gt; -webkit.org/b/199275 [ HighSierra ] webgpu [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/create-context-webgpu.html [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/requestClientNodes-webgpu.html [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/requestShaderSource-webgpu.html [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/resolveContext-webgpu.html [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/shaderProgram-add-remove-webgpu.html [ Skip ]
&gt; -webkit.org/b/199275 [ HighSierra ] inspector/canvas/updateShader-webgpu.html [ Skip ]

I updated this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635592</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 10:54:26 -0700</bug_when>
    <thetext>What I did in the TestExpectations was expand Sierra and HighSierra to be &quot;false&quot;, convert Sierra+, HighSierra+, and Mojave+ to be &quot;true&quot;.

And make a small number of changes specifically about this patch.

No other cleanup or rationalization. That can be done by someone else in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635593</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 10:55:30 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #31)
&gt; No other cleanup or rationalization. That can be done by someone else in
&gt; another bug.

Sorry, that’s wrong. I did a tiny bit more. Adding Pass to tests that are passing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394236</attachid>
            <date>2020-03-22 18:36:16 -0700</date>
            <delta_ts>2020-03-23 15:55:32 -0700</delta_ts>
            <desc>Patch for EWS (includes all of the patch from bug 209207 too)</desc>
            <filename>bug-209408-20200322183615.patch</filename>
            <type>text/plain</type>
            <size>205697</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE5ODZmZmYyZTI0NGM2
NjkwZDMwZTdlYTJlNjU3NTU2MTEyYTA5Zi4uZDBlM2YwNDBiMThiMGJhYWFkYWI5NWY1NmNjNWNj
ZmRiMzJhMjhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yMiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvdGltZWxpbmVzL3VwZGF0
ZS1hbmQtc2VuZC1ldmVudHMtcmVwbGFjZW1lbnQuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxMjljNzBmZmRjY2JjMmFlYWQ0NTViN2E5Yzk0ZmExNjdjZDY3NWIyLi5lZDU4Y2Qz
NTI1ODExNTRlNWQ4NDg0MTNiNWU5YmI3M2VhNTM4OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
IEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxp
dmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0w
My0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZG9wdCAtW1VJV2luZG93U2NlbmUgaW50ZXJmYWNlT3JpZW50YXRpb25dIHdoZW4gZGV0ZXJtaW5p
bmcgZGV2aWNlIG9yaWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggN2Fh
OWJkZDRmODM2YTkyMDc1MjcxMjI0MGRjZTdlMDU5YzA2NWVjYi4uODI2YTUwYjc2Njk1NWQzMDE5
ODE1OGIxZTA2ODU5ZmM1ZjViZTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgg
b2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogMjAyMC0wMy0yMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbnN1cmUgbWVkaWEgY2FjaGUgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYmVmb3JlIHBhc3Npbmcg
dG8gQVZVUkxBc3NldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDlmNTU2NTQ2ZjhkNmRjODE3ZGJk
NGQ4NjMzM2ViMTQ1OGE4MmNlZDkuLmQ5OWM0MDM0ZTFjZDZmZWE1ZjkwZDY3NDE2MTUzOWU5OWRh
Yjg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDg2LDYgKzQ4Niw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQ
b3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmgKIAorICAgIGVkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaAogICAgIGVkaXRpbmcv
Q2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0
LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODk0ZGU1MjZlY2Zi
ZDk4YjdiNmY4MDBmY2I3YjkzMTBhNzhiZjY0Li5kMzM1YmRhNzFjM2I1YzUzMmZkOGNkZTE1OTNj
MjVlZGZiYzdmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNzM1LDYgKzI3MzUsNyBAQAogCQk5M0YxOUIxNzA4MjQ1RTU5
MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vj
b3JlLmR5bGliICovOyB9OwogCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3Nl
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKIAkJ
OTNGMUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QkYxMkQ1MzM1NjAw
ODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovOyB9OworCQk5M0YyQ0M5MzI0MjdGQjlD
MDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAw
NTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCTkzRjkyNTQzMEY3RUY1Qjgw
MDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0
dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEwRkI3MjAwODU0
MDY0IC8qIEpTQ29tbWVudC5oICovOyB9OwpAQCAtMTA5MzYsNiArMTA5MzcsNyBAQAogCQk5M0Yx
RDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTExvc2VDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1MzM1NjAwODMy
QkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYkdMTG9zZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbnRleHRF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVCMTI3RjcwQjEw
MDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxNzYzLDYgKzIxNzY1LDcgQEAKIAkJCQk5MzMwOUQ4QzA5OUU2NDkx
MDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAogCQkJCUY0RDk4MTdFMjE5
NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwICovLAogCQkJCUY0RDk4
MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAqLywKKwkJCQk5
M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLywKIAkJCQk3QzNB
OTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCiAJCQkJ
OTMzMDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCAqLywK
IAkJCQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAq
LywKQEAgLTI5NjQ0LDYgKzI5NjQ3LDcgQEAKIAkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkg
LyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTAwOTlE
RjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NTky
Rjc4MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJE
MDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlB
MzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDI4ODAzNDAxOTZkMTY5YTNkZjFjMDBhZGZhOGY5NmY4NGM0ZDgyYjIuLmY0ZDVjMWUz
MzU5ZDNhNTFmNjAzZjVhYWQ0MGMyNjZmNTYyMjQ1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTkzOCwxOCArMTkzOCwxNiBAQCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJS
YW5nZShjb25zdCBTaW1wbGVSYW5nZQogICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSBtYXRjaFRl
eHQubGVuZ3RoKCk7CiAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9y
UG9zaXRpb25XaXRoT2Zmc2V0KGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihvcmlnaW5hbFJh
bmdlLnN0YXJ0KSwgLXRleHRMZW5ndGgpOwogICAgIGF1dG8gZW5kUG9zaXRpb24gPSB2aXNpYmxl
UG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG9yaWdpbmFsUmFuZ2Uuc3RhcnQpLCAyICogdGV4dExlbmd0aCk7Ci0KICAgICBpZiAoc3RhcnRQ
b3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShvcmlnaW5hbFJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSk7CiAgICAg
aWYgKGVuZFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBlbmRQb3NpdGlvbiA9IGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUob3JpZ2luYWxSYW5nZS5lbmQuY29udGFpbmVyLnB0cigpKTsKIAot
ICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQor
ICAgIFNpbXBsZVJhbmdlIHNlYXJjaFJhbmdlIHsgKm1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0UG9z
aXRpb24pLCAqbWFrZUJvdW5kYXJ5UG9pbnQoZW5kUG9zaXRpb24pIH07CisgICAgaWYgKHNlYXJj
aFJhbmdlLmNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
YXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG9yaWdpbmFsUmFuZ2Uuc3RhcnQpKTsKLSAgICB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigp
LCB0cnVlKTsKKyAgICBhdXRvIHRhcmdldE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgc2VhcmNo
UmFuZ2Uuc3RhcnQsIG9yaWdpbmFsUmFuZ2Uuc3RhcnQgfSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGZp
bmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zm
c2V0KTsKIH0KIApAQCAtMTk5MiwxMiArMTk5MCwxMSBAQCBzdGF0aWMgYm9vbCBjaGFyYWN0ZXJP
ZmZzZXRzSW5PcmRlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDEsIGNv
bgogc3RhdGljIE5vZGUqIHJlc2V0Tm9kZUFuZE9mZnNldEZvclJlcGxhY2VkTm9kZShOb2RlKiBy
ZXBsYWNlZE5vZGUsIGludCYgb2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpCiB7CiAgICAgLy8g
VXNlIHRoaXMgZnVuY3Rpb24gdG8gaW5jbHVkZSB0aGUgcmVwbGFjZWQgbm9kZSBpdHNlbGYgaW4g
dGhlIHJhbmdlIHdlIGFyZSBjcmVhdGluZy4KLSAgICBpZiAoIXJlcGxhY2VkTm9kZSkKKyAgICBh
dXRvIG5vZGVSYW5nZSA9IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKHJlcGxh
Y2VkTm9kZSk7CisgICAgaWYgKCFub2RlUmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIAotICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gQVhPYmplY3RDYWNoZTo6cmFuZ2VG
b3JOb2RlQ29udGVudHMocmVwbGFjZWROb2RlKTsKLSAgICBpbnQgbm9kZUxlbmd0aCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLmdldCgpKTsKLSAgICBvZmZzZXQgPSBjaGFy
YWN0ZXJDb3VudCA8PSBub2RlTGVuZ3RoID8gcmVwbGFjZWROb2RlLT5jb21wdXRlTm9kZUluZGV4
KCkgOiByZXBsYWNlZE5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CisgICAgYm9vbCBpc0lu
Tm9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGFyYWN0ZXJDb3VudCkgPD0gV2ViQ29yZTo6
Y2hhcmFjdGVyQ291bnQoKm5vZGVSYW5nZSk7CisgICAgb2Zmc2V0ID0gcmVwbGFjZWROb2RlLT5j
b21wdXRlTm9kZUluZGV4KCkgKyAoaXNJbk5vZGUgPyAwIDogMSk7CiAgICAgcmV0dXJuIHJlcGxh
Y2VkTm9kZS0+cGFyZW50Tm9kZSgpOwogfQogCkBAIC0yNDEzLDE0ICsyNDEwLDE2IEBAIENoYXJh
Y3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYgY2hhcmFjCiAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAg
ICAKICAgICAvLyBXZSBkb24ndCBhbHdheXMgbW92ZSBvbmUgJ2NoYXJhY3RlcicgYXQgYSB0aW1l
IHNpbmNlIHRoZXJlIG1pZ2h0IGJlIGNvbXBvc2VkIGNoYXJhY3RlcnMuCi0gICAgaW50IG5leHRP
ZmZzZXQgPSBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNldChjaGFyYWN0ZXJPZmZzZXQubm9k
ZSwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IFBv
c2l0aW9uOjp1bmNoZWNrZWROZXh0T2Zmc2V0KGNoYXJhY3Rlck9mZnNldC5ub2RlLCBjaGFyYWN0
ZXJPZmZzZXQub2Zmc2V0KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9m
ZnNldEZvck5vZGVBbmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBuZXh0T2Zmc2V0KTsK
ICAgICAKICAgICAvLyBUbyBiZSBjb25zaXN0ZW50IHdpdGggVmlzaWJsZVBvc2l0aW9uLCB3ZSBz
aG91bGQgY29uc2lkZXIgdGhlIGNhc2UgdGhhdCBjdXJyZW50IG5vZGUgZW5kIHRvIG5leHQgbm9k
ZSBzdGFydCBjb3VudHMgMSBvZmZzZXQuCiAgICAgaWYgKCFpZ25vcmVOZXh0Tm9kZVN0YXJ0ICYm
ICFuZXh0LmlzTnVsbCgpICYmICFpc1JlcGxhY2VkTm9kZU9yQlIobmV4dC5ub2RlKSAmJiBuZXh0
Lm5vZGUgIT0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRz
KGNoYXJhY3Rlck9mZnNldCwgbmV4dCkuZ2V0KCkpOwotICAgICAgICBpZiAobGVuZ3RoID4gbmV4
dE9mZnNldCAtIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQpCi0gICAgICAgICAgICBuZXh0ID0gY2hh
cmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqbmV4dC5ub2RlLCAwLCBUcmF2ZXJzZU9wdGlv
bkluY2x1ZGVTdGFydCk7CisgICAgICAgIGlmIChhdXRvIHJhbmdlID0gcmFuZ2VGb3JVbm9yZGVy
ZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgbmV4dCkpIHsKKyAgICAgICAgICAg
IGF1dG8gbGVuZ3RoID0gY2hhcmFjdGVyQ291bnQoKnJhbmdlKTsKKyAgICAgICAgICAgIGlmIChs
ZW5ndGggPiBuZXh0T2Zmc2V0IC0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCkKKyAgICAgICAgICAg
ICAgICBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqbmV4dC5ub2RlLCAw
LCBUcmF2ZXJzZU9wdGlvbkluY2x1ZGVTdGFydCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIG5leHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4NTU3ODRi
MDUxZDNkNzIxZDEwNmYuLmQxNTZhZWNlODY4NWVkMzQ0Yzk1NWVkMjdhZDkwOTAzNjM2MWU4ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0
Q2FjaGVBdGsuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2Rl
VGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUK
ICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gZW5zdXJlIHdl
IGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxpbmUgdGV4dCBh
cmVhcykuCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2Rl
LT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZz
ZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpKTsKKyAgICAgICAgb2Zm
c2V0VG9FbWl0ID0gb2Zmc2V0ICsgY2hhcmFjdGVyQ291bnQocmFuZ2UuZ2V0KCkpOwogICAgIH0K
IAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZz
ZXRUb0VtaXQsIHRleHRUb0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGE0NjFjMWZhZGFmOGM3MjVkY2RiNGZl
OWU1ZjgwMGZiOGI2ODI5ZWQuLjhkOTZkMmE2MTcyNWNiMDM1YmNhZjIwOGMzOTczMTQ4Mjk0ODlk
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgc3Rh
dGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldE9iamVjdChBdGtIeXBl
cmxpbmsqIGxpbmssIGdpbnQgaW4KIHN0YXRpYyBnaW50IHJhbmdlTGVuZ3RoRm9yT2JqZWN0KEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iaiwgUmFuZ2UqIHJhbmdlKQogewogICAgIC8vIFRoaXMgaXMg
Z29pbmcgdG8gYmUgdGhlIGFjdHVhbCBsZW5ndGggaW4gbW9zdCBvZiB0aGUgY2FzZXMKLSAgICBp
bnQgYmFzZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UsIHRydWUpOwor
ICAgIGludCBiYXNlTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQoKnJhbmdlLCB0cnVlKTsKIAogICAg
IC8vIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgaHlwZXJsaW5rIGJlbG9uZ3MgdG8gYSBsaXN0
IGl0ZW0uCiAgICAgLy8gSWYgc28sIHdlIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxlbmd0aCBvZiB0
aGUgaXRlbSdzIG1hcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IGIyNzE1YzdjNTNjYWU5ZDA0YWYzZTRjMGY5M2FmOTc1ZjYzZGI1MjUuLjE1NGRjM2MwMjc3NmRh
NDg4MzQ3YzJiYTAxZGZmNTgyNTZiODVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKQEAgLTQxMCw5ICs0MTAsOSBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZz
ZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAg
ICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwg
cmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRl
ciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNl
dFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJ
blBhcmVudC5wdHIoKSwgdHJ1ZSkpOworICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRv
QXRrT2Zmc2V0KGNvcmVPYmplY3QsIGNoYXJhY3RlckNvdW50KHJhbmdlSW5QYXJlbnQuZ2V0KCks
IHRydWUpKTsKICAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3Ro
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOworICAg
IGludCByYW5nZUxlbmd0aCA9IGNoYXJhY3RlckNvdW50KG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7
CiAKICAgICAvLyBTcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgd2hlbiB3b3Jr
aW5nIHdpdGggKl9FTkQgYm91bmRhcmllcy4KICAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5KCkg
PT0gVVBTVFJFQU0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCA1NjM5MmMwYmQ4M2QxYTJhN2Ni
NzZhNzU0YjllYjg4M2YyMGNmZjVlLi4zOTRkNDg2M2YwM2EyZjhhNTQzMTRmYWIwNzc5MmI2YWUy
ZjAxZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBBWENvcmVP
YmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBWENvcmVPYmplY3Qq
IHJlZmVyZW5jZU9iamVjdAogICAgICAgICBvZmZzZXQgPSAwOwogICAgIGVsc2UgaWYgKCFpc1N0
YXJ0T2ZMaW5lKGVuZFBvc2l0aW9uKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
bWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLnByZXZpb3VzKCkpOwotICAgICAg
ICBvZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKSAr
IDE7CisgICAgICAgIG9mZnNldCA9IChyYW5nZSA/IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgdHJ1
ZSkgOiAwKSArIDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IG1ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgICAgIG9mZnNldCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICBv
ZmZzZXQgPSByYW5nZSA/IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgdHJ1ZSkgOiAwOwogICAgIH0K
IAogICAgIHJldHVybiBmaXJzdFVuaWdub3JlZFBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggMTAxZWIyZDgyNzk3OTRkYTkxMzRkMjgxMTgwZGVhNWNh
YjgwZGM1ZC4uYjAyYmI4NGQ2ZmNmZGFkNjBmNmE3OGE1MDQyOWMwN2MwNWEwYjQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIzMTAsMzkgKzIzMTAsMzgg
QEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJr
ZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICByZXR1cm4gW2FycmF5IGF1dG9yZWxlYXNl
XTsKIH0KIAotLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UgKilyYW5nZQorLSAo
TlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UgKilsaXZlUmFuZ2UKIHsKLSAgICBpZiAo
IXJhbmdlKQorICAgIGlmICghbGl2ZVJhbmdlKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
TlNOb3RGb3VuZCwgMCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2lu
Z09iamVjdC0+ZG9jdW1lbnQoKTsKLSAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZG9jdW1l
bnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDog
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIFNpbXBsZVJhbmdlIHJhbmdlIHsgKmxp
dmVSYW5nZSB9OworCisgICAgYXV0byYgZG9jdW1lbnQgPSByYW5nZS5zdGFydC5kb2N1bWVudCgp
OworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CisKKyAgICBhdXRvKiBy
b290RWRpdGFibGVFbGVtZW50ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBhdXRvKiBzY29wZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQg
PyByb290RWRpdGFibGVFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CisgICAg
aWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwog
CiAgICAgLy8gTW91c2UgZXZlbnRzIG1heSBjYXVzZSBUU00gdG8gYXR0ZW1wdCB0byBjcmVhdGUg
YW4gTlNSYW5nZSBmb3IgYSBwb3J0aW9uIG9mIHRoZSB2aWV3Ci0gICAgLy8gdGhhdCBpcyBub3Qg
aW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4gIFRoZXNlIGNoZWNrcyBlbnN1cmUg
d2UgZG9uJ3QgcHJvZHVjZQorICAgIC8vIHRoYXQgaXMgbm90IGluc2lkZSB0aGUgY3VycmVudCBl
ZGl0YWJsZSByZWdpb24uIFRoZXNlIGNoZWNrcyBlbnN1cmUgd2UgZG9uJ3QgcHJvZHVjZQogICAg
IC8vIHBvdGVudGlhbGx5IGludmFsaWQgZGF0YSB3aGVuIHJlc3BvbmRpbmcgdG8gc3VjaCByZXF1
ZXN0cy4KLSAgICBpZiAoJnJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCi0gICAgICAgIHJldHVy
biBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKLSAgICBpZiAoJnJhbmdlLT5lbmRDb250YWlu
ZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNj
b3BlKSkKKyAgICBpZiAoIXNjb3BlLT5jb250YWlucyhyYW5nZS5zdGFydC5jb250YWluZXIucHRy
KCkpIHx8ICFzY29wZS0+Y29udGFpbnMocmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSkpCiAgICAg
ICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIGF1dG8gdGVzdFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+
c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgIEFTU0VSVCgmdGVz
dFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlv
biA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKLSAgICB0ZXN0
UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7
Ci0gICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwotICAg
IGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0
cigpKTsKLSAgICByZXR1cm4gTlNNYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24g
LSBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQo
eyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291bnQocmFuZ2UpKTsK
IH0KIAogLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5n
ZQogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvIHJhbmdl
ID0gbWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOworICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwgbnNy
YW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNyYW5n
ZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgCisKICAgICAv
LyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBp
bnB1dCBtZXRob2RzIHRoYXQKICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29u
dGFpbmluZyB0aGUgc2VsZWN0aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ug
b2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CkBA
IC0yMzUyLDcgKzIzNTEsOSBAQCAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSluc3JhbmdlCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdP
YmplY3QtPmRvY3VtZW50KCk7CiAgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50
LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7
CiAgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5s
ZW5ndGgpOworICAgIGlmICghc2NvcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqc2NvcGUpLCAqcmFuZ2UpKTsKIH0KIAogLy8gVGhpcyBtZXRob2Qg
aXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBhIFZpc2libGVQ
b3NpdGlvbiBhbmQgY29udmVydCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQppbmRleCA4NTkyZjA3MDc4M2RmNWFkMTgzODI3OTRlNWFlOWFmOThjMGVmMmIzLi5hM2Y1
M2M4ZTFlYTM2MzRjNGE4ZTViMDkyYWE4ZjM3MjAwYmZiZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTA5OCw5ICsxMDk4LDkgQEAgc3RhdGljIHZvaWQg
QVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLAogICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlc3VsdHMuc2l6ZSgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBjb25z
dCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07Ci0gICAgICAgICAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNz
cGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsg
cmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0
QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQucmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShy
ZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOworICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmls
aXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0zNjgwLDE5ICszNjgwLDIx
IEBAIC0gKGlkKV90ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0ZXh0SW5kZXgKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBzZWxm
LmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCksIHRleHRJbmRleCwgMCk7Ci0gICAgaWYgKCF0ZXh0UmFuZ2UgfHwgIXRleHRSYW5nZS0+
Ym91bmRhcnlQb2ludHNWYWxpZCgpKQorCisgICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQg
Y2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5n
ZSh0ZXh0UmFuZ2UsIHRydWUpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwor
CisgICAgYXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
OworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGJvdW5k
YXJ5ID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgdGV4dEluZGV4KTsKKyAgICBhdXRvIGNoYXJhY3Rlck9m
ZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY3JlYXRlTGl2
ZVJhbmdlKHsgYm91bmRhcnksIGJvdW5kYXJ5IH0pLCB0cnVlKTsKKyAgICByZXR1cm4gW3NlbGYg
dGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwogfQogCiAvLyBU
aGUgUlRGIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggZjRlNTE3NTAxMWE3YWY4MDQyOWQ2MmQ2MTE5
YzA4MzkwM2NmYTNkOC4uZTEzZTMzYzhmYTZkODJiNmY4YjZhMjM4NGQ5NWE4YmY0ODE4MGE4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmRldGFjaCgp
CiAgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgPSB7IH07CiB9CiAKLVZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2Vz
KGNvbnN0IFJhbmdlJiByYW5nZSkKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkK
IHsKICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gdGV4dFJhbmdlOwogICAgIGZvciAoVGV4dEl0
ZXJhdG9yIHRleHRJdGVyYXRvcihyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0
ZXJhdG9yLmFkdmFuY2UoKSkKQEAgLTY4LDEzICs2OCwxMyBAQCBWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5n
ZSYgcgogICAgIHJldHVybiB0ZXh0UmFuZ2U7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQordm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7CiAgICAg
Zm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAg
YWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIodHlw
ZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNldCgpLCBkZXNj
cmlwdGlvbikpOwogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2Vy
KFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKK3ZvaWQgRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlKQogewogICAgIGZvciAoYXV0byB0ZXh0
UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0ZXh0
UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKHR5cGUsIHRleHRQaWVjZS0+
c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSkpOwpAQCAtMTIyLDcgKzEyMiw3
IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25QaHJhc2VXaXRo
QWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiByCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKFJhbmdlJiByYW5nZSwgY29u
c3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29u
c3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6
IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+
c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIoRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlv
blJlc3VsdCwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNldCgp
LCBTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSwgbWV0YWRhdGEpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2OWUyNTRkNWU3MmYxNTc2
YzMxZGMxN2NlZjhiNmZjNzg4OWE3ZWM0Li4zNjJkNzQ3NDM0OWU0YmNmOGIzNjM5Y2RmNDEyY2E3
OWEzYzhiMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNz
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiAKK3N0cnVjdCBTaW1wbGVSYW5nZTsKKwogY2xhc3Mg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTQ4LDE1ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgfkRvY3VtZW50TWFya2VyQ29udHJvbGxl
cigpOwogCiAgICAgdm9pZCBkZXRhY2goKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1h
cmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1h
cmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKICAgICB2
b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAgIHZvaWQgYWRkTWFya2Vy
VG9Ob2RlKE5vZGUmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6OkRhdGEmJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UmLCBib29sIGFj
dGl2ZU1hdGNoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkTWFya2Vy
KFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFp
blB0cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRl
cm5hdGl2ZXNNYXJrZXIoUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRp
b25zKTsKLSAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihSYW5nZSYsIGNvbnN0IFJl
dGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKKyAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtl
cihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICNl
bmRpZgogICAgIHZvaWQgYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIoUmFuZ2UmKTsKIApAQCAtMTA3
LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZE1hcmtlcihOb2Rl
JiwgY29uc3QgRG9jdW1lbnRNYXJrZXImKTsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gY29s
bGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4g
Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIHR5cGVkZWYgVmVj
dG9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI+IE1hcmtlckxpc3Q7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxOb2RlPiwgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxpc3Q+PiBNYXJrZXJNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDk5M2U5NTFmMWE1MGE0ZGJhOWY5M2MxZTgxZmU1ZTJi
MTdhZTdmOTguLmMyOGU3MDZiMTA1NmY2ZWE1ZTkwNDlkMDBhNDYyY2QzYTVhMTI3OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogLy8gRklYTUU6IENvbnNpZGVyIHJlbmFt
aW5nIHRoaXMgdG8gIm1ha2UiIGluc3RlYWQgb2YgImNyZWF0ZSIgc2luY2Ugd2Ugbm9ybWFsbHkg
dXNlICJjcmVhdGUiIGZvciBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBoZWFwIG9iamVjdHMuCiBQ
b3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNl
dCk7Ci1Qb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQ
b2ludCYpOworV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Qm91
bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRpb24mKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggYjRmZTJiODVkM2FmODVjYjgzMDc4ZDdhOWU1MTIx
N2YxNDA1MDM2YS4uYTQzMzhhYjIwZmM1MmYyZmYyN2RjYjViNzAyMDhhN2Y3YjMwNjI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01Myw0ICs1MywyMyBAQCBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQogICAgIHJl
dHVybiBhLnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7CiB9CiAKKy8vIEZJWE1F
OiBOb2RlOjppc0NoYXJhY3RlckRhdGEgc2hvdWxkIHVzZSBhbiBhbGdvcml0aG0gbGlrZSB0aGlz
LCBzaW5jZSBJJ20gYXNzdW1pbmcgaXQncyBmYXN0ZXIgdGhhbiB0aGUgaXNDaGFyYWN0ZXJEYXRh
Tm9kZSB2aXJ0dWFsIGNhbGwgaW4gbW9zdCBjYXNlcy4KK3N0YXRpYyBib29sIGZhc3RJc0NoYXJh
Y3RlckRhdGEoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gIW5vZGUuaXNDb250YWlu
ZXJOb2RlKCkgJiYgKG5vZGUuaXNUZXh0Tm9kZSgpIHx8IG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9k
ZSgpKTsKK30KKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIE5vZGU6Omxlbmd0aCBzaW5jZSB0
aGUgRE9NIHNwZWNpZmljYXRpb24gY2FsbHMgdGhpcyBhIG5vZGUncyBsZW5ndGguCitzdGF0aWMg
dW5zaWduZWQgbGVuZ3RoKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgaWYgKGZhc3RJc0NoYXJh
Y3RlckRhdGEobm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPihu
b2RlKS5sZW5ndGgoKTsKKyAgICByZXR1cm4gbm9kZS5jb3VudENoaWxkTm9kZXMoKTsKK30KKwor
U2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCit7
CisgICAgcmV0dXJuIHsgeyBub2RlLCAwIH0sIHsgbm9kZSwgbGVuZ3RoKG5vZGUpIH0gfTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCAxMjdmMmYxODk0NjRjMTBjNDlhNTU0
NDg2NmVhYzQ5NGQ0ZTg4YjIzLi5iZDBlMWM0ZWNkMGEwMTg0MzdmMTk5MDQ2ZTU1N2RjYTJjYzI3
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3Qg
U2ltcGxlUmFuZ2UgewogCiAgICAgYm9vbCBjb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBzdGFy
dCA9PSBlbmQ7IH0KIAotICAgIFNpbXBsZVJhbmdlKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25z
dCBCb3VuZGFyeVBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UoY29uc3Qg
Qm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5UG9pbnQmJik7CiAKICAgICAv
LyBDb252ZW5pZW5jZSBvdmVybG9hZHMgdG8gaGVscCB3aXRoIHRyYW5zaXRpb24gZnJvbSB1c2lu
ZyBhIGxvdCBvZiBsaXZlIHJhbmdlcy4KQEAgLTUxLDYgKzUxLDkgQEAgc3RydWN0IFNpbXBsZVJh
bmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7CiB9OwogCitTaW1wbGVS
YW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JUIFNpbXBs
ZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJik7CisKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKIGlubGlu
ZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cAppbmRleCBlYzIyMTZkN2FkOWYyYzM5MTA4NmU4ZWUwNzE1N2QyZWNiYTA5NWQyLi5mMWMyNGFl
OWYzNTVhOWM2ZmQ4NWZiMzczNzg0ZGIxMGI5MmQ3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTU4MCw1MiAr
NTgwLDM5IEBAIFN0cmluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrZXJEZXNjcmlw
dGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2ZVRleHQoQWx0CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5n
ZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5h
dGl2ZVR5cGUsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlw
ZXNUb0FkZCkKIHsKLSAgICBhdXRvIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24g
PSByYW5nZS5jbG9uZVJhbmdlKCk7Ci0KLSAgICBzZXRTdGFydChwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKHJhbmdlLnN0YXJ0UG9zaXRp
b24oKSkpOwotICAgIHNldEVuZChwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLnB0
cigpLCBlbmRPZlBhcmFncmFwaChyYW5nZS5lbmRQb3NpdGlvbigpKSk7Ci0KICAgICAvLyBBZnRl
ciB3ZSByZXBsYWNlIHRoZSB3b3JkIGF0IHJhbmdlIHJhbmdlV2l0aEFsdGVybmF0aXZlLCB3ZSBu
ZWVkIHRvIGFkZCBtYXJrZXJzIHRvIHRoYXQgcmFuZ2UuCi0gICAgLy8gSG93ZXZlciwgb25jZSB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZSwgdGhlIHZhbHVlIG9mIHJhbmdlV2l0aEFsdGVybmF0
aXZlIGlzIG5vdCB2YWxpZCBhbnltb3JlLgotICAgIC8vIFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQg
dGhlIHJlcGxhY2VtZW50LCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBy
YW5nZVdpdGhBbHRlcm5hdGl2ZQotICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlv
biBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZz
ZXRJblBhcmFncmFwaAotICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9i
dGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQotICAgIC8v
IHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9z
aXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgYXV0byBjb3JyZWN0aW9uU3RhcnRP
ZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwotCi0gICAgUG9zaXRpb24g
c3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9u
KCk7Ci0gICAgaWYgKCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWlu
ZXJOb2RlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNldEVuZFJlc3VsdCA9IGNvcnJl
Y3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS0+c2V0RW5kKCpzdGFydFBvc2l0aW9u
T2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCksIHN0YXJ0UG9zaXRpb25PZlJh
bmdlV2l0aEFsdGVybmF0aXZlLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7Ci0gICAg
aWYgKHNldEVuZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgIC8v
IFNvIGJlZm9yZSB3ZSBjYXJyeSBvdXQgdGhlIHJlcGxhY2VtZW50LHN0b3JlIHRoZSBzdGFydCBw
b3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24KKyAgICAvLyBvZiB0aGUgY29u
dGFpbmluZyBwYXJhZ3JhcGguCiAKICAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9m
IGF1dG9jb3JyZWN0aW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxh
Y2VtZW50IHRvb2sgcGxhY2UuCi0gICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBh
cmFncmFwaEFzUmFuZ2UucHRyKCkpOworICAgIGF1dG8gY29ycmVjdGlvblN0YXJ0UG9zaXRpb24g
PSByYW5nZS5zdGFydFBvc2l0aW9uKCk7CisgICAgYXV0byBjb3JyZWN0aW9uU3RhcnQgeyBtYWtl
Qm91bmRhcnlQb2ludChjb3JyZWN0aW9uU3RhcnRQb3NpdGlvbikgfTsKKyAgICBhdXRvIHBhcmFn
cmFwaFN0YXJ0IHsgbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChjb3JyZWN0aW9u
U3RhcnRQb3NpdGlvbikpIH07CisgICAgaWYgKCFjb3JyZWN0aW9uU3RhcnQgfHwgIXBhcmFncmFw
aFN0YXJ0KQorICAgICAgICByZXR1cm47CisgICAgYXV0byB0cmVlU2NvcGVSb290ID0gbWFrZVJl
Zihjb3JyZWN0aW9uU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSk7Cisg
ICAgQm91bmRhcnlQb2ludCB0cmVlU2NvcGVTdGFydCB7IHRyZWVTY29wZVJvb3QuZ2V0KCksIDAg
fTsKKyAgICBhdXRvIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCA9IGNoYXJhY3RlckNvdW50
KHsgKnBhcmFncmFwaFN0YXJ0LCAqY29ycmVjdGlvblN0YXJ0IH0pOworICAgIGF1dG8gcGFyYWdy
YXBoT2Zmc2V0SW5UcmVlU2NvcGUgPSBjaGFyYWN0ZXJDb3VudCh7IHRyZWVTY29wZVN0YXJ0LCAq
cGFyYWdyYXBoU3RhcnQgfSk7CiAKLSAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBj
YWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2Ug
YXJvdW5kLgotICAgIGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdl
KCk7CisgICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIG1heSBrZWVw
IGEgcmVmZXJuZWNlIHRvIHRoZSBvcmlnaW5hbCByYW5nZSBhbmQgbW9kaWZ5IGl0LgorICAgIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZS5jbG9uZVJhbmdlKCksIGFsdGVy
bmF0aXZlKS0+YXBwbHkoKTsKIAotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gcGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUo
KS5yb290Tm9kZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCksICZyb290Tm9k
ZSwgMCwgJnBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVy
KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0T2Zmc2V0KCkpLnB0
cigpKTsKLSAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VXaXRoQWx0
ZXJuYXRpdmUsIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFn
cmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1
MzE1IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFp
bmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCwgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5Q
YXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhT
dGFydENvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyh0cmVlU2NvcGVSb290KSwgcGFyYWdyYXBoT2Zmc2V0
SW5UcmVlU2NvcGUpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3Jy
ZWN0aW9uID0gbWFrZUJvdW5kYXJ5UG9pbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKKyAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwotCi0gICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnN0YXJ0KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3Ro
KCkpOwotICAgIFN0cmluZyBuZXdUZXh0ID0gcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0
KCkpOworICAgIENoYXJhY3RlckNvdW50IGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3Vu
dCA9IGFsdGVybmF0aXZlLmxlbmd0aCgpOworICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJl
c29sdmVDaGFyYWN0ZXJSYW5nZSh7IHVwZGF0ZWRQYXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3Jy
ZWN0aW9uLCAqdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uIH0sIHsgY29y
cmVjdGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hhcmFjdGVyQ291
bnQgfSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVwbGFjZW1lbnQgc3VjY2VlZGVkLgot
ICAgIGlmIChuZXdUZXh0ICE9IGFsdGVybmF0aXZlKQorICAgIGlmIChwbGFpblRleHQocmVwbGFj
ZW1lbnRSYW5nZSkgIT0gYWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCk7Ci0KKyAgICBhdXRvJiBtYXJrZXJzID0gcmVw
bGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBmb3IgKGF1dG8g
bWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCi0gICAgICAgIG1hcmtlcnMuYWRkTWFya2Vy
KCpyZXBsYWNlbWVudFJhbmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxp
ZWRBbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7CisgICAgICAg
IG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtl
clR5cGUpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCmluZGV4IGZlMDdmNTYxNjA5NzFiMzBjYjgzZTEwYjMyYzI1ZDcwNmQwMWJj
MGIuLjVmZWJmMWNiYjFjM2Y1YmM3NWExMjI2YmQ4MjYzOTg1NGI5YzhhM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0yMjMsMTkgKzIyMywx
NCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5KCkKIAogdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiB7Ci0gICAgLy8g
dXBkYXRlIGRvY3VtZW50IGxheW91dCBvbmNlIGJlZm9yZSByZW1vdmluZyBzdHlsZXMKLSAgICAv
LyBzbyB0aGF0IHdlIGF2b2lkIHRoZSBleHBlbnNlIG9mIHVwZGF0aW5nIGJlZm9yZSBlYWNoIGFu
ZCBldmVyeSBjYWxsCi0gICAgLy8gdG8gY2hlY2sgYSBjb21wdXRlZCBzdHlsZQorICAgIC8vIFVw
ZGF0ZSBkb2N1bWVudCBsYXlvdXQgb25jZSBiZWZvcmUgcmVtb3Zpbmcgc3R5bGVzIHNvIHRoYXQg
d2UgYXZvaWQgdGhlIGV4cGVuc2Ugb2YKKyAgICAvLyB1cGRhdGluZyBiZWZvcmUgZWFjaCBhbmQg
ZXZlcnkgY2FsbCB0byBjaGVjayBhIGNvbXB1dGVkIHN0eWxlLgogICAgIGRvY3VtZW50KCkudXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICAvLyBnZXQgcG9zaXRp
b25zIHdlIHdhbnQgdG8gdXNlIGZvciBhcHBseWluZyBzdHlsZQogICAgIFBvc2l0aW9uIHN0YXJ0
ID0gc3RhcnRQb3NpdGlvbigpOwogICAgIFBvc2l0aW9uIGVuZCA9IGVuZFBvc2l0aW9uKCk7Ci0g
ICAgaWYgKGNvbXBhcmVQb3NpdGlvbnMoZW5kLCBzdGFydCkgPCAwKSB7Ci0gICAgICAgIFBvc2l0
aW9uIHN3YXAgPSBzdGFydDsKLSAgICAgICAgc3RhcnQgPSBlbmQ7Ci0gICAgICAgIGVuZCA9IHN3
YXA7Ci0gICAgfQorICAgIGlmIChjb21wYXJlUG9zaXRpb25zKGVuZCwgc3RhcnQpIDwgMCkKKyAg
ICAgICAgc3RkOjpzd2FwKHN0YXJ0LCBlbmQpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVTdGFydChzdGFydCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoZW5kKTsKQEAg
LTI0NiwxNCArMjQxLDE4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHls
ZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgIC8vIFNhdmUgYW5kIHJlc3RvcmUgdGhlIHNlbGVj
dGlvbiBlbmRwb2ludHMgdXNpbmcgdGhlaXIgaW5kaWNlcyBpbiB0aGUgZWRpdGFibGUgcm9vdCwg
c2luY2UKICAgICAvLyBhZGRCbG9ja1N0eWxlSWZOZWVkZWQgbWF5IG1vdmVQYXJhZ3JhcGhzLCB3
aGljaCBjYW4gcmVtb3ZlIHRoZXNlIGVuZHBvaW50cy4KICAgICAvLyBDYWxjdWxhdGUgc3RhcnQg
YW5kIGVuZCBpbmRpY2VzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0cmVlIHRoYXQgdGhleSdyZSBp
bi4KLSAgICBhdXRvKiBzY29wZSA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc2NvcGUgPSBtYWtlUmVmUHRyKGhpZ2hlc3RFZGl0
YWJsZVJvb3QodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpKTsKICAgICBpZiAoIXNjb3Bl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgYXV0byBlbmRS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29w
ZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSk7Ci0gICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0
UmFuZ2UucHRyKCksIHRydWUpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOworICAgIEJvdW5kYXJ5UG9pbnQgc2NvcGVT
dGFydCB7ICpzY29wZSwgMCB9OworICAgIGF1dG8gc3RhcnRCb3VuZGFyeVBvaW50ID0gbWFrZUJv
dW5kYXJ5UG9pbnQodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5kQm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBv
aW50KHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5UG9pbnQgfHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc3RhcnRJbmRleCA9IGNoYXJhY3RlckNvdW50KHsg
c2NvcGVTdGFydCwgKnN0YXJ0Qm91bmRhcnlQb2ludCB9LCB0cnVlKTsKKyAgICBhdXRvIGVuZElu
ZGV4ID0gY2hhcmFjdGVyQ291bnQoeyBzY29wZVN0YXJ0LCAqZW5kQm91bmRhcnlQb2ludCB9LCB0
cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdy
YXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3Rh
cnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKSk7CkBAIC0yODQsMTIgKzI4
Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5
bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChw
YXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICB7Ci0gICAgICAgIGF1dG8g
c3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2Nv
cGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBhdXRvIGVuZFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRy
dWUpOwotICAgICAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRSYW5nZSkKLSAgICAgICAgICAgIHVw
ZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSk7Ci0gICAgfQorICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHN0YXJ0SW5kZXgsIHRydWUpKTsKKyAgICBhdXRvIGVu
ZFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5kSW5kZXgs
IHRydWUpKTsKKyAgICB1cGRhdGVTdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7
CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVh
dGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9DaGFyYWN0ZXJSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMWFlZGJmZjM3MmFiZjliN2ZkMmEyNmVm
Mzc3Y2ViY2I1ZDJmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NoYXJhY3RlclJhbmdlLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKKyNpZiBVU0UoRk9VTkRBVElPTikKK3R5cGVkZWYgc3RydWN0IF9OU1Jhbmdl
IE5TUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBDaGFyYWN0
ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OworCitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgeworICAgIENo
YXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9OworICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7
IDAgfTsKKworI2lmIFVTRShDRikKKyAgICBvcGVyYXRvciBDRlJhbmdlKCkgY29uc3Q7CisjZW5k
aWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIG9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdDsK
KyNlbmRpZgorfTsKKworI2lmIFVTRShDRikKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtl
Q2hhcmFjdGVyUmFuZ2UoQ0ZSYW5nZSk7CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQor
T3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlKTsKKyNl
bmRpZgorCisvLyBpbmxpbmVzCisKKyNpZiBVU0UoQ0YpCisKK2lubGluZSBDaGFyYWN0ZXJSYW5n
ZTo6b3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENGUmFuZ2VNYWtlKGxv
Y2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1h
a2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5nZS5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCB8fCByYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NFUlQo
cmFuZ2UubGVuZ3RoID49IDApOworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA8IDAgfHwgcmFuZ2Uu
bGVuZ3RoIDwgMCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gQ2hh
cmFjdGVyUmFuZ2UgeyBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubG9jYXRpb24p
LCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubGVuZ3RoKSB9OworfQorCisjZW5k
aWYKKworI2lmIFVTRShGT1VOREFUSU9OKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorCitpbmxpbmUg
Q2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBO
U01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKworaW5saW5lIE9wdGlvbmFsPENoYXJh
Y3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSByYW5nZSkKK3sKKyAgICBpZiAo
cmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gQ2hhcmFjdGVyUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVu
Z3RoIH07Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDdkZGIwYWIy
NTIxOTQ5MzIwNTU4ZWQ0MTE4NGI1MTBjYTk2MGVlNTYuLjE3MDhlOTExNTJhZjEyNDYwMDE3YTAy
NzU2ZWQ0NmZmODc3YWVjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCkBAIC0xNDE1LDkgKzE0MTUsOCBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQ
YXJhZ3JhcAogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGRlc3RpbmF0aW9uKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaW50IHN0YXJ0SW5kZXggPSAtMTsKLSAgICBpbnQg
ZW5kSW5kZXggPSAtMTsKLSAgICBpbnQgZGVzdGluYXRpb25JbmRleCA9IC0xOworICAgIE9wdGlv
bmFsPENoYXJhY3RlckNvdW50PiBzdGFydEluZGV4OworICAgIE9wdGlvbmFsPENoYXJhY3RlckNv
dW50PiBlbmRJbmRleDsKICAgICBib29sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCA9IGVuZGluZ1Nl
bGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKTsKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYg
IWVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE0MzIs
MTggKzE0MzEsMjIgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFw
aCkgewotICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50
KHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoU3RhcnQgJiYgc2VsZWN0aW9uU3RhcnQp
CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7ICpwYXJh
Z3JhcGhTdGFydCwgKnNlbGVjdGlvblN0YXJ0IH0sIHRydWUpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaFRvTW92
ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHNlbGVjdGlvbkVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KHZpc2libGVFbmQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcmFncmFwaFN0YXJ0ICYmIHNlbGVjdGlvbkVuZCkKKyAgICAgICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7ICpwYXJhZ3JhcGhTdGFydCwgKnNlbGVj
dGlvbkVuZCB9LCB0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAK
KwogICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBWaXNpYmxl
UG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGhUb01vdmUubmV4dChDYW5ub3RD
cm9zc0VkaXRpbmdCb3VuZGFyeSkpOwogCkBAIC0xNDc4LDkgKzE0ODEsOSBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0
YXJ0T2ZQYXJhZ3JhcAogICAgICAgICAvLyBUaGUgbW92ZWQgcGFyYWdyYXBoIHNob3VsZCBhc3N1
bWUgdGhlIGJsb2NrIHN0eWxlIG9mIHRoZSBkZXN0aW5hdGlvbi4KICAgICAgICAgc3R5bGVJbkVt
cHR5UGFyYWdyYXBoLT5yZW1vdmVCbG9ja1Byb3BlcnRpZXMoKTsKICAgICB9Ci0gICAgCisKICAg
ICAvLyBGSVhNRSAoNTA5ODkzMSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAi
V2ViVmlld0luc2VydEFjdGlvbk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBo
ZXJlLgotICAgIAorCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3Rh
cnQsIGVuZCwgRE9XTlNUUkVBTSkpOwogICAgIGZyYW1lKCkuZWRpdG9yKCkuY2xlYXJNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICBkZWxldGVTZWxlY3Rp
b24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwpAQCAtMTUwOSw4ICsxNTEyLDcgQEAgdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoIWVkaXRhYmxlUm9vdCkKICAgICAgICAgZWRp
dGFibGVSb290ID0gJmRvY3VtZW50KCk7CiAKLSAgICBhdXRvIHN0YXJ0VG9EZXN0aW5hdGlvblJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKGVkaXRh
YmxlUm9vdC5nZXQoKSksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwotICAgIGRlc3RpbmF0aW9uSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBhdXRv
IGRlc3RpbmF0aW9uSW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7IHsgKmVkaXRhYmxlUm9vdCwgMCB9
LCAqbWFrZUJvdW5kYXJ5UG9pbnQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSkgfSwgdHJ1ZSk7CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwpAQCAtMTUyNiwx
NiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlmIChzdHlsZUluRW1w
dHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkKICAgICAgICAgYXBwbHlT
dHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAgaWYgKHByZXNlcnZlU2Vs
ZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24g
JiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAgICAgICAvLyBGcmFnbWVudCBjcmVhdGlv
biAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJlZ3VsYXIKICAgICAgICAg
Ly8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2VzIHRoYXQgd2VyZSByZW5k
ZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJlIGNvbGxh
cHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAgICAgIC8v
IGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9jYXRpb24g
cGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCByZXR1
cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25J
bmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290Lmdl
dCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAgICBpZiAo
c3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9uKCksIERPV05T
VFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOworICAgICAgICBhdXRvIHN0YXJ0ID0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXgg
KyAqc3RhcnRJbmRleCwgdHJ1ZSkpOworICAgICAgICBhdXRvIGVuZCA9IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKmVuZEluZGV4
LCB0cnVlKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbih7IHN0YXJ0LCBlbmQsIERPV05T
VFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCmluZGV4IDhkNmJkZjQ3OGFiZjdhODllZTA2ZDFmMGM1YzcyOWMwZWE1
YTc0MGQuLmZkZTk4NmVjZGNjY2UzYjQzMzIyYjk0N2MwMDk1NDRhMGI0YTk0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTA4MywxNSArMTA4MywyMyBAQCBpbnQgaW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24s
IFJlZlB0cjxDb250YQogICAgICAgICAgICAgc2NvcGUgPSAmZG9jdW1lbnQ7CiAgICAgfQogCi0g
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIGZpcnN0UG9zaXRpb25Jbk5v
ZGUoc2NvcGUuZ2V0KCkpLCBwb3NpdGlvbi5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0g
ICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOwor
ICAgIGF1dG8gc3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChmaXJzdFBvc2l0aW9uSW5Ob2RlKHNj
b3BlLmdldCgpKSk7CisgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbi5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaWYgKCFzdGFydCB8fCAhZW5kKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudCh7ICpzdGFydCwgKmVu
ZCB9LCB0cnVlKTsKIH0KIAogLy8gRklYTUU6IE1lcmdlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUg
b25lIGFib3ZlLgogaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKE5vZGUmIG5vZGUsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBib29sIGZvclNlbGVjdGlvblByZXNl
cnZhdGlvbikKIHsKLSAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoJm5vZGUpLCB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7
CisgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KGZpcnN0UG9zaXRpb25Jbk5vZGUo
Jm5vZGUpKTsKKyAgICBhdXRvIGVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpZiAo
IXN0YXJ0IHx8ICFlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNoYXJhY3Rl
ckNvdW50KHsgKnN0YXJ0LCAqZW5kIH0sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CiB9CiAK
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG9mZnNldCkKQEAgLTExMDYsMTIgKzEx
MTQsMTAgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9m
ZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kKIAogVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7Ci0g
ICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
c2NvcGUsIGluZGV4LCAwLCB0cnVlKTsKLSAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRl
eC4gQ2VydGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2Ug
Ci0gICAgLy8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucy4KLSAgICBpZiAoIXJhbmdlKQorICAgIGlmICghc2NvcGUp
CiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSB9OworICAgIENoYXJhY3RlckNvdW50IGluZGV4QXNDaGFyYWN0ZXJDb3VudCA9IGluZGV4Owor
ICAgIHJldHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVy
TG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIGluZGV4QXND
aGFyYWN0ZXJDb3VudCwgdHJ1ZSkpIH07CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQzYWMwZmMwMTA5NTJiYWM0ZjEwNmUy
YmI5ZDUwYWU3NGVmN2ZhMjUuLmI3NjVlMjQzMjdhODc4NjI3MTMyMzIwMWM1NjViNThjYzMxMjg4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyMjMsMTUgKzIyMjMsMTUgQEAg
dm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKQogICAgIE5vZGUmIHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5lbmRDb250YWluZXIoKTsKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFw
ID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgCi0gICAgaW50IG1pc3Nw
ZWxsaW5nT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBtaXNzcGVsbGluZ09mZnNldCA9
IDA7CiAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwotICAgIGludCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
MDsKICAgICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKICAgICBTdHJpbmcgYmFk
R3JhbW1hclBocmFzZTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAKICAgICBib29sIGlz
U3BlbGxpbmcgPSB0cnVlOwotICAgIGludCBmb3VuZE9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVy
Q291bnQgZm91bmRPZmZzZXQgPSAwOwogICAgIFN0cmluZyBmb3VuZEl0ZW07CiAgICAgUmVmUHRy
PFJhbmdlPiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQoKSkgewpAQCAtMjMwNywxMCArMjMwNywxMCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5j
ZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8v
IHBhbmVsLCBhbmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUg
bGF0ZXIuCiAgICAgICAgIAogICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgo
KSA+IDApOwotICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAtMSAmJiBn
cmFtbWFyRGV0YWlsLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5y
YW5nZS5sZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRo
aXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBh
IHBhcmFncmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1t
YXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgYXV0byBi
YWRHcmFtbWFyUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5n
ZSwgeyBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiwg
Z3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVj
dGlvbigpOwogICAgICAgICAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZh
bmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAg
Ly8gV2UgZm91bmQgYSBtaXNzcGVsbGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1h
ci4gU2VsZWN0IHRoZSBtaXNzcGVsbGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5k
IHN0b3JlCiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBs
YXRlci4KICAgICAgICAgCi0gICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1p
c3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0g
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNwZWxsaW5nU2VhcmNoUmFuZ2UsIHsgbWlzc3BlbGxpbmdP
ZmZzZXQsIG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERP
V05TVFJFQU0pKTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24o
KTsKICAgICAgICAgCkBAIC0yNzczLDcgKzI3NzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVJh
bmdlRm9yU3BlbGxDaGVja2luZyhSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYg
cgogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwg
cmVwbGFjZW1lbnQpLT5hcHBseSgpOwogfQogCi1zdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVj
a2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBo
JiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCwgaW50IHJlc3VsdExvY2F0aW9uLCBpbnQgcmVzdWx0TGVuZ3RoKQorc3RhdGljIHZvaWQg
Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRD
aGVja2luZ1BhcmFncmFwaCYgcGFyYWdyYXBoLCBSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQsIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0aW9uLCBDaGFy
YWN0ZXJDb3VudCByZXN1bHRMZW5ndGgpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBkb3duY2FzdDxD
b250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigp
LnJvb3ROb2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZvaWQgY29ycmVj
dFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2lu
Z1BhcmEKICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVy
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFy
Oi8vMTAzMDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJh
bmdlPiBuZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVw
bGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBzcGVsbENoZWNr
aW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVz
dWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3JhcGggPSBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVj
a2luZ1JhbmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
bmV3UGFyYWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVu
Z3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGggfSk7CisgICAgYXV0byBz
cGVsbENoZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobmV3UGFyYWdyYXBoUmFu
Z2UsIHsgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpIH0pOworICAgIHBhcmFn
cmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2lu
Z1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0ZUxpdmVS
YW5nZShuZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxh
Y2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3ICsyODEwLDcgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBWZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNv
bXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBt
dWNoIGNvbnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVy
Q291bnQgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAgICAg
Ym9vbCByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKQEAgLTI4MjMsOSArMjgy
Miw5IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJl
dFBvc2l0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAg
ICAgICAgIHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9u
KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRl
ckNoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiAo
c2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4
dENoYXJBdChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKKyAgICAg
ICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJh
Z3JhcGgudGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0
IC0gMV0gPT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0
aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0
aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgo
KSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNl
bGVjdGlvbk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAw
ICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpICYmIGlzQW1i
aWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQg
LSAxXSkpCiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBAQCB2b2lkIEVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFZlY3RvcjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNv
bnN0IGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkg
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBl
IHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRM
b2NhdGlvbiA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50Owot
ICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7Ci0gICAg
ICAgIGNvbnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0
TGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlv
biA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAg
ICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hl
Y2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIFRleHRDaGVja2lu
Z1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKKyAgICAgICAgQ2hhcmFjdGVyQ291
bnQgcmVzdWx0TG9jYXRpb24gPSByZXN1bHRzW2ldLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TGVuZ3RoID0gcmVz
dWx0c1tpXS5yYW5nZS5sZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdEVuZExv
Y2F0aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIENoYXJhY3Rl
ckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGguYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50TGVu
Z3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgYm9vbCBy
ZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0
ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CisgICAgICAgIGJv
b2wgcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9m
ZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCiAgICAg
ICAgIC8vIE9ubHkgbWFyayBtaXNzcGVsbGluZyBpZjoKICAgICAgICAgLy8gMS4gQ3VycmVudCB0
ZXh0IGNoZWNraW5nIGlzbid0IGRvbmUgZm9yIGF1dG9jb3JyZWN0aW9uLCBpbiB3aGljaCBjYXNl
IHNob3VsZE1hcmtTcGVsbGluZyBpcyBmYWxzZS4KQEAgLTI4NTAsMTYgKzI4NDksMTYgQEAgdm9p
ZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiAh
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nCiAgICAgICAgICAgICAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGgu
Y2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRP
ZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAg
ICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2Nh
dGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9
IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAg
ICAgICAgICAgICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+aXNTcGVsbGluZ01h
cmtlckFsbG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50
KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIHJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3Jh
bW1hciAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdy
YXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHRUeXBlID09IFRl
eHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMo
eyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pKSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgZGV0YWlsIDogcmVzdWx0c1tpXS5kZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC5sZW5ndGggPiAwICYmIGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRp
b24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0
aW9uICsgZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAgJiYgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49
IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7
IHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVu
Z3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFy
YWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24s
IGRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFk
R3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlw
dGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjg3Nyw3ICsyODc2
LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1
bHQgZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8g
ICAgKEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRl
eHQgY2hlY2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFj
ZW1lbnQgPSByZXBsYWNlbWVudC5sZW5ndGgoKSA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91
c0JvdW5kYXJ5OwotICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5z
dWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8g
cmFuZ2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVz
dWx0TGVuZ3RoIH0pOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRv
bmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZC4KICAgICAgICAgICAgIGlm
IChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0
ICE9IHJlc3VsdEVuZExvY2F0aW9uICsgMSkKQEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8g
U2tpcCBhbGwgb3RoZXIgcmVzdWx0cyBmb3IgdGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAg
ICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9j
YXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAg
ICAgICAgICAgIHdoaWxlIChpICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFd
LnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlv
bikKICAgICAgICAgICAgICAgICAgICAgaSsrOwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9u
Q2hhbmdlZCA9IHRydWU7CkBAIC0yOTMxLDcgKzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3Rv
cjxUZQogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlv
biwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxh
Y2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
c3BvbnNlOjpBY2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkp
OwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rp
b25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0y
OTQ2LDcgKzI5NDUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3Bl
bGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAvLyBSZXN0
b3JlIHRoZSBjYXJldCBwb3NpdGlvbiBpZiB3ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwog
ICAgICAgICBleHRlbmRlZFBhcmFncmFwaC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwogICAgICAg
ICBpZiAocmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAw
ICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3Vi
cmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0KTsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFu
Z2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsK
ICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5l
bmRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rp
b25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9y
d2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwpAQCAtMzc3NywxMiArMzc3NiwxMiBAQCB2b2lk
IEVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVycyhSYW5nZSYgcmFuZ2UsIGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZwogCiAgICAgICAgIEFTU0VSVChzY2FubmVyUG9zaXRpb24gKyBy
ZWxhdGl2ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsKIAotICAgICAgICB1bnNpZ25lZCBzdWJyYW5n
ZU9mZnNldCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKLSAgICAg
ICAgdW5zaWduZWQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRp
dmVTdGFydFBvc2l0aW9uICsgMTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3VicmFuZ2VPZmZz
ZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247CisgICAgICAgIENo
YXJhY3RlckNvdW50IHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0
aXZlU3RhcnRQb3NpdGlvbiArIDE7CiAKLSAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UocmFuZ2UsIHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCk7Cisg
ICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgc3Vi
cmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVuZ3RoIH0pOwogCi0gICAgICAgIG1hcmtlZFJhbmdlcy5h
cHBlbmQoc3VicmFuZ2UucHRyKCkpOworICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKGNyZWF0
ZUxpdmVSYW5nZShzdWJyYW5nZSkpOwogICAgICAgICByYW5nZS5vd25lckRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihzdWJyYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJl
cik7CiAKICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJlbGF0aXZlRW5kUG9zaXRpb24gKyAx
OwpAQCAtMzk5MiwxNCArMzk5MSwxNCBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJh
bmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0CiAKIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpy
YW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3Vs
dCkgY29uc3QKIHsKLSAgICBpZiAoIXJlc3VsdC5sZW5ndGgpCisgICAgaWYgKCFyZXN1bHQucmFu
Z2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxSYW5nZT4g
Y29udGV4dFJhbmdlID0gY29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpOwogICAgIGlm
ICghY29udGV4dFJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LnJhbmdlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpz
Y2hlZHVsZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcAppbmRleCA4YzIzNGE0ZDkxOTQwOGRkYWE3ZDcxNTEwOGI4NGMxZmMz
MDJmNmZhLi5kOThkYTZlY2YxMjFlNDEzMGU0ZmJmOTQzMTQ0OGFiNmE1NDY0NzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0x
MzksMTYgKzEzOSwxNSBAQCB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VU
b05leHRFbmQoKQogdm9pZCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3Jh
cGhSYW5nZVZhbHVlcygpCiB7CiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9j
aGVja2luZ0VuZC5yZXNldCgpOwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNl
dCgpOwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29m
ZnNldEFzUmFuZ2UgPSBudWxscHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpyYW5nZUxlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3Vu
dCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCgmcGFyYWdyYXBoUmFuZ2UoKSk7CisgICAgcmV0
dXJuIGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKCkpOwogfQogCiBSYW5nZSYgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CkBAIC0xNTgsMjEgKzE1Nywx
OCBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0
CiAgICAgcmV0dXJuICptX3BhcmFncmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVj
a2luZ1BhcmFncmFwaDo6c3VicmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3Rl
ckNvdW50KSBjb25zdAorUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdl
KENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6
OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291
bnQpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBh
cmFncmFwaFJhbmdlKCksIHJhbmdlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitF
eGNlcHRpb25PcjxDaGFyYWN0ZXJDb3VudD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRU
byhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFwb3NpdGlvbi5j
b250YWluZXJOb2RlKCkpCisgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKKyAgICBhdXRvIGVuZCA9IG1ha2VCb3VuZGFy
eVBvaW50KHBvc2l0aW9uKTsKKyAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLQotICAgIGF1dG8gcmFuZ2UgPSBvZmZzZXRBc1Jh
bmdlKCkuY2xvbmVSYW5nZSgpOwotICAgIGF1dG8gcmVzdWx0ID0gcmFuZ2UtPnNldEVuZCgqcG9z
aXRpb24uY29udGFpbmVyTm9kZSgpLCBwb3NpdGlvbi5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJO
b2RlKCkpOwotICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHJhbmdlLnB0cigpKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQoeyAqc3RhcnQs
ICplbmQgfSk7CiB9CiAKIGJvb2wgVGV4dENoZWNraW5nUGFyYWdyYXBoOjppc0VtcHR5KCkgY29u
c3QKQEAgLTE5MCw1MSArMTg2LDUyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9m
ZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9vZmZzZXRBc1JhbmdlOwogfQogCi1j
b25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNvbnN0CitTdHJpbmdW
aWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fdGV4
dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051bGwoKSkKICAgICAgICAgbV90ZXh0ID0g
cGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAgICByZXR1cm4gbV90ZXh0OyAKIH0KIAot
aW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0CitDaGFyYWN0
ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3RhcnQoKSBjb25zdAogewog
ICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQotICAgICAgICBtX2NoZWNraW5nU3RhcnQgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKCZvZmZzZXRBc1JhbmdlKCkpOworICAgICAgICBtX2NoZWNr
aW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAgIHJldHVybiAq
bV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0VuZCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNr
aW5nRW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAgICAgIG1fY2hl
Y2tpbmdFbmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1f
Y2hlY2tpbmdSYW5nZS5wdHIoKSk7Ci0gICAgcmV0dXJuICptX2NoZWNraW5nRW5kOworICAgIHJl
dHVybiBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2hlY2tpbmdMZW5ndGgpCi0gICAgICAgIG1fY2hlY2tpbmdMZW5ndGggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKG1fY2hlY2tpbmdSYW5nZS5wdHIoKSk7CisgICAgICAgIG1fY2hlY2tp
bmdMZW5ndGggPSBjaGFyYWN0ZXJDb3VudChtX2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAq
bV9jaGVja2luZ0xlbmd0aDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmICht
X2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNS
ZXBsYWNlbWVudFN0YXJ0OwogCi0gICAgYXV0byBzdGFydE9mZnNldFJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdy
YXBoUmFuZ2UoKS5zdGFydFBvc2l0aW9uKCksIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZS0+
c3RhcnRQb3NpdGlvbigpKTsKLSAgICBtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0T2Zmc2V0UmFuZ2UucHRyKCkpOworICAgIGF1dG8g
c3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0UG9zaXRpb24o
KSk7CisgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChtX2F1dG9tYXRpY1JlcGxhY2Vt
ZW50UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgaWYgKCFzdGFydCB8fCAhZW5kKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCA9IGNoYXJh
Y3RlckNvdW50KHsgKnN0YXJ0LCAqZW5kIH0pOwogICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBs
YWNlbWVudFN0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNS
ZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAobV9h
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1Jl
cGxhY2VtZW50TGVuZ3RoOwogCi0gICAgYXV0byBlbmRPZmZzZXRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUocGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpLCBtX2F1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UtPmVu
ZFBvc2l0aW9uKCkpOwotICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldFJhbmdlLnB0cigpKSAtIGF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKTsKKyAgICBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoID0gY2hhcmFj
dGVyQ291bnQobV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICByZXR1cm4gKm1fYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CiB9CiAKQEAgLTI0NiwxMiArMjQzLDEyIEBAIFRleHRD
aGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYgY2xpZW50LCBS
YW5nZSYgcmFuZ2UpCiAKIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hlbHBlcigp
ID0gZGVmYXVsdDsKIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxS
YW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zm
c2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkK
IHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKIAogICAgIFN0cmluZyBmaXJzdE1p
c3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOworICAgIENoYXJhY3Rl
ckNvdW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAKICAgICBmb3IgKFdvcmRBd2FyZUl0ZXJh
dG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3VycmVudENodW5rT2Zmc2V0ICs9IGl0LnRl
eHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFN0cmluZ1ZpZXcgdGV4dCA9
IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjc0LDE3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9v
CiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBtaXNzcGVsbGluZ0xl
bmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGggJiYgbWlzc3BlbGxp
bmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxp
bmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSByYW5nZSBv
ZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3Bl
bGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgYXV0byBtaXNz
cGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UsIHsgY3VycmVudENo
dW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyQ291
bnQ+KG1pc3NwZWxsaW5nTGVuZ3RoKSB9KTsKIAogICAgICAgICAgICAgLy8gUmVtZW1iZXIgZmly
c3QtZW5jb3VudGVyZWQgbWlzc3BlbGxpbmcgYW5kIGl0cyBvZmZzZXQuCiAgICAgICAgICAgICBp
ZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsKICAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5n
T2Zmc2V0ID0gY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKICAgICAg
ICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxpbmdM
b2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAg
Zmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gbWlzc3BlbGxpbmdSYW5nZS5wdHIoKTsKKyAgICAgICAg
ICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UobWlzc3BlbGxp
bmdSYW5nZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFN0b3JlIG1hcmtlciBm
b3IgbWlzc3BlbGxlZCB3b3JkLgotICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5n
ZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFu
Z2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2Us
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAKICAgICAgICAgICAgIC8vIEJhaWwgb3V0IGlm
IHdlJ3JlIG1hcmtpbmcgb25seSB0aGUgZmlyc3QgbWlzc3BlbGxpbmcsIGFuZCBub3QgYWxsIGlu
c3RhbmNlcy4KICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTI5OCw3ICsyOTUsNyBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0
TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogICAgIHJldHVybiBmaXJzdE1pc3NwZWxsaW5nOwogfQog
Ci1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJz
dEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQorU3RyaW5nIFRl
eHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBj
aGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJz
dEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewogICAgIGlm
ICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKQEAgLTMxMyw4ICszMTAsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIC8v
IEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBm
aW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAg
b3V0Rmlyc3RGb3VuZE9mZnNldCA9IDA7Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9
IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0
YWlsLnJhbmdlLmxvY2F0aW9uID0gLTE7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sZW5n
dGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAgLTMy
MywzNCArMzIwLDMyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3Nw
ZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgLy8gc2luY2Ugd2Ug
d2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KICAgICBSZWY8UmFuZ2U+
IHBhcmFncmFwaFJhbmdlID0gbV9yYW5nZS0+Y2xvbmVSYW5nZSgpOwogICAgIHNldFN0YXJ0KHBh
cmFncmFwaFJhbmdlLnB0cigpLCBzdGFydE9mUGFyYWdyYXBoKG1fcmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSkpOwotICAgIGludCB0b3RhbFJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CisgICAgYXV0byB0b3RhbFJhbmdlTGVuZ3RoID0g
Y2hhcmFjdGVyQ291bnQocGFyYWdyYXBoUmFuZ2UpOwogICAgIHNldEVuZChwYXJhZ3JhcGhSYW5n
ZS5wdHIoKSwgZW5kT2ZQYXJhZ3JhcGgobV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAg
Ci0gICAgUmVmPFJhbmdlPiBvZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgIGludCByYW5nZVN0YXJ0
T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChvZmZzZXRBc1JhbmdlLnB0cigpKTsK
LSAgICBpbnQgdG90YWxMZW5ndGhQcm9jZXNzZWQgPSAwOworICAgIGF1dG8gcmFuZ2VTdGFydE9m
ZnNldCA9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5nZS0+c3RhcnRQb3Np
dGlvbigpKSB9KTsKKyAgICBDaGFyYWN0ZXJDb3VudCB0b3RhbExlbmd0aFByb2Nlc3NlZCA9IDA7
CiAgICAgCiAgICAgYm9vbCBmaXJzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgYm9vbCBsYXN0SXRl
cmF0aW9uID0gZmFsc2U7CiAgICAgd2hpbGUgKHRvdGFsTGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxS
YW5nZUxlbmd0aCkgewogICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHNlYXJjaCByYW5n
ZSBieSBwYXJhZ3JhcGhzLCBjaGVja2luZyBlYWNoIG9uZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1t
YXIuCi0gICAgICAgIGludCBjdXJyZW50TGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRPZmZzZXQg
PSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBpbnQgY3Vy
cmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIGF1dG8gY3VycmVudExlbmd0
aCA9IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKKyAgICAgICAgQ2hhcmFjdGVyQ291
bnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0T2Zmc2V0
IDogMDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRM
ZW5ndGg7CiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERl
dGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFs
IHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAv
LyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAg
ICAgICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRF
bmRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UucHRy
KCkpOworICAgICAgICAgICAgY3VycmVudEVuZE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgKm1h
a2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJv
dW5kYXJ5UG9pbnQobV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICBsYXN0
SXRlcmF0aW9uID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoY3VycmVudFN0YXJ0T2Zm
c2V0IDwgY3VycmVudEVuZE9mZnNldCkgewogICAgICAgICAgICAgU3RyaW5nIHBhcmFncmFwaFN0
cmluZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICBpZiAo
cGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAgICAgIGJvb2wgZm91
bmRHcmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nTG9jYXRpb24g
PSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOwotICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOworICAgICAgICAgICAg
ICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAg
IENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7CisgICAgICAgICAgICAg
ICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CkBAIC0z
NjMsNTcgKzM1OCw1MyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAg
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGhT
dHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBy
ZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5sb2NhdGlvbiAr
IHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
cGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5sb2Nh
dGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24g
Pj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5y
YW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0aW9uOworICAgICAg
ICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3Ry
aW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYg
cmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gPCBjdXJyZW50RW5kT2Zm
c2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5nZS5sZW5ndGggPiBjdXJy
ZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2Fu
J3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNlIHRoZXJlIG1pZ2h0
IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGluIGl0LCBidXQgd2Ug
Y2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4KICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LmRldGFpbHNbal07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRpb24gPj0gMCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sb2NhdGlvbiArIGRldGFp
bC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5sb2NhdGlvbiArIGRl
dGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0ICYmICgh
Zm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPCBncmFt
bWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRp
b24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFp
bC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zm
c2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+
cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9IGo7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlv
biArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy
YW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFu
Z2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kR3JhbW1h
ciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3Vs
dC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlTG9j
YXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dyYW1tYXJEZXRhaWxJbmRleF07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFw
aFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5n
LnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQu
aXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgp
IHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewotICAgICAg
ICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3Vy
cmVudFN0YXJ0T2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9mZnNldEFzUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50
KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UucHRyKCkpOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxs
aW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWxsaW5nT2Zmc2V0ICs9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50
KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhS
YW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVs
bGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBz
cGVsbGluZ09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZmlyc3RGb3VuZEl0ZW0gPSBtaXNz
cGVsbGVkV29yZDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2Uu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0
ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFy
YWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1t
YXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQ
aHJhc2VPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFy
UGhyYXNlT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBmaXJzdEZvdW5kSXRlbSA9IGJhZEdy
YW1tYXJQaHJhc2U7CkBAIC00MzQsMTggKzQyNSwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwg
YgogCiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFt
bWFyRGV0YWlscywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFz
ZUxvY2F0aW9uLCBDaGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5k
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3Jh
bW1hci4gRmluZCB0aGUgZWFybGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBz
ZWFyY2ggcmFuZ2UgKGlmIGFueSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1h
cmtlciBmb3IgZWFjaCBkZXRhaWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFp
bExvY2F0aW9uU29GYXIgPSAtMTsKLSAgICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9IC0xOwor
ICAgIENoYXJhY3RlckNvdW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IC0xOworICAg
IENoYXJhY3RlckNvdW50IGVhcmxpZXN0RGV0YWlsSW5kZXggPSAtMTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29u
c3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJmdyYW1tYXJEZXRhaWxzW2ldOwotICAgICAgICBB
U1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwKTsKLSAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRp
b24gPj0gMCk7CisgICAgICAgIEFTU0VSVChkZXRhaWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAg
ICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgCi0gICAg
ICAgIGludCBkZXRhaWxTdGFydE9mZnNldEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxv
Y2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgZGV0YWls
U3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGRldGFp
bC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIAogICAgICAgICAvLyBTa2lwIHRoaXMgZGV0YWls
IGlmIGl0IHN0YXJ0cyBiZWZvcmUgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZQogICAgICAgICBp
ZiAoZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA8IHN0YXJ0T2Zmc2V0KQpAQCAtNDU2LDMw
ICs0NDcsMzAgQEAgaW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFp
bChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKG1hcmtBbGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFk
R3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+
bGVuZ3RoKTsKLSAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLCBEb2N1bWVudE1h
cmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOworICAgICAgICAgICAgYXV0
byBiYWRHcmFtbWFyUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobV9yYW5nZS5nZXQoKSwg
eyBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+cmFuZ2Uu
bG9jYXRpb24sIGRldGFpbC0+cmFuZ2UubGVuZ3RoIH0pOworICAgICAgICAgICAgYmFkR3JhbW1h
clJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgZGV0YWlsIG9ubHkg
aWYgaXQncyBlYXJsaWVyIHRoYW4gb3VyIGN1cnJlbnQgY2FuZGlkYXRlICh0aGUgZGV0YWlscyBh
cmVuJ3QgaW4gYSBndWFyYW50ZWVkIG9yZGVyKQotICAgICAgICBpZiAoZWFybGllc3REZXRhaWxJ
bmRleCA8IDAgfHwgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID4gZGV0YWlsLT5sb2NhdGlv
bikgeworICAgICAgICBpZiAoZWFybGllc3REZXRhaWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRh
aWxMb2NhdGlvblNvRmFyID4gZGV0YWlsLT5yYW5nZS5sb2NhdGlvbikgewogICAgICAgICAgICAg
ZWFybGllc3REZXRhaWxJbmRleCA9IGk7Ci0gICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0
aW9uU29GYXIgPSBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICAgICAgZWFybGllc3REZXRhaWxM
b2NhdGlvblNvRmFyID0gZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgfQogICAgIH0K
ICAgICAKICAgICByZXR1cm4gZWFybGllc3REZXRhaWxJbmRleDsKIH0KIAotU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFt
bWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29u
c3QKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1h
ckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJh
c2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKIHsKICAgICAvLyBJbml0aWFsaXplIG91dCBw
YXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8g
cmV0dXJuLgotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAtMTsKLSAgICBvdXRHcmFt
bWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlv
biA9IC0xOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRH
cmFtbWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJE
ZXNjcmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgb3V0R3JhbW1hclBocmFzZU9mZnNldCA9
IDA7CiAgICAgCi0gICAgU3RyaW5nIGZpcnN0QmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJpbmdW
aWV3IGZpcnN0QmFkR3JhbW1hclBocmFzZTsKIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNoIHJh
bmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgZ3JhbW1hciBjaGVja2lu
ZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3Rl
ciBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2Yg
dGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ4NywxMSArNDc4LDExIEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0
R3JhbW1hckRldGFpbCwKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKG1fcmFu
Z2UuY29weVJlZigpKTsKICAgICAKICAgICAvLyBTdGFydCBjaGVja2luZyBmcm9tIGJlZ2lubmlu
ZyBvZiBwYXJhZ3JhcGgsIGJ1dCBza2lwIHBhc3QgcmVzdWx0cyB0aGF0IG9jY3VyIGJlZm9yZSB0
aGUgc3RhcnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZS4KLSAgICBmb3IgKGludCBzdGFy
dE9mZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgewor
ICAgIGZvciAoQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8IHBh
cmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKICAgICAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+
IGdyYW1tYXJEZXRhaWxzOwogICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uID0g
LTE7CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKLSAgICAgICAgbV9j
bGllbnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyhwYXJh
Z3JhcGgudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOworICAgICAg
ICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGgu
dGV4dCgpLnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1h
clBocmFzZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAogICAg
ICAgICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VSVChi
YWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwpAQCAtNTAyLDcgKzQ5Myw3IEBAIFN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYg
b3V0R3JhbW1hckRldGFpbCwKICAgICAgICAgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICs9IHN0
YXJ0T2Zmc2V0OwogCiAgICAgICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhl
IGVhcmxpZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChp
ZiBhbnkpLgotICAgICAgICBpbnQgYmFkR3JhbW1hckluZGV4ID0gZmluZEZpcnN0R3JhbW1hckRl
dGFpbChncmFtbWFyRGV0YWlscywgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBwYXJhZ3JhcGgu
Y2hlY2tpbmdTdGFydCgpLCBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKSwgbWFya0FsbCk7CisgICAg
ICAgIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJJbmRleCA9IGZpbmRGaXJzdEdyYW1tYXJEZXRh
aWwoZ3JhbW1hckRldGFpbHMsIGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgcGFyYWdyYXBoLmNo
ZWNraW5nU3RhcnQoKSwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCksIG1hcmtBbGwpOwogICAgICAg
ICBpZiAoYmFkR3JhbW1hckluZGV4ID49IDApIHsKICAgICAgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYmFkR3JhbW1hckluZGV4KSA8IGdyYW1tYXJEZXRhaWxzLnNpemUoKSk7
CiAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gZ3JhbW1hckRldGFpbHNbYmFkR3JhbW1h
ckluZGV4XTsKQEAgLTUxMiw3ICs1MDMsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAgICAg
ICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5zdGFuY2VzKS4KICAgICAg
ICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3JhbW1hclBocmFzZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSBiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpOwotICAgICAgICAgICAg
Zmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJpbmcoYmFkR3JhbW1h
clBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgICAgIGZp
cnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3csIHVubGVzcyB3ZSdyZSBt
YXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC01MjQs
NyArNTE1LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1h
cihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBzdGFydE9mZnNldCA9
IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGg7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgcmV0dXJuIGZp
cnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29sIFRleHRDaGVja2luZ0hl
bHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUzNSw3ICs1MjYsNyBAQCBib29sIFRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICAvLyBSZXR1cm5z
IHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVzcG9uZHMgdG8gYSBi
YWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCiAgICAgLy8gdG8gaXNT
ZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBmb3IgdGhlcmUgdG8gYmUg
c29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAogICAgIC8vIG9yIG92ZXJs
YXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkgbWF0Y2guCi0gICAgaW50
IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9m
ZnNldDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgU3RyaW5n
IGJhZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdy
YW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0OCwxNSArNTM5LDE1IEBAIGJvb2wgVGV4
dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAogICAgIGlmIChncmFtbWFy
UGhyYXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGdy
YW1tYXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubGVu
Z3RoID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7
CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CiAKICAgICAvLyBC
YWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1tYXRpY2FsIHdvcmQp
IGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1hckRldGFpbC5sb2Nh
dGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2Uu
bG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1dCBlbmQgb2YgYmFk
IGdyYW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQotICAgIGlmIChncmFtbWFy
RGV0YWlsLmxlbmd0aCAhPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1fcmFuZ2UucHRyKCkp
KQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCAhPSBjaGFyYWN0ZXJDb3VudCht
X3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFVwZGF0ZSB0aGUg
c3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVycm9yICh3aGV0aGVyIG9yIG5v
dCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KQEAgLTYwMCw4ICs1OTEsOCBAQCBW
ZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JV
bmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVu
dC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRz
LCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykg
ewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcg
JiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0
Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFw
aC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJl
c3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFn
cmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBBU1NFUlQo
bWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9jbGllbnQudGV4dENoZWNr
ZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygpLCBjdXJyZW50
U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1fY2xpZW50LnVwZGF0ZVNwZWxsaW5n
VUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQpOwpAQCAtNjE0LDEyICs2MDUsMTIg
QEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxl
ZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAg
ICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50eXBl
ID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5n
ZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKSB7CisgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5p
c0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdlKSkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewotICAgICAgICAgICAgICAgIEFTU0VS
VChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sb2Nh
dGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VN
YXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3Jh
cGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICBp
ZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsgcmVzdWx0LnJhbmdlLmxvY2F0aW9u
ICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pKSB7CisgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHQo
KS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKS50
b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5s
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBkZXRhaWwu
Z3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzZXMuYXBwZW5kKGd1ZXNzKTsK
QEAgLTYzNyw3ICs2MjgsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1pc3Nw
ZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZwogewogICAgIC8vIFVz
ZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlzc3BlbGxpbmcuIElnbm9yZSB0
aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIiOwogICAgIC8vIGFsbCB3ZSBu
ZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0gICAgaW50IGlnbm9yZWRPZmZzZXQ7
CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RNaXNzcGVs
bGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCkBA
IC02NDcsNyArNjM4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxCYWRHcmFt
bWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIG9maW5kRmlyc3RCYWRH
cmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgIm91dCBwYXJhbWV0ZXJzIjsgYWxs
IHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgogICAgIEdyYW1t
YXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGlnbm9yZWRPZmZzZXQ7Cisg
ICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RCYWRHcmFtbWFy
KGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0LCB0cnVlKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5kZXggM2YzOWU4
NjhkOTk0MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uOTQ2ZDdlOGUzMDgxY2I3MGU1MmIz
ZDhlMzdjYjNiYTljNzFiNDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5oCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRl
eHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJh
bmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50IHJhbmdlTGVu
Z3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0
LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0
VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCByYW5nZUxlbmd0
aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0
OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlv
biYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1ZpZXcuCi0gICAg
Y29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVt
b3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQoKSBkaXJlY3Rs
eS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsg
fQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0g
VUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0g
ICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0
OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tpbmdTdGFydCgp
IGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0xl
bmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQor
ICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nTGVu
Z3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dC5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgp
KTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hpY2ggd2UgYWxsb3cgYXV0
b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5n
ZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoLCB0
aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4KLSAgICBpbnQgYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNraW5nU3RhcnQo
KSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXNDaGVja2luZ1Jh
bmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9j
YXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49IGNoZWNraW5n
U3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5nUmFuZ2VDb3Zl
cnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbiA8IGNo
ZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KKyAg
ICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7
IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2UubGVuZ3Ro
ID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRC
eShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPD0g
Y2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoID49IGNoZWNr
aW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VD
b3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9u
IDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+IGNoZWNr
aW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFu
Z2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0
QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVj
a2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xlbmd0aDsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwotICAg
IG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAg
IG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdTdGFydDsKKyAgICBt
dXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11
dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFy
dDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsKQEAgLTg4LDEx
ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYs
IFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3RyaW5nIGZpbmRG
aXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxs
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmluZyBmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0
SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRH
cmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVy
Q291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdl
PiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENo
YXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFt
bWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYg
Zmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBT
dHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
LCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAg
U3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFp
bCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAgIGJvb2wgaXNVbmdyYW1t
YXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsKICNpZiBVU0UoR1JBTU1B
Ul9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8
R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgQ2hhcmFjdGVy
Q291bnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4m
LCBDaGFyYWN0ZXJDb3VudCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIENoYXJhY3RlckNvdW50
IHN0YXJ0T2Zmc2V0LCBDaGFyYWN0ZXJDb3VudCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29u
c3Q7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApp
bmRleCBlODQ0MTJiMjc2ODM1NjZmMzAzYTZkMWI5MmU2N2YzMjEyZDhkMmZkLi4zNWNhYTg4NjRk
MzhlYmFiOTQwYTgzNWVlOWQ4MDQ5ZTg1YjNmMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCkBAIC0yMzQzLDIyICsyMzQzLDE0IEBAIHNpemVfdCBTZWFyY2hCdWZm
ZXI6Omxlbmd0aCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLWludCBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24pCitDaGFyYWN0ZXJDb3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cykKIHsKLSAgICBpZiAoIXJhbmdlKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4
dEl0ZXJhdG9yIGl0KCpyYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJh
dG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKQorICAgIENoYXJh
Y3RlckNvdW50IGxlbmd0aCA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIHNw
YWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7ICFp
dC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0KCkubGVu
Z3RoKCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6
OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNo
YXJhY3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0
b3IoZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5n
ZS5vd25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwg
Y2hhcmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNl
ZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9y
LmF0RW5kKCkpOwpAQCAtMjM2Nyw4NSArMjM1OSw2MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJ
bnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4g
bm9kZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQog
Ci1SZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
Q29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgs
IGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorQm91bmRhcnlQb2ludCByZXNvbHZlQ2hh
cmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJDb3VudCBs
b2NhdGlvbiwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzKQogewotICAgIFJlZjxSYW5n
ZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwotCi0gICAg
aW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5kID0gcmFuZ2VMb2NhdGlv
biArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5kID0gZmFsc2U7CisgICAg
cmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzY29wZSwgeyBsb2NhdGlvbiwgMCB9LCBzcGFj
ZXNGb3JSZXBsYWNlZEVsZW1lbnRzKS5zdGFydDsKK30KIAotICAgIFJlZjxSYW5nZT4gdGV4dFJ1
blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CitTaW1wbGVSYW5nZSByZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5n
ZSwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzKQoreworICAgIGF1dG8gcmVzdWx0UmFu
Z2UgPSByYW5nZS5sb2NhdGlvbiA/IFNpbXBsZVJhbmdlIHsgc2NvcGUuZW5kLCBzY29wZS5lbmQg
fSA6IHNjb3BlOwogCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0
aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwotICAgIAotICAg
IC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3Jr
YXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4u
Ci0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7
Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3Rh
cnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiByZXN1bHRSYW5nZTsKLSAgICB9Cisg
ICAgQ2hhcmFjdGVyQ291bnQgcmFuZ2VFbmQgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0
aDsKIAorICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uID0gMDsKKyAgICBUZXh0SXRlcmF0b3Ig
aXQoc2NvcGUsIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPyBUZXh0SXRlcmF0b3JFbWl0c0No
YXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CiAgICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAg
ICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdl
ID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpOworICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQucmFu
Z2UoKTsKKworICAgICAgICBhdXRvIGZvdW5kID0gWyZdIChDaGFyYWN0ZXJDb3VudCB0YXJnZXRM
b2NhdGlvbikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0TG9jYXRpb24gPj0g
bG9jYXRpb24gJiYgdGFyZ2V0TG9jYXRpb24gPD0gbG9jYXRpb24gKyBsZW5ndGg7CisgICAgICAg
IH07CiAKLSAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gcmFuZ2VMb2NhdGlvbiA+PSBkb2NUZXh0
UG9zaXRpb24gJiYgcmFuZ2VMb2NhdGlvbiA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7Ci0g
ICAgICAgIGJvb2wgZm91bmRFbmQgPSByYW5nZUVuZCA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFu
Z2VFbmQgPD0gZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOworICAgICAgICBib29sIGZvdW5kU3Rh
cnQgPSBmb3VuZChyYW5nZS5sb2NhdGlvbik7CisgICAgICAgIGJvb2wgZm91bmRFbmQgPSBmb3Vu
ZChyYW5nZUVuZCk7CiAKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBh
IHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcKLSAgICAgICAgICAgIC8vIHBvc2l0aW9uIGZvciBl
bWl0dGVkICdcbidzIG9yIGlmIHRoZSByZW5kZXJlciBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEg
cmVwbGFjZWQgZWxlbWVudC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fy
b3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRoZSB3
cm9uZyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhl
IGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCiAgICAgICAgICAgICBpZiAobGVu
Z3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVt
ZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBp
dC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVu
ZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0
UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24g
cnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9k
ZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5l
bmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRp
b24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQo
KS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5n
ZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91
bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIo
KS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2Nh
dGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0
U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRD
b250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91
bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBv
aW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFp
bmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9u
IDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uu
c3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0
IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRM
b2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5l
bmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAgICAgICAgICBy
ZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYg
KGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVu
ZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5k
KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5z
dGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5n
ZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRl
eHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9j
VGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJv
dW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3Ro
OwogICAgIH0KICAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4
dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJh
bmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5l
bmRPZmZzZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCkBAIC0yNDU2
LDIxICsyNDI1LDE2IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlCiAKICAgICAvLyBUaGUgY3Jp
dGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCB3aXRoIHJhbmdl
cyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhl
IHNlbGVjdGlvbiByb290LiBUaGlzIGlzIGRvbmUKLSAgICAvLyBiZWNhdXNlIG9mIHRleHQgZmll
bGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdAotICAgIC8vIGRpcmVj
dGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIGVuc3VyZSB0aGF0IHRoZSByYW5nZSBkb2VzIG5v
dCBjcm9zcyBhCi0gICAgLy8gYm91bmRhcnkgb2Ygb25lIG9mIHRob3NlLgorICAgIC8vIGJlY2F1
c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90
IGRpcmVjdGx5CisgICAgLy8gaW4gdGhlIGRvY3VtZW50IERPTSwgc28gZW5zdXJlIHRoYXQgdGhl
IHJhbmdlIGRvZXMgbm90IGNyb3NzIGEgYm91bmRhcnkKKyAgICAvLyBvZiBvbmUgb2YgdGhvc2Uu
CiAgICAgaWYgKCZyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkuaXNEZXNjZW5kYW50T2Yoc2NvcGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5l
bmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFJlZjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9j
dW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpOwotICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNj
b3BlKTsKLSAgICBsb2NhdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LnB0cigpKTsKLQotICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwg
cmFuZ2UtPmVuZE9mZnNldCgpKTsKLSAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSA9PSBzY29wZSk7Ci0gICAgbGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0
ZXN0UmFuZ2UucHRyKCkpIC0gbG9jYXRpb247CisgICAgbG9jYXRpb24gPSBjaGFyYWN0ZXJDb3Vu
dCh7IHsgKnNjb3BlLCAwIH0sIHsgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFy
dE9mZnNldCgpIH0gfSk7CisgICAgbGVuZ3RoID0gY2hhcmFjdGVyQ291bnQoeyB7ICpzY29wZSwg
MCB9LCB7IHJhbmdlLT5lbmRDb250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpIH0gfSkgLSBs
b2NhdGlvbjsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKaW5kZXggMTU3ZjFkYTFkMGU2Yzk1M2Q5ZGVkYzRlZmFjZTEzZTk4MGUzMTM0ZS4u
MTEwNmEwYTk0ZjBjZWI2YWFkNGQwY2VlN2U4OGNlY2Q2YmYyMGRmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5o
IgpAQCAtMzYsNyArMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSYW5nZTsKIGNs
YXNzIFJlbmRlclRleHRGcmFnbWVudDsKIAorLy8gRklYTUU6IERlbGV0ZSB0aGlzIG92ZXJsb2Fk
IGFmdGVyIG1vdmluZyBhbGwgdGhlIGNhbGxlcnMgdG8gdGhlIFNpbXBsZVJhbmdlIHZlcnNpb24u
CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5
U3RyaW5nID0gZmFsc2UpOworCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0
IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYs
IFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29s
IGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRl
eHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFuZ2Um
KTsKQEAgLTEwMCwxMCArMTAzLDggQEAgcHVibGljOgogICAgIGNvbnN0IFRleHRJdGVyYXRvckNv
cHlhYmxlVGV4dCYgY29weWFibGVUZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1
cm4gbV9jb3B5YWJsZVRleHQ7IH0KICAgICB2b2lkIGFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIo
U3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QgeyBjb3B5YWJsZVRleHQoKS5hcHBlbmRUb1N0
cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQg
cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMg
PSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0
aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hhcmFjdGVy
UmFuZ2UsIGFuZCBDaGFyYWN0ZXJDb3VudCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFzcyB0byB0
aGUgdG9wIGxldmVsIChib3R0b20gb2YgdGhpcyBmaWxlKS4KICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29u
c3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBp
bnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdCgpOwpAQCAtMjg3LDQgKzI4OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rp
ZExvb2tBaGVhZCB7IHRydWUgfTsKIH07CiAKK1dFQkNPUkVfRVhQT1JUIENoYXJhY3RlckNvdW50
IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCBzcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZl
Q2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgYm9v
bCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgU2lt
cGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFj
dGVyUmFuZ2UsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCmluZGV4IDZiOTBmZmRiZTU0YWVjZTg2MzM1MTMxMmEyNWIxMmFlOGQyY2UxYTAuLjk3
MzAyY2Y1MmE0MzllMDdhZGYwYzhlYzliOGExZGNlYmFjYzExZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTgxOSw2ICs4MTksMTEgQEAgYm9vbCBWaXNpYmxlUG9zaXRpb246OmVxdWFscyhj
b25zdCBWaXNpYmxlUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX2FmZmluaXR5
ID09IG90aGVyLm1fYWZmaW5pdHkgJiYgbV9kZWVwUG9zaXRpb24uZXF1YWxzKG90aGVyLm1fZGVl
cFBvc2l0aW9uKTsKIH0KIAorT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9p
bnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICByZXR1cm4gbWFrZUJv
dW5kYXJ5UG9pbnQocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Cit9CisKIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBFQWZmaW5pdHkgYWZmaW5pdHkpCiB7CiAg
ICAgc3dpdGNoIChhZmZpbml0eSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmgKaW5kZXggNDg1NjY4MjRlZDczZmRhY2QyNTcwOGRlMzE5MzE0ZTYxOTJjMDJmMC4uZjg0
YmNkZmQ3MmY1YmM0NTc2MzNkYTQ4MzI3MjFlNTI3N2EyNDg1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5jbHVkZSAi
RWRpdGluZ0JvdW5kYXJ5LmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKIAotbmFtZXNwYWNlIFdU
RiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJhbmdlOwpAQCAtNDksOSArNDUsNiBAQCBjbGFzcyBSYW5nZTsKIC8vIHBvc2l0aW9uIGlzIG5v
dCBhdCBhIGxpbmUgYnJlYWsuCiAjZGVmaW5lIFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFIFVQU1RS
RUFNCiAKLWNsYXNzIElubGluZUJveDsKLWNsYXNzIE5vZGU7Ci0KIGNsYXNzIFZpc2libGVQb3Np
dGlvbiB7CiBwdWJsaWM6CiAgICAgLy8gTk9URTogVVBTVFJFQU0gYWZmaW5pdHkgd2lsbCBiZSB1
c2VkIG9ubHkgaWYgcG9zIGlzIGF0IGVuZCBvZiBhIHdyYXBwZWQgbGluZSwKQEAgLTg1LDIxICs3
OCwxNiBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBoYW5kbGUgW3Rh
YmxlLCAwXSBjb3JyZWN0bHkuCiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVlcFBvc2l0aW9uLmlzTm90TnVsbCgpID8gbV9kZWVwUG9zaXRpb24u
ZGVwcmVjYXRlZE5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIDogMDsgfQotICAgIAotICAg
IHZvaWQgZ2V0SW5saW5lQm94QW5kT2Zmc2V0KElubGluZUJveComIGlubGluZUJveCwgaW50JiBj
YXJldE9mZnNldCkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fZGVlcFBvc2l0aW9uLmdldElubGlu
ZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBpbmxpbmVCb3gsIGNhcmV0T2Zmc2V0KTsKLSAgICB9
CiAKLSAgICB2b2lkIGdldElubGluZUJveEFuZE9mZnNldChUZXh0RGlyZWN0aW9uIHByaW1hcnlE
aXJlY3Rpb24sIElubGluZUJveComIGlubGluZUJveCwgaW50JiBjYXJldE9mZnNldCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIG1fZGVlcFBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChtX2Fm
ZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uLCBpbmxpbmVCb3gsIGNhcmV0T2Zmc2V0KTsKLSAgICB9
CisgICAgdm9pZCBnZXRJbmxpbmVCb3hBbmRPZmZzZXQoSW5saW5lQm94KiYsIGludCYgY2FyZXRP
ZmZzZXQpIGNvbnN0OworICAgIHZvaWQgZ2V0SW5saW5lQm94QW5kT2Zmc2V0KFRleHREaXJlY3Rp
b24gcHJpbWFyeURpcmVjdGlvbiwgSW5saW5lQm94KiYsIGludCYgY2FyZXRPZmZzZXQpIGNvbnN0
OwogCiAgICAgLy8gUmVjdCBpcyBsb2NhbCB0byB0aGUgcmV0dXJuZWQgcmVuZGVyZXIKICAgICBX
RUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KFJlbmRlck9iamVjdComKSBj
b25zdDsKKwogICAgIC8vIEJvdW5kcyBvZiAocG9zc2libHkgdHJhbnNmb3JtZWQpIGNhcmV0IGlu
IGFic29sdXRlIGNvb3JkcwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYWJzb2x1dGVDYXJl
dEJvdW5kcyhib29sKiBpbnNpZGVGaXhlZCA9IG51bGxwdHIpIGNvbnN0OworCiAgICAgLy8gQWJz
IHgveSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQgaWdub3JpbmcgdHJhbnNmb3Jtcy4KICAgICAvLyBG
SVhNRTogbmF2aWdhdGlvbiB3aXRoIHRyYW5zZm9ybXMgc2hvdWxkIGJlIHNtYXJ0ZXIuCiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2
aWdhdGlvbigpIGNvbnN0OwpAQCAtMTA3LDcgKzk1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0UmVjdCBhYnNvbHV0ZVNlbGVjdGlvbkJvdW5kc0ZvckxpbmUoKSBjb25zdDsK
IAogICAgIC8vIFRoaXMgaXMgYSB0ZW50YXRpdmUgZW5oYW5jZW1lbnQgb2Ygb3BlcmF0b3I9PSB0
byBhY2NvdW50IGZvciBhZmZpbml0eS4KLSAgICAvLyBGSVhNRTogQ29tYmluZSB0aGlzIGZ1bmN0
aW9uIHdpdGggb3BlcmF0b3I9PQorICAgIC8vIEZJWE1FOiBDb21iaW5lIHRoaXMgZnVuY3Rpb24g
d2l0aCBvcGVyYXRvcj09LgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0OwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpAQCAtMTE1LDcgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwogI2Vu
ZGlmCi0gICAgCisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0KGNvbnN0IFBvc2l0aW9uJiwgRUFm
ZmluaXR5KTsKICAgICBQb3NpdGlvbiBjYW5vbmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYp
OwpAQCAtMTI3LDIzICsxMTUsNTAgQEAgcHJpdmF0ZToKICAgICBFQWZmaW5pdHkgbV9hZmZpbml0
eTsKIH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3I8KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Citib29sIG9wZXJhdG9y
PD0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Citib29s
IG9wZXJhdG9yPj0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7CisKK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFy
eVBvaW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworCitXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mKTsKK2Jvb2wgc2V0U3RhcnQoUmFuZ2UqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsK
K2Jvb2wgc2V0RW5kKFJhbmdlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CitWaXNpYmxlUG9z
aXRpb24gc3RhcnRWaXNpYmxlUG9zaXRpb24oY29uc3QgUmFuZ2UqLCBFQWZmaW5pdHkpOworVmlz
aWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3NpdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSk7
CisKK1dFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CisKK2Jvb2wgaXNGaXJzdFZpc2libGVQb3NpdGlvbkluTm9k
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBOb2RlKik7Citib29sIGlzTGFzdFZpc2li
bGVQb3NpdGlvbkluTm9kZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBOb2RlKik7CisK
K2Jvb2wgYXJlVmlzaWJsZVBvc2l0aW9uc0luU2FtZVRyZWVTY29wZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKworV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEVBZmZpbml0eSk7CitXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJik7CisKKy8vIGlubGluZXMKKwogLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGlnbm9y
ZSBhZmZpbml0eS4KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7CiAgICAgcmV0dXJuIGEuZGVlcEVxdWl2
YWxlbnQoKSA9PSBiLmRlZXBFcXVpdmFsZW50KCk7CiB9Ci0gCisKIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIp
CiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KLSAgICAKKwogaW5saW5lIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQog
ewogICAgIHJldHVybiBhLmRlZXBFcXVpdmFsZW50KCkgPCBiLmRlZXBFcXVpdmFsZW50KCk7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYikgCitpbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7CiAgICAgcmV0dXJuIGEu
ZGVlcEVxdWl2YWxlbnQoKSA+IGIuZGVlcEVxdWl2YWxlbnQoKTsKIH0KQEAgLTE1MywyNiArMTY4
LDIwIEBAIGlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuIGEuZGVlcEVxdWl2YWxlbnQoKSA8
PSBiLmRlZXBFcXVpdmFsZW50KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpIAoraW5saW5lIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgYikKIHsKICAgICByZXR1cm4gYS5kZWVwRXF1aXZhbGVudCgpID49IGIuZGVlcEVxdWl2
YWxlbnQoKTsKLX0gICAgCi0KLVdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gbWFrZVJhbmdl
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBz
ZXRTdGFydChSYW5nZSosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBzZXRFbmQoUmFu
Z2UqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLVZpc2libGVQb3NpdGlvbiBzdGFydFZpc2li
bGVQb3NpdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSk7Ci1WaXNpYmxlUG9zaXRpb24gZW5k
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFJhbmdlKiwgRUFmZmluaXR5KTsKLQotV0VCQ09SRV9FWFBP
UlQgRWxlbWVudCogZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKLQotYm9vbCBpc0ZpcnN0VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IE5vZGUqKTsKLWJvb2wgaXNMYXN0VmlzaWJsZVBvc2l0aW9uSW5Ob2Rl
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IE5vZGUqKTsKK30KIAotYm9vbCBhcmVWaXNp
YmxlUG9zaXRpb25zSW5TYW1lVHJlZVNjb3BlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpOworaW5saW5lIHZvaWQgVmlzaWJsZVBvc2l0aW9uOjpnZXRJbmxp
bmVCb3hBbmRPZmZzZXQoSW5saW5lQm94KiYgaW5saW5lQm94LCBpbnQmIGNhcmV0T2Zmc2V0KSBj
b25zdAoreworICAgIG1fZGVlcFBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmlu
aXR5LCBpbmxpbmVCb3gsIGNhcmV0T2Zmc2V0KTsKK30KIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEVBZmZpbml0eSk7Ci1XRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJik7CitpbmxpbmUgdm9pZCBWaXNpYmxlUG9zaXRpb246OmdldElubGluZUJveEFuZE9m
ZnNldChUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJlY3Rpb24sIElubGluZUJveComIGlubGluZUJv
eCwgaW50JiBjYXJldE9mZnNldCkgY29uc3QKK3sKKyAgICBtX2RlZXBQb3NpdGlvbi5nZXRJbmxp
bmVCb3hBbmRPZmZzZXQobV9hZmZpbml0eSwgcHJpbWFyeURpcmVjdGlvbiwgaW5saW5lQm94LCBj
YXJldE9mZnNldCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDkxMDlhYjk1NDkwNjlmMzYwNGYwOTg2YWM5
OGU4Yjk5NDQ5YTE0YWUuLmFmZjM2ZDQ4MTg4NzI2ZjI4YjBiYzM3OTk5MTlhZTdjMGVmMmU3MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTE5MDEsMjAgKzE5
MDEsMTMgQEAgUmVmUHRyPFJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW4KICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0
ZShwcmV2Qm91bmRhcnkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVu
dCgpLCBwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSk7CiB9CiAKLWludCBkaXN0YW5jZUJldHdl
ZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBvdGhlcikKK3B0cmRpZmZfdCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7Ci0gICAgaWYgKHZw
LmlzTnVsbCgpIHx8IG90aGVyLmlzTnVsbCgpKQorICAgIGlmIChhLmlzTnVsbCgpIHx8IGIuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgYm9vbCB0aGlzSXNTdGFydCA9ICh2cCA8
IG90aGVyKTsKLQotICAgIC8vIFN0YXJ0IG11c3QgY29tZSBmaXJzdCBpbiB0aGUgUmFuZ2UgY29u
c3RydWN0b3IuCi0gICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IHZwIDogb3RoZXIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IG90aGVyIDogdnAp
KTsKLSAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0
cigpKTsKLQotICAgIHJldHVybiAodGhpc0lzU3RhcnQgPyAtZGlzdGFuY2UgOiBkaXN0YW5jZSk7
CisgICAgcmV0dXJuIGEgPCBiCisgICAgICAgID8gLWNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3Vu
ZGFyeVBvaW50KGEpLCAqbWFrZUJvdW5kYXJ5UG9pbnQoYikgfSkKKyAgICAgICAgOiBjaGFyYWN0
ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludChiKSwgKm1ha2VCb3VuZGFyeVBvaW50KGEpIH0p
OwogfQogCiB2b2lkIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uLCBVQ2hhcjMyJiBvbmVBZnRlciwgVUNoYXIzMiYgb25lQmVmb3JlLCBVQ2hh
cjMyJiB0d29CZWZvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAppbmRleCA2
NzE3ZWIxMWRkZGJkODY4ZTQ0MTRjMzk4MDMzNTJhMDMxNmFmZTNlLi5jZThjNTBmNTc5MzYwZTAx
Y2ZkYzg1MmZlYTU4MWY5ZTQyNWE0ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcgogV0VCQ09S
RV9FWFBPUlQgYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24pOwogV0VCQ09SRV9F
WFBPUlQgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0
aW9uKTsKIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlv
bnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CitXRUJD
T1JFX0VYUE9SVCBwdHJkaWZmX3QgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7
CiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVUNo
YXIzMiYgb25lQWZ0ZXIsIFVDaGFyMzImIG9uZUJlZm9yZSwgVUNoYXIzMiYgdHdvQmVmb3JlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCAx
MDNlNTUzYjIzN2E5MTk3YmMzOGQyNDIxNjAyNDZjNmQyMzIyNjM1Li5lMmY4ZjU3YjM5NTUxNzdi
Y2RlZjczYWE0MmI3Mzc4YzhhYzkzMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC03MSwxNSArNzEsMTggQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIHN0YXRpYyBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVt
QXRQb3NpdGlvbldpdGhSYW5nZShWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24sIFJlZlB0cjxSYW5n
ZT4gY29udGV4dFJhbmdlLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQ
dHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSkKIHsKICAgICBTdHJpbmcgZnVsbFBsYWluVGV4
dFN0cmluZyA9IHBsYWluVGV4dChjb250ZXh0UmFuZ2UuZ2V0KCkpOwotICAgIGludCBoaXRMb2Nh
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobWFrZVJhbmdlKGNvbnRleHRSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbikuZ2V0KCkpOworICAgIGF1dG8gc3RhcnQgPSBjb250
ZXh0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKKyAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgcG9z
aXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQ0ZJbmRleCBoaXRMb2Nh
dGlvbiA9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0KSwgKm1ha2VC
b3VuZGFyeVBvaW50KHBvc2l0aW9uKSB9KTsKIAotICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+
IHNjYW5uZXIgPSBhZG9wdENGKEREU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQs
IDAsIG51bGxwdHIpKTsKLSAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+IHNjYW5RdWVyeSA9
IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZ1bGxQbGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MCwgZnVsbFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkpKTsKKyAgICBhdXRvIHNjYW5uZXIgPSBh
ZG9wdENGKEREU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51bGxwdHIp
KTsKKyAgICBhdXRvIHNjYW5RdWVyeSA9IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZ1bGxQbGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgZnVsbFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkp
KTsKIAogICAgIGlmICghRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5RdWVy
eS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHJlc3VsdHMgPSBhZG9wdENGKEREU2Nhbm5lckNv
cHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgRERTY2FubmVyQ29weVJlc3VsdHNP
cHRpb25zTm9PdmVybGFwKSk7CisgICAgYXV0byByZXN1bHRzID0gYWRvcHRDRihERFNjYW5uZXJD
b3B5UmVzdWx0c1dpdGhPcHRpb25zKHNjYW5uZXIuZ2V0KCksIEREU2Nhbm5lckNvcHlSZXN1bHRz
T3B0aW9uc05vT3ZlcmxhcCkpOwogCiAgICAgLy8gRmluZCB0aGUgRERSZXN1bHRSZWYgdGhhdCBp
bnRlcnNlY3RzIHRoZSBoaXRUZXN0UmVzdWx0J3MgVmlzaWJsZVBvc2l0aW9uLgogICAgIEREUmVz
dWx0UmVmIG1haW5SZXN1bHQgPSBudWxscHRyOwpAQCAtOTQsMTMgKzk3LDEzIEBAIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShW
aXNpYmxlUG9zaXRpb24KICAgICAgICAgQ0ZSYW5nZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IERE
UmVzdWx0R2V0UmFuZ2UocmVzdWx0KTsKICAgICAgICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3Vs
dFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uICYmIChoaXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5D
b250ZXh0LmxvY2F0aW9uKSA8IHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCkgewogICAgICAg
ICAgICAgbWFpblJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNvbnRl
eHQubG9jYXRpb24sIHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICBt
YWluUmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpj
b250ZXh0UmFuZ2UsICptYWtlQ2hhcmFjdGVyUmFuZ2UocmVzdWx0UmFuZ2VJbkNvbnRleHQpKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghbWFpblJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0ID0gYWRvcHROUyhbYWxs
b2NEREFjdGlvbkNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbYWN0aW9uQ29udGV4dCBz
ZXRBbGxSZXN1bHRzOkBbIChfX2JyaWRnZSBpZCltYWluUmVzdWx0IF1dOwpAQCAtMTEyLDkgKzEx
NSw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXRQb3Np
dGlvbldpdGhSYW5nZShWaXNpYmxlUG9zaXRpb24KICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IG1haW5SZXN1bHRSYW5nZS0+b3duZXJEb2N1bWVudCgpLnZpZXcoKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHF1YWQgOiBxdWFkcykKICAgICAgICAgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gudW5p
dGUoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3go
KSkpOwotICAgIAorCiAgICAgZGV0ZWN0ZWREYXRhUmFuZ2UgPSBtYWluUmVzdWx0UmFuZ2U7Ci0g
ICAgCisKICAgICByZXR1cm4gYWN0aW9uQ29udGV4dDsKIH0KIApAQCAtNTA1LDkgKzUwOCwxMiBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFu
Z2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4g
ZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0gY3Jl
YXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4IGZyYWdtZW50
SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlmIChmcmFnbWVu
dEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAgICBmcmFnbWVu
dFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJhbmdlLCBxdWVy
eVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5z
dGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFnbWVudEluZGV4
ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENoYXJhY3RlclJh
bmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxvY2F0aW9uID0g
cXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxlbmd0
aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0OworICAg
ICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpCiAgICAgICAg
ICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAgICAgICAgICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25h
cnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29r
dXAubW0KaW5kZXggODc5NzIyMDI4NDY4ZjAzZTAyZWFlNTliNTVhMjlhMjNkZWNlOTJlZS4uNmJj
NWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4OGE0ZTEyNjllOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMiArMjY0
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNE
aWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgCisKICAgICBpZiAoIVJldmVhbExpYnJhcnkoKSB8fCAhUmV2ZWFsQ29yZUxp
YnJhcnkoKSB8fCAhZ2V0UlZJdGVtQ2xhc3MoKSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwg
bmlsIH07Ci0gICAgCi0gICAgYXV0byBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCk7Ci0gICAgaWYgKCFzZWxlY3RlZFJhbmdlKQorCisgICAgaWYgKCFzZWxlY3Rp
b24udG9Ob3JtYWxpemVkUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07
CiAKICAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJhbmdlIHdlIHdhbnQsIHdlIGp1
c3QgbmVlZCB0byBncmFiIHRoZSByZXR1cm5lZCBvcHRpb25zLgpAQCAtMjc5LDIwICsyNzgsMjEg
QEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxv
b2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY28KICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29p
bmcgdG8gdXNlIHRoZSBzdXJyb3VuZGluZyBwYXJhZ3JhcGhzIG9mIHRleHQuCiAgICAgYXV0byBw
YXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQpOwogICAgIGF1
dG8gcGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uRW5kKTsKKyAgICBpZiAo
cGFyYWdyYXBoU3RhcnQuaXNOdWxsKCkgfHwgcGFyYWdyYXBoRW5kLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKKworICAgIGF1dG8gbGVuZ3RoVG9TZWxlY3Rpb25T
dGFydCA9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFN0YXJ0
KSwgKm1ha2VCb3VuZGFyeVBvaW50KHNlbGVjdGlvblN0YXJ0KSB9KTsKKyAgICBhdXRvIHNlbGVj
dGlvbkNoYXJhY3RlckNvdW50ID0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQo
c2VsZWN0aW9uU3RhcnQpLCAqbWFrZUJvdW5kYXJ5UG9pbnQoc2VsZWN0aW9uRW5kKSB9KTsKKyAg
ICBOU1JhbmdlIHJhbmdlVG9QYXNzID0gTlNNYWtlUmFuZ2UobGVuZ3RoVG9TZWxlY3Rpb25TdGFy
dCwgc2VsZWN0aW9uQ2hhcmFjdGVyQ291bnQpOwogCi0gICAgaW50IGxlbmd0aFRvU2VsZWN0aW9u
U3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFy
dCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKLSAgICBpbnQgbGVuZ3RoVG9TZWxlY3Rpb25FbmQg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2Vs
ZWN0aW9uRW5kKS5nZXQoKSk7Ci0gICAgTlNSYW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdl
KGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQsIGxlbmd0aFRvU2VsZWN0aW9uRW5kIC0gbGVuZ3RoVG9T
ZWxlY3Rpb25TdGFydCk7Ci0gICAgCiAgICAgUmVmUHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFu
Z2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CiAgICAgU3RyaW5n
IGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKTsKLSAgICBS
ZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGlu
aXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKLSAgICBO
U1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKLSAgICAK
LSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2Us
IGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsK
LSAgICAKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1J
bnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bh
c3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKKworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKm1ha2VDaGFyYWN0
ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmlsIH07CisKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotICAgIAorCiAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiB9CiAKQEAg
LTMyMiw1MSArMzIyLDQ3IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5
ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0CiAKICAgICBhdXRvIHNl
bGVjdGlvbiA9IGZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIE5TUmFuZ2Ugc2VsZWN0aW9uUmFu
Z2U7Ci0gICAgaW50IGhpdEluZGV4OworICAgIE5TVUludGVnZXIgaGl0SW5kZXg7CiAgICAgUmVm
UHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2U7CiAgICAgCiAgICAgaWYgKHNlbGVjdGlvbi5z
ZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb24pIHsKICAg
ICAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAg
ICAgICAgYXV0byBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpOwotICAgICAg
ICAKKwogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBzdXJy
b3VuZGluZyBwYXJhZ3JhcGhzIG9mIHRleHQuCiAgICAgICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQg
PSBzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvblN0YXJ0KTsKICAgICAgICAgYXV0byBwYXJhZ3Jh
cGhFbmQgPSBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpOwogICAgICAgICAKLSAgICAgICAg
YXV0byByYW5nZVRvU2VsZWN0aW9uU3RhcnQgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNl
bGVjdGlvblN0YXJ0KTsKLSAgICAgICAgYXV0byByYW5nZVRvU2VsZWN0aW9uRW5kID0gbWFrZVJh
bmdlKHBhcmFncmFwaFN0YXJ0LCBzZWxlY3Rpb25FbmQpOwotICAgICAgICAKICAgICAgICAgZnVs
bENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQp
OwogICAgICAgICBpZiAoIWZ1bGxDaGFyYWN0ZXJSYW5nZSkKICAgICAgICAgICAgIHJldHVybiB7
IG51bGxwdHIsIG5pbCB9OwogCi0gICAgICAgIHNlbGVjdGlvblJhbmdlID0gTlNNYWtlUmFuZ2Uo
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvU2VsZWN0aW9uU3RhcnQuZ2V0KCkpLCBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0
aW9uRW5kKS5nZXQoKSkpOwotICAgICAgICAKLSAgICAgICAgaGl0SW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcG9zaXRpb24pLmdldCgp
KTsKKyAgICAgICAgc2VsZWN0aW9uUmFuZ2UgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7
ICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhTdGFydCksICptYWtlQm91bmRhcnlQb2ludChz
ZWxlY3Rpb25TdGFydCkgfSksCisgICAgICAgICAgICBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91
bmRhcnlQb2ludChzZWxlY3Rpb25TdGFydCksICptYWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb25F
bmQpIH0pKTsKKyAgICAgICAgaGl0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRh
cnlQb2ludChwYXJhZ3JhcGhTdGFydCksICptYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbikgfSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BY2NvdW50
aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKICAgICAgICAgc2VsZWN0aW9uQWNjb3VudGlu
Z0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CiAg
ICAgICAgIHBvc2l0aW9uID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgp
OworCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgMjUwIGNoYXJh
Y3RlcnMgb2YgdGV4dCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBwb2ludC4KICAgICAgICAgZnVsbENo
YXJhY3RlclJhbmdlID0gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBv
c2l0aW9uLCAyNTApOwotICAgICAgICAKICAgICAgICAgaWYgKCFmdWxsQ2hhcmFjdGVyUmFuZ2Up
CiAgICAgICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKLSAgICAgICAgCisKICAgICAg
ICAgc2VsZWN0aW9uUmFuZ2UgPSBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKLSAgICAgICAg
aGl0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShmdWxsQ2hhcmFj
dGVyUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24pLmdldCgpKTsKKyAgICAgICAgaGl0
SW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludChmdWxsQ2hhcmFjdGVy
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICptYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbikgfSk7
CiAgICAgfQotICAgIAorCiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0
aW9uQ2xhc3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVj
dGlvbjpuaWxdOwotICAgIAorCiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1
bGxDaGFyYWN0ZXJSYW5nZSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMo
W2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJh
bmdlOnNlbGVjdGVkUmFuZ2VdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5n
ZXQoKS5oaWdobGlnaHRSYW5nZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gbWFrZUNoYXJh
Y3RlclJhbmdlKGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRl
bVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRSYW5n
ZSk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAh
aGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKQorICAgIGlmICghaGlnaGxpZ2h0UmFuZ2UgfHwgIWhpZ2hs
aWdodFJhbmdlLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAg
IAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5n
ZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9
OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1
bGxDaGFyYWN0ZXJSYW5nZSwgKmhpZ2hsaWdodFJhbmdlKSksIG5pbCB9OwogICAgIAogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IDljMWFlODg4OTUxZmIzYmIy
NTZlZDdlMDllMjQxNzZiYzhkM2MzODkuLmQzY2YwNmM5M2QxOWQ4NWVlNTE0NWQwMmExMmQ1MmI4
M2JjN2EwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCkBAIC00OCw5ICs0OCw3IEBAIERpY3RhdGlvbkNvbW1hbmRJT1M6OkRp
Y3RhdGlvbkNvbW1hbmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8VmVjdG9yPFN0cmlu
CiAKIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiB7Ci0gICAgVmlzaWJsZVBv
c2l0aW9uIGluc2VydGlvblBvc2l0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCkpOwotCi0gICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCByZXN1bHRMZW5ndGggPSAwOwogICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb25zIDogbV9k
aWN0YXRpb25QaHJhc2VzKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRh
dGlvbiA9IGludGVycHJldGF0aW9uc1swXTsKICAgICAgICAgcmVzdWx0TGVuZ3RoICs9IGZpcnN0
SW50ZXJwcmV0YXRpb24ubGVuZ3RoKCk7CkBAIC02MiwyMCArNjAsMjAgQEAgdm9pZCBEaWN0YXRp
b25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSk7CiAgICAgfQogCi0g
ICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUmVzdWx0cyhlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxl
RW5kKCkpOworICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3Np
dGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlp
bmcgb24gY2hhcmFjdGVyIGNvdW50cy4KIAotICAgIEVsZW1lbnQqIHJvb3QgPSBhZnRlclJlc3Vs
dHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CisgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2lu
dChlbmRQb3NpdGlvbik7CisgICAgYXV0byogcm9vdCA9IGVuZFBvc2l0aW9uLnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsKKyAgICBpZiAoIWVuZCB8fCAhcm9vdCkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gRklYTUU6IEFkZCB0aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hl
ZCBiZWZvcmUgcmVzdWx0cyBhcmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0
SXRlcmF0b3JzLgotICAgIGF1dG8gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVz
dWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCksIHRydWUpOwotICAgIGludCBzdGFydEluZGV4
ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CisgICAgYXV0byBlbmRPZmZzZXQgPSBjaGFyYWN0
ZXJDb3VudCh7IHsgKnJvb3QsIDAgfSwgV1RGTW92ZSgqZW5kKSB9KTsKKyAgICBpZiAoZW5kT2Zm
c2V0IDwgcmVzdWx0TGVuZ3RoKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3RhcnRJbmRl
eCA+PSAwKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50
KCksIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0cnVlKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJh
bmdlKTsgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGlzPwotICAgICAgICBkb2N1bWVudCgp
Lm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBtX21ldGFk
YXRhKTsKLSAgICB9CisgICAgYXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNldCAtIHJl
c3VsdExlbmd0aCwgZW5kT2Zmc2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERp
Y3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDE2MTU5MDdkNjkxMTBjNjg1Zjc3MzA3MzE4
YmIyYTU1NzE5NjhhNGUuLmY4NDU3NDEzMDlmNDRmNzIyMDNlZTcxYTliYmVhZWZjNmE0OWVkYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBM
ZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1
cExlZ2FjeS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg5LDEwICs4OSwxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4s
IE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwog
ICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBh
cmFncmFwaHMgb2YgdGV4dC4KICAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gc3RhcnRPZlBhcmFn
cmFwaChzZWxlY3Rpb25TdGFydCk7CiAgICAgYXV0byBwYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFn
cmFwaChzZWxlY3Rpb25FbmQpOworICAgIGlmIChwYXJhZ3JhcGhTdGFydC5pc051bGwoKSB8fCBw
YXJhZ3JhcGhFbmQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9Owog
Ci0gICAgaW50IGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKLSAg
ICBpbnQgbGVuZ3RoVG9TZWxlY3Rpb25FbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1h
a2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uRW5kKS5nZXQoKSk7Ci0gICAgTlNSYW5n
ZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQsIGxlbmd0
aFRvU2VsZWN0aW9uRW5kIC0gbGVuZ3RoVG9TZWxlY3Rpb25TdGFydCk7CisgICAgYXV0byBsZW5n
dGhUb1NlbGVjdGlvblN0YXJ0ID0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQo
cGFyYWdyYXBoU3RhcnQpLCAqbWFrZUJvdW5kYXJ5UG9pbnQoc2VsZWN0aW9uU3RhcnQpIH0pOwor
ICAgIGF1dG8gc2VsZWN0aW9uQ2hhcmFjdGVyQ291bnQgPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtl
Qm91bmRhcnlQb2ludChzZWxlY3Rpb25TdGFydCksICptYWtlQm91bmRhcnlQb2ludChzZWxlY3Rp
b25FbmQpIH0pOworICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShsZW5ndGhU
b1NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25DaGFyYWN0ZXJDb3VudCk7CiAKICAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBuaWw7CiAgICAgdG9rZW5SYW5nZShwbGFpblRleHQobWFrZVJhbmdl
KHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRp
b25zKTsKQEAgLTEzMyw3ICsxMzUsMTIgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0Rp
Y3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKICAgICBp
ZiAoIWZ1bGxDaGFyYWN0ZXJSYW5nZSkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07
CiAKLSAgICBOU1JhbmdlIHJhbmdlVG9QYXNzID0gTlNNYWtlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChtYWtlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydFBvc2l0aW9uKCks
IHBvc2l0aW9uKS5nZXQoKSksIDApOworICAgIGF1dG8gZnVsbENoYXJhY3RlclN0YXJ0ID0gbWFr
ZUJvdW5kYXJ5UG9pbnQoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAg
IGF1dG8gcG9zaXRpb25Cb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKKyAg
ICBpZiAoIWZ1bGxDaGFyYWN0ZXJTdGFydCB8fCAhcG9zaXRpb25Cb3VuZGFyeSkKKyAgICAgICAg
cmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CisKKyAgICBOU1JhbmdlIHJhbmdlVG9QYXNzID0gTlNN
YWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyAqZnVsbENoYXJhY3RlclN0YXJ0LCAqcG9zaXRpb25C
b3VuZGFyeSB9KSwgMCk7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwogICAgIE5T
UmFuZ2UgZXh0cmFjdGVkUmFuZ2UgPSB0b2tlblJhbmdlKHBsYWluVGV4dChmdWxsQ2hhcmFjdGVy
UmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpOwogCkBAIC0xNDIsNyArMTQ5LDcg
QEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxv
b2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKICAgICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1
cm4geyBudWxscHRyLCBuaWwgfTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3Rl
ZFJhbmdlLmxlbmd0aCksIG9wdGlvbnMgfTsKKyAgICByZXR1cm4geyByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJh
Y3RlZFJhbmdlLmxlbmd0aCksIG9wdGlvbnMgfTsKIH0KIAogc3RhdGljIHZvaWQgZXhwYW5kU2Vs
ZWN0aW9uQnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVt
YmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQmVmb3Jl
U3RhcnQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQWZ0ZXJFbmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWRlMGI0YTAwOGFjOTk5YzA0YTRjYzY4ZjdhZWQ5YWEy
ZGI2Y2VhZi4uOTg2N2QwNjNhNjdiNDBjMzdkYmI0YmUxNGM3MjFkMDY1ODRjYWVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNjU0LDEwICs2NTQsMTMgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFIKICAgICByZXR1cm4gdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3du
RGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3Bl
Y3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdyYXBo
R3JhbnVsYXJpdHkpOwogfQogCi1zdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCitzdGF0aWMgQ2hhcmFjdGVyQ291bnQgdGV4
dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIHsK
LSAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzdGFydC5hbmNob3JOb2RlKCktPmRvY3Vt
ZW50KCksIHN0YXJ0LCBlbmQpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBhdXRvIHN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRh
cnlQb2ludChzdGFydCk7CisgICAgYXV0byBlbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50
KGVuZCk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHsgKnN0YXJ0Qm91bmRhcnksICpl
bmRCb3VuZGFyeSB9LCB0cnVlKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYjc2Y2JhMjBiOTE2ZGVhODZmODgyOTE3NTdl
NTBkMWY4Y2U4MzgyMy4uNGRlMjZmMjM0Y2I3ZDZmYmJkYjgwNDg4OTExOWZjZDMxODQ0ZjBlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03OTksOCArNzk5LDcgQEAgdW5zaWduZWQgUGFnZTo6Y291
bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWcKIAogc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gcm9vdDsKLSAgICBzaXplX3QgbG9jYXRpb24geyBub3RGb3VuZCB9OwotICAgIHNp
emVfdCBsZW5ndGggeyAwIH07CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiB9OwogCiBzdGF0
aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mIHJhbmdlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpCkBAIC04
MTIsMTAgKzgxMSwxMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNv
bnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmFuZ2VzIGFyZSBzb3J0ZWQg
YnkgdGhlaXIgZW5kIG9mZnNldHMsIHBlciBlZGl0aW5nIGNvbnRhaW5lci4KLSAgICAgICAgYXV0
byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOworICAg
ICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UucmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5yYW5nZS5sZW5ndGg7CiAgICAgICAgIGF1dG8gaW5zZXJ0aW9uSW5kZXggPSByYW5nZUxpc3Qu
c2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZUxpc3QucmJlZ2luKCk7
IGl0ZXJhdG9yICE9IHJhbmdlTGlzdC5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAg
IGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+bG9jYXRpb24g
KyBpdGVyYXRvci0+bGVuZ3RoOworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNl
cnRpb25JbmRleCA9IGl0ZXJhdG9yLT5yYW5nZS5sb2NhdGlvbiArIGl0ZXJhdG9yLT5yYW5nZS5s
ZW5ndGg7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0Rm9yUmFuZ2UgPj0gZW5kT2Zmc2V0QmVm
b3JlSW5zZXJ0aW9uSW5kZXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBp
bnNlcnRpb25JbmRleC0tOwpAQCAtODU4LDExICs4NTcsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiBy
YW5nZXMKICAgICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMgd2hlbiBy
ZXBsYWNpbmcgdGV4dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMgZG9uJ3Qg
Y2xvYmJlciByZXBsYWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8mIHJhbmdl
cyA9IHJhbmdlc0J5Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwogICAgICAg
ICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9IHJhbmdl
cy5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0
b3ItPmxvY2F0aW9uLCBpdGVyYXRvci0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghcmFuZ2Ug
fHwgcmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgICAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmNvbnRhaW5lciks
IGl0ZXJhdG9yLT5yYW5nZSk7CisgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBET1dOU1RS
RUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4
dCwgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVwbGFjZTo6
Tm8sIEVkaXRBY3Rpb246Okluc2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTg5NCw3ICs4OTMsNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQoY29u
c3QgVmVjdG9yPFJlZjxSYW5nZT4+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAgICAgIGlmIChyZXBs
YWNlbWVudExvY2F0aW9uID09IG5vdEZvdW5kIHx8ICFyZXBsYWNlbWVudExlbmd0aCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdU
Rk1vdmUoaGlnaGVzdFJvb3QpLCByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0
aCB9KTsKKyAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0
Um9vdCksIHsgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSB9KTsKICAg
ICB9CiAKICAgICByZXBsYWNlUmFuZ2VzKCp0aGlzLCByZXBsYWNlbWVudFJhbmdlcywgcmVwbGFj
ZW1lbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
CmluZGV4IGQwZDAwYzZiZDU3MzI3NzNjMGEzN2U4YmI1MzY1N2ViMzQ3N2RlYjMuLmQyNDVjY2Q5
ZWM5MTIwMmVjM2QwZjQ5ZWQ1NTRjMzA1MGVlOTdjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMTAgKzMxLDkgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02MywxNiArNjIs
MTQgQEAgZW51bSBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB7CiB9OwogCiBzdHJ1Y3QgR3JhbW1h
ckRldGFpbCB7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAgQ2hhcmFj
dGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBTdHJpbmcg
dXNlckRlc2NyaXB0aW9uOwogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7CiAgICAg
VGV4dENoZWNraW5nVHlwZSB0eXBlOwotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3Ro
OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBk
ZXRhaWxzOwogICAgIFN0cmluZyByZXBsYWNlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZDgxOTgxZjIwMTZiMjlmNzM2MjNkZDAyM2NlZWEzYmIxZTcwOTRl
Yy4uMzFhZjNiNTdjZWUwNjM0ZGY0ZGY4ZTU2ZmY4NDFjYTRlMTQ1NTgwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjAzNCw5ICsyMDM0LDkgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxzOjppbnZhbGlkYXRlQ29udHJvbFRpbnRzKCkKICAgICByZXR1cm4geyB9
OwogfQogCi1SZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitS
ZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVu
dCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKQog
ewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZz
Y29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhzY29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCiB1bnNpZ25l
ZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5n
ZSYgcmFuZ2UpCkBAIC0yMDY1LDkgKzIwNjUsOSBAQCBTdHJpbmcgSW50ZXJuYWxzOjpyYW5nZUFz
VGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKHJhbmdl
KTsKIH0KIAotUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgaW50
IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZjxSYW5nZT4gSW50ZXJuYWxzOjpz
dWJyYW5nZShSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJh
bmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBy
YW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgg
fSkpOwogfQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VPZlN0cmluZ05lYXJMb2Nh
dGlvbihjb25zdCBSYW5nZSYgc2VhcmNoUmFuZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWdu
ZWQgdGFyZ2V0T2Zmc2V0KQpAQCAtMjQyMiw4ICsyNDIyLDcgQEAgdm9pZCBJbnRlcm5hbHM6Omhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBs
b2NhdGkKIAogICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpOb25lOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IGxvY2F0aW9u
OwotICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0geyBsb2Nh
dGlvbiwgbGVuZ3RoIH07CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gY2FuZGlkYXRlOwogICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5oYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNzZjNDM4
OTQ5ZjFiN2U0ZTQ2YjZiMTE5ODQxZmJiYmNiN2QxN2MzYi4uNTE2OTg4ZDdjZTQ1NWI0NDU1MzM4
ZDU1ZGIxM2QwMTgyNTM5MzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
OTQsMTIgKzI5NCwxMiBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnZhbGlk
YXRlQ29udHJvbFRpbnRzKCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1l
bnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7
CiAgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJh
bmdlJik7CiAgICAgdW5zaWduZWQgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25z
dCBSYW5nZSYpOwogICAgIFN0cmluZyByYW5nZUFzVGV4dChjb25zdCBSYW5nZSYpOwogICAgIFN0
cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJik7
Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIGludCByYW5nZUxvY2F0aW9uLCBpbnQg
cmFuZ2VMZW5ndGgpOworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNpZ25lZCBy
YW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFJhbmdlPj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50
IHkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBS
YW5nZSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IDUxNDc0OWUyZjc4MWI0YTUxNzE2ZGIwMjhlYjQ5MzI4ZjZhOWU3ZWMu
LjI0NmQ2NGU4Y2IzMGFiNzRiNmJiNzc3ZmRmNjJhN2VhOTI4NmQzMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMyNCwxMiArMzI0LDEyIEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNjcm9sbEVsZW1lbnRU
b1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgpOwog
Ci0gICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIGxv
bmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2U/IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgdW5zaWduZWQg
bG9uZyBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIERP
TVN0cmluZyByYW5nZUFzVGV4dChSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNU
ZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoUmFuZ2UgcmFuZ2UpOwotICAgIFJhbmdlIHN1
YnJhbmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgp
OworICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24obG9uZyB4LCBsb25n
IHkpOwogICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKFJhbmdlIHJhbmdlLCBE
T01TdHJpbmcgdGV4dCwgbG9uZyB0YXJnZXRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcAppbmRleCAxYWZhZTVlYmJmNWU2M2Q5YmVkZjMwMzlkZjQ0NTFjOWI1NTNh
NjM4Li43NmVmNDcyMmQ3NTFjZjZlNTlhYWI5ZWRmYWI2NjU2ZTcwNGYxNmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTMzLDQzICszMywzMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFu
Z2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQorUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvIGJhc2UpCiB7Ci0gICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAg
ICBBU1NFUlQoZWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBXZWJDb3Jl
OjpDaGFyYWN0ZXJSYW5nZSByYW5nZSB7IGVkaXRpbmdSYW5nZS5sb2NhdGlvbiwgZWRpdGluZ1Jh
bmdlLmxlbmd0aCB9OwogCi0gICAgLy8gU2FuaXRpemUgdGhlIGlucHV0LCBiZWNhdXNlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGFrZXMgc2lnbmVkIGludGVnZXJz
LgotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGludCBsZW5ndGg7Ci0gICAgaWYgKHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYICYm
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoIDw9IElOVF9NQVgpCi0gICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4ocmFuZ2UubGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIGxl
bmd0aCA9IElOVF9NQVggLSByYW5nZS5sb2NhdGlvbjsKLQotICAgIGlmIChlZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsK
KyAgICBpZiAoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkg
ewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBw
YXRoIGlzIGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAgICAgLy8gY29uY2VudHJh
dGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbi4KICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4g
VGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1
bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBp
cwogICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAgICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUu
c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCByYW5nZSkpOwogICAgIH0K
IAotICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwotCi0gICAgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Ci0gICAgaWYgKCFzZWxlY3RlZFJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFw
aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHBhcmFncmFwaFJhbmdlID0gbWFrZVJh
bmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKSwgc2VsZWN0aW9u
LnZpc2libGVFbmQoKSk7Ci0gICAgaWYgKCFwYXJhZ3JhcGhSYW5nZSkKKyAgICBhdXRvIHBhcmFn
cmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOworICAgIGlmICghcGFyYWdyYXBo
U3RhcnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byYgcm9vdE5vZGUgPSBw
YXJhZ3JhcGhSYW5nZS5nZXQoKS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9k
ZSgpOwotICAgIGludCBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6VGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKHJvb3ROb2RlLmRvY3VtZW50KCks
ICZyb290Tm9kZSwgMCwgJnBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRPZmZzZXQoKSkucHRyKCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBo
U3RhcnRJbmRleCArIHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOwor
ICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocGFyYWdy
YXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOworICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RG
TW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSkpOwogfQog
CiBFZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZy
YW1lLCBjb25zdCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVU
byBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5o
CmluZGV4IDk0NzM4YjdmODhlOWUwNThkYTJlZDI1NGExNjA0NGViYzZiOTMwNjkuLmUwNDNmOTcy
NDBlNDI1ZWNkMjVhNDI3ZWRkOTI3YWNiNzQ1ZTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRp
bmdSYW5nZS5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAorLy8gRklYTUU6IFJlcGxh
Y2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0aW5nUmFu
Z2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91bmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBi
MzA3YWEyNTg5ZWY4MTQwZWFmNzU5MDQxOGViZTgxYWJjMWE5MTgwLi5mYWI0ODRkZWFhMTgyYjQ2
YjVkZjNiYTlkNGFhNmQzY2JkMGNjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8vIEZJWE1FOiBTZWVtcyBsaWtl
IHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRoZSBjb2RlIGJlbG93IGEgbG90
IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENh
Y2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhY2hlUXVlcnlPcHRp
b24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPENoYXJhY3RlclJh
bmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENoYXJhY3RlclJhbmdlJiByYW5n
ZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sb2NhdGlv
bik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFuZ2UubGVuZ3RoKTsK
K30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFu
Z2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4g
bG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAoIWxvY2F0aW9uKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxl
bmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKmxvY2F0aW9uLCAqbGVuZ3Ro
IH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
byYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsKQEAgLTIwNTMsMjIg
KzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAogdm9pZCBBcmd1bWVudENvZGVy
PEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgR3JhbW1hckRl
dGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxvY2F0aW9uOwotICAgIGVu
Y29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGRldGFpbC5yYW5nZTsKICAg
ICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29kZXIgPDwgZGV0YWlsLnVzZXJE
ZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxH
cmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxl
bmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRp
b25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIwOTgsNyBAQCBPcHRpb25hbDxH
cmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpsb2NhdGlvbiksIFdURk1vdmUo
Kmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3JpcHRpb24pIH19
OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92ZSgqdXNl
ckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hlY2tpbmdS
ZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBU
ZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KQogewog
ICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0gICAgZW5jb2RlciA8PCByZXN1
bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVuZ3RoOworICAgIGVuY29kZXIg
PDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LmRldGFpbHM7CiAgICAgZW5j
b2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5LDE0ICsyMTQ1LDkgQEAgT3B0
aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3Vs
dD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5cGUpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGludD4gbG9j
YXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxvY2F0aW9uKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50PiBsZW5ndGg7Ci0g
ICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgT3B0aW9uYWw8Q2hh
cmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7CisgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxH
cmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2MCw3IEBAIE9wdGlvbmFsPFRl
eHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNv
ZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIFdURk1vdmUoKmxvY2F0aW9u
KSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1vdmUoKnJlcGxhY2Vt
ZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92ZSgqZGV0YWlscyks
IFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxVc2Vy
U3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVc2VyU3R5bGVTaGVl
dCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0YTIxNmU4NGYwMTcu
LjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2MjdkMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjksNiArNjksNyBAQCBj
bGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xh
c3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYsNiArMTE3LDcgQEAgY2xhc3Mg
VHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIAogc3RydWN0IENh
Y2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3RydWN0IENvbXBvc2l0
aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IERpY3Rp
b25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IFZlbG9jaXR5RGF0YTsK
IHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAgICAg
Ci10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RFZGdlczxmbG9h
dD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsyMTgsMTEgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4gewogICAg
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
KTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2hhcmFj
dGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNoYXJh
Y3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGY5ZDdhYmU3NGM0MjZmYjQ1NDIzMDNkMTVkMzIz
ZjBjMmYyYWQwNTkuLjM4ODg2NjJmOTFiODExYjhkNmEzOTQ1NThhZDUxOTIxZjYxZjRhMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zMzY2
LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkKIAogc3RhdGljIFdlYkNvcmU6
OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdS
ZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFuZ2UgcmVz
dWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKG5z
UmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgcmVz
dWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0
Q2hlY2tlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklP
Uy5tbQppbmRleCA5MjAwZWI2MDhiM2ExNTFmNzZjMDg2OGRjNDg4MzBhZmZkYzQ3MWZlLi5mNjA4
YzhkYjVjNjA2NTMwY2FhNTk2ZWQ2YWI1ZTk1ZDZjZWRlNTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCkBAIC0yMTIsOCArMjEyLDcgQEAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KFNwZWxsRG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0
OwogICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAg
ICAgICByZXN1bHQubG9jYXRpb24gPSBtaXNzcGVsbGVkUmFuZ2UubG9jYXRpb247Ci0gICAgICAg
IHJlc3VsdC5sZW5ndGggPSBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQu
cmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKG1pc3NwZWxsZWRSYW5nZSk7CiAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKFdURk1vdmUocmVzdWx0KSk7CiAKICAgICAgICAgb2Zmc2V0U29GYXIgPSBt
aXNzcGVsbGVkUmFuZ2UubG9jYXRpb24gKyBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4IDBjYTEzM2Ey
YWRjZTQxYTdjZmNmM2EwZDQxNGFiNGZmYjg0ZWU2MzQuLmFjM2JlZTAwYjE2NTkzYWNmNDU3MWVh
OTljMTEwMTZjYzE0ZjQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4
dENoZWNrZXJNYWMubW0KQEAgLTMzNCwyMiArMzM0LDIwIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFn
IHNwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9ydGhvZ3JhcGh5Ok5VTEwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkQ291bnQ6
TlVMTF07CiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4g
aW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21p
bmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9
IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdl
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVu
Z3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0
aCA+IDApOworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShp
bmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5n
VHlwZTo6U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0
OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpH
cmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAg
ICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNd
OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwot
ICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAg
ICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAg
cmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFy
eSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewogICAgICAgICAgICAgICAgIEFTU0VSVChp
bmNvbWluZ0RldGFpbCk7CiAgICAgICAgICAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBA
IC0zNTgsOCArMzU2LDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6
OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAg
ICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1
ZV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4g
MCk7Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgICAgICAgICBkZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShk
ZXRhaWxOU1JhbmdlKTsKICAgICAgICAgICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0g
W2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwog
ICAgICAgICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0
Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgICAgICAgICBmb3IgKE5TU3Ry
aW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtMzcwLDM2ICszNjcsMzEgQEAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9j
dW1lbnRUYWcgc3AKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNr
aW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAg
ICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6TGluazsKLSAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9
IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWlu
Z1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2lu
Z1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1
b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAg
ICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2Ug
PSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdU
eXBlRGFzaCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gp
KSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0
LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVu
Z3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVz
dWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1
bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0
KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJl
cGxhY2VtZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVw
bGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJl
c3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50
ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1Rl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNv
cnJlY3Rpb247Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9CkBAIC00NDMsMTcgKzQz
NSwyMCBAQCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRX
b3JkKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgogCiB2b2lkIFRleHRDaGVja2VyOjp1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3Ry
aW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWls
KQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gY29ycmVjdGlvbnMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBOU1N0cmlu
ZyAqZ3Vlc3MgPSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9u
cyBhZGRPYmplY3Q6Z3Vlc3NdOworICAgIGF1dG8gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1h
ckRldGFpbC5ndWVzc2VzKSB7CisgICAgICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vl
c3M7CisgICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAg
fQogCi0gICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWls
LmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcgKmdyYW1tYXJV
c2VyRGVzY3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiBncmFtbWFyRGV0YWlsRGljdCA9IGFkb3B0TlMoW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24s
IE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlvbnMuZ2V0KCksIE5TR3JhbW1hckNv
cnJlY3Rpb25zLCBuaWxdKTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGV0YWlsID0g
QHsKKyAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFt
bWFyRGV0YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVz
Y3JpcHRpb25OU1N0cmluZywKKyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0
aW9ucy5nZXQoKSwKKyAgICB9OwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhy
YXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdC5nZXQoKV07CisgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmlu
ZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkZXRhaWxdOwogfQogCiB2b2lkIFRleHRDaGVja2Vy
OjpnZXRHdWVzc2VzRm9yV29yZChTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNv
bnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGluc2VydGlv
blBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRp
b25FbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA5ZTI0NzU4Y2Q5MmNmNzUwODZm
Y2MyMTgyNGIzNWM4ODA3MTIzMjczLi41MmJiN2M3NjNkMDBiMDAzZDgxY2QwZThiMTlmOTg5ZmNh
YjFiYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNjUsOCArNjUsNiBAQAogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVUZXh0Q2hlY2tp
bmdSZXF1ZXN0SUQoKQogewpAQCAtMzYxLDYgKzM1OSw3IEBAIFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
U3RyCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR0xJQikKKwogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7
CiAgICAgaWYgKG1fcGFnZS0+aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoZXZlbnQpKQpAQCAt
MzcxLDYgKzM3MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtl
eWRvd24oS2V5Ym9hcmRFdmVudCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwogI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShHTElCKQogCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCkBAIC00MjAs
NiArNDIwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRBcmVh
KEVsZW1lbnQqIGVsZW1lbnQpCiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNDI5LDYgKzQzMCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpzdWJGcmFtZVNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KKwogI2VuZGlmCiAKIHN0YXRpYyBib29sIGdldEFjdGlvblR5cGVGb3JLZXlFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCwgV0tJbnB1dEZpZWxkQWN0aW9uVHlwZSYgdHlwZSkKQEAg
LTU0OSwyMCArNTUxLDI1IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0
cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxXZWJDb3JlOjpHcmFtCiAgICAgKmJhZEdyYW1t
YXJMZW5ndGggPSByZXN1bHRMZW5ndGg7CiB9CiAKLXN0YXRpYyBpbnQzMl90IGluc2VydGlvblBv
aW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNl
bGVjdGlvbikKK3N0YXRpYyBDaGFyYWN0ZXJDb3VudCBpbnNlcnRpb25Qb2ludEZyb21DdXJyZW50
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pCiB7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gY3VycmVudFNlbGVjdGlvbi52aXNp
YmxlU3RhcnQoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQgPSBzdGFydE9m
UGFyYWdyYXBoKHNlbGVjdGlvblN0YXJ0KTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNlbGVjdGlvblN0YXJ0KS5nZXQoKSk7
CisgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IGN1cnJlbnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCk7CisgICAgYXV0byBzZWxlY3Rpb25TdGFydEJvdW5kYXJ5ID0gbWFrZUJvdW5kYXJ5UG9pbnQo
c2VsZWN0aW9uU3RhcnQpOworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQ
b2ludChzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvblN0YXJ0KSk7CisgICAgaWYgKCFzZWxlY3Rp
b25TdGFydEJvdW5kYXJ5IHx8ICFwYXJhZ3JhcGhTdGFydCkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHsgKnBhcmFncmFwaFN0YXJ0LCAqc2VsZWN0aW9uU3Rh
cnRCb3VuZGFyeSB9KTsKIH0KIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisKIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBPcHRpb25TZXQ8V2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZT4gY2hlY2tpbmdUeXBlcywgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNl
bGVjdGlvbikKIHsKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAg
IG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoc3RyaW5nVmlldy50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIGNoZWNraW5nVHlwZXMs
IGluc2VydGlvblBvaW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oY3VycmVudFNlbGVjdGlvbikpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVwbHkocmVzdWx0
cykpOwogICAgIHJldHVybiByZXN1bHRzOwogfQorCiAjZW5kaWYKIAogdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIGJh
ZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJEZXRhaWwpCkBAIC02
MTYsMTUgKzYyMywxMyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
ZShFbGVtZW50KiBlbGVtZW50KQogCiBib29sIFdlYkVkaXRvckNsaWVudDo6c3VwcG9ydHNHbG9i
YWxTZWxlY3Rpb24oKQogewotI2lmIFBMQVRGT1JNKEdUSykKLSNpZiBQTEFURk9STShYMTEpCisj
aWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXQVlMQU5EKQorI2lm
IFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oV0FZTEFORCkKICAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5
bGFuZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbmRpZgogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCBm
MThjYWE3MmNiZDk2NTMxNzU1ZTkyZWNmYjIwZWY0ZGI4Y2E1M2FmLi43MGEzOTAzNWQ1OGM4MTJj
MmNiMDEzMTlmNWExNmM2ZmE1OWY1ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eTo6UmFuZ2VBbmRPZmZzZXQ+IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94CiAg
ICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5n
ZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgc2VsZWN0
aW9uTG9jYXRpb24gKz0gb2Zmc2V0OwogCi0gICAgcmV0dXJuIHt7IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCks
IHNlbGVjdGlvbkxvY2F0aW9uIH19OworICAgIHJldHVybiB7eyByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19
OwogfQogCiB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZl
VG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2Vs
ZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1l
bnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0
aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbgogCiAgICAgICAgICAgICAgICAgc2l6
ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID0gbG9jYXRpb25JblJvb3QgLSBzZWxlY3Rp
b25PZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb24gJiYgc2VsZWN0
aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2NhdGlvbkluUm9vdCArIHJlbGF0aXZlUmVwbGFjZW1l
bnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlLCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDApOwogICAgICAgICAg
ICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uVG9SZXN0b3JlLmdldCgp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAg
dm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0
aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAgICB9CiAKICAgICBbYW5ub3RhdGVkU3RyaW5nLnN0
cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbYW5ub3RhdGVk
U3RyaW5nLnN0cmluZyBsZW5ndGhdKSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFy
eTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlkPiAqYXR0cnMsIE5TUmFuZ2UgYXR0cmlidXRlUmFu
Z2UsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIGxvY2F0aW9uSW5Sb290
ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CisgICAg
ICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3Qs
IGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdl
Lmxlbmd0aCk7CiAgICAgICAgIGlmICghYXR0cmlidXRlQ29yZVJhbmdlKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xOTksNyArMTk5LDcgQEAgQXR0cmlidXRlZFN0cmluZyBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYgdGV4dENoZWNraW5n
RGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0RhdGE+
KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFya2VyLT5z
dGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgp
KTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY3Jl
YXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1h
cmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgICAg
ICBzaXplX3Qgc3VicmFuZ2VMb2NhdGlvbjsKICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxl
bmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNjNjNzU3N2E1YzAwNTdjZWM4YmY4NWYzMzUwYWQ5MWRlMTZlNThlNS4uZmVhNTRmMjcwZTZm
OTM0ZjkwMzMyZDU4ODVkNzY2NDU2ZTFhNzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU0MzQsNiArNTQzNCw3IEBAIHZvaWQgV2ViUGFn
ZTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQog
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisKIHN0YXRpYyBGcmFtZSogdGFy
Z2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UmIHBhZ2UpCiB7CiAgICAgRnJhbWUmIHRhcmdldEZy
YW1lID0gcGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKQEAgLTU0NzMsOSArNTQ3NCw5IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRp
bmcoaW50NjRfdCBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogCiAgICAgYXV0byBz
ZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHN1cnJv
dW5kaW5nUmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRPZkVkaXRhYmxlQ29udGVudChzZWxlY3Rpb25T
dGFydCksIHNlbGVjdGlvblN0YXJ0KTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdXJyb3VuZGluZ1JhbmdlLmdldCgpKTsKKyAgICBhdXRvIGN1
cnNvclBvc2l0aW9uID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoKnN1cnJvdW5kaW5nUmFuZ2Up
OwogICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+c3RhcnRDb250YWluZXIo
KS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgY3Vyc29yUG9z
aXRpb24gKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICBhdXRvIHNlbGVjdGlvblJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKCZyb290Tm9kZSwgY3Vyc29yUG9zaXRpb24gKyBvZmZz
ZXQsIGNoYXJhY3RlckNvdW50KTsKICAgICBpZiAoIXNlbGVjdGlvblJhbmdlKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTU0ODUsNiArNTQ4Niw3IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91
bmRpbmcoaW50NjRfdCBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKICAgICBz
ZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6ZGlk
QXBwbHlTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4IDNhN2JhYTZjMTAyZGQ3Y2Y2NjVlYzM2YmI0YjFm
YmMxOGIyMjBlY2EuLmUyYWMyM2FlNTU3ZDdhMTdlOTY3YzAzYmI4MzAxYTc4N2Q3Y2Q0ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFn
ZUdMaWIuY3BwCkBAIC0xMTYsMTIgKzExNiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAog
ICAgICAgICAgICAgc3Vycm91bmRpbmdSYW5nZS0+c2V0RW5kKGNvbXBvc2l0aW9uUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CiAgICAgICAgICAgICBjbG9uZWRSYW5nZS0+c2V0U3RhcnQoY29tcG9z
aXRpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5z
dXJyb3VuZGluZ0NvbnRleHQgPSBwbGFpblRleHQoc3Vycm91bmRpbmdSYW5nZS5nZXQoKSkgKyBw
bGFpblRleHQoY2xvbmVkUmFuZ2UucHRyKCkpOwotICAgICAgICAgICAgcG9zdExheW91dERhdGEu
c3Vycm91bmRpbmdDb250ZXh0Q3Vyc29yUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN1cnJvdW5kaW5nUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgcG9zdExheW91dERhdGEu
c3Vycm91bmRpbmdDb250ZXh0Q3Vyc29yUG9zaXRpb24gPSBjaGFyYWN0ZXJDb3VudCgqc3Vycm91
bmRpbmdSYW5nZSk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zdXJyb3VuZGluZ0NvbnRl
eHRTZWxlY3Rpb25Qb3NpdGlvbiA9IHBvc3RMYXlvdXREYXRhLnN1cnJvdW5kaW5nQ29udGV4dEN1
cnNvclBvc2l0aW9uOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcG9zdExheW91dERh
dGEuc3Vycm91bmRpbmdDb250ZXh0ID0gcGxhaW5UZXh0KHN1cnJvdW5kaW5nUmFuZ2UuZ2V0KCkp
OwotICAgICAgICAgICAgcG9zdExheW91dERhdGEuc3Vycm91bmRpbmdDb250ZXh0Q3Vyc29yUG9z
aXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShzdXJyb3VuZGluZ1N0
YXJ0LCBzZWxlY3Rpb25TdGFydCkuZ2V0KCkpOwotICAgICAgICAgICAgcG9zdExheW91dERhdGEu
c3Vycm91bmRpbmdDb250ZXh0U2VsZWN0aW9uUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKG1ha2VSYW5nZShzdXJyb3VuZGluZ1N0YXJ0LCBzZWxlY3Rpb24udmlzaWJsZUVuZCgp
KS5nZXQoKSk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zdXJyb3VuZGluZ0NvbnRleHRD
dXJzb3JQb3NpdGlvbiA9IGNoYXJhY3RlckNvdW50KCptYWtlUmFuZ2Uoc3Vycm91bmRpbmdTdGFy
dCwgc2VsZWN0aW9uU3RhcnQpKTsKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnN1cnJvdW5k
aW5nQ29udGV4dFNlbGVjdGlvblBvc2l0aW9uID0gY2hhcmFjdGVyQ291bnQoKm1ha2VSYW5nZShz
dXJyb3VuZGluZ1N0YXJ0LCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDMxNTJjMzdmNGY0ZGNmMmZkMTA1YTY0NGZkMWUwNzBjOTY4MTViZjEu
LmVlZDUzMWRlOGI3NWFlNmMyYjQ5Y2YxZTkzYWUzNDQ3ZWIxNWYwNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xOTg5
LDEzICsxOTg5LDE2IEBAIHZvaWQgV2ViUGFnZTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmls
aXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBtYXRjaFRleHQsIFJlZlB0cjxSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UpCitzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9u
TWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5n
JiBtYXRjaFRleHQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICBp
ZiAoIXNlbGVjdGlvblJhbmdlKQorICAgIGF1dG8gbGl2ZVJhbmdlID0gc2VsZWN0aW9uLmZpcnN0
UmFuZ2UoKTsKKyAgICBpZiAoIWxpdmVSYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS0+b3duZXJE
b2N1bWVudCgpLCBzZWxlY3Rpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICB1bnNpZ25lZCB0
YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVl
KTsKLSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlvblJhbmdlLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBTaW1wbGVSYW5nZSByYW5nZSB7ICpsaXZl
UmFuZ2UgfTsKKyAgICBhdXRvIGJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChwb3Np
dGlvbik7CisgICAgaWYgKCFib3VuZGFyeVBvaW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChyYW5nZSwgbWF0Y2hUZXh0LCB7
IH0sIGNoYXJhY3RlckNvdW50KHsgcmFuZ2Uuc3RhcnQsICpib3VuZGFyeVBvaW50IH0sIHRydWUp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQo
aW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQpAQCAtMjAyMiw3ICsyMDI1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGUKIAogICAgIGlm
IChwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlLnB0cigpKSAhPSB0ZXh0KSB7CiAgICAgICAgIC8v
IFRyeSB0byBzZWFyY2ggZm9yIGEgcmFuZ2Ugd2hpY2ggaXMgdGhlIGNsb3Nlc3QgdG8gdGhlIHBv
c2l0aW9uIHdpdGhpbiB0aGUgc2VsZWN0aW9uIHJhbmdlIHRoYXQgbWF0Y2hlcyB0aGUgcGFzc2Vk
IGluIHRleHQuCi0gICAgICAgIGlmIChhdXRvIHdvcmRSYW5nZSA9IHJhbmdlTmVhclBvc2l0aW9u
TWF0Y2hlc1RleHQoc3RhcnRQb3NpdGlvbiwgdGV4dCwgc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCkpKSB7CisgICAgICAgIGlmIChhdXRvIHdvcmRSYW5nZSA9IHJhbmdlTmVhclBvc2l0aW9u
TWF0Y2hlc1RleHQoc3RhcnRQb3NpdGlvbiwgdGV4dCwgc2VsZWN0aW9uKSkgewogICAgICAgICAg
ICAgaWYgKCF3b3JkUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICAgICAgICAgIHJhbmdlID0g
Y3JlYXRlTGl2ZVJhbmdlKCp3b3JkUmFuZ2UpOwogICAgICAgICB9CkBAIC00MDQ4LDE4ICs0MDUx
LDIwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9j
YXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAgc2l6ZV90IHNlbGVjdGlvbkxlbmd0
aDsKICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3Qs
IHJhbmdlLmdldCgpLCBzZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKIAotICAg
IENoZWNrZWRJbnQ2NCBuZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNlbGVjdGlvbkxvY2F0aW9uIH07
Ci0gICAgQ2hlY2tlZEludDY0IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9
OwotICAgIG5ld1NlbGVjdGlvbkxvY2F0aW9uICs9IGxvY2F0aW9uRGVsdGE7Ci0gICAgbmV3U2Vs
ZWN0aW9uTGVuZ3RoICs9IGxlbmd0aERlbHRhOworICAgIGF1dG8gbmV3U2VsZWN0aW9uTG9jYXRp
b24gPSBjaGVja2VkU3VtPENoYXJhY3RlckNvdW50PihzZWxlY3Rpb25Mb2NhdGlvbiwgbG9jYXRp
b25EZWx0YSk7CisgICAgYXV0byBuZXdTZWxlY3Rpb25MZW5ndGggPSBjaGVja2VkU3VtPENoYXJh
Y3RlckNvdW50PihzZWxlY3Rpb25MZW5ndGgsIGxlbmd0aERlbHRhKTsKIAogICAgIGlmIChuZXdT
ZWxlY3Rpb25Mb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3U2VsZWN0aW9uTGVuZ3RoLmhh
c092ZXJmbG93ZWQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdl
dCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpKQotICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OworICAgIENoYXJhY3RlclJhbmdlIG5ld1NlbGVjdGlvblJhbmdlOworICAgIG5ld1NlbGVjdGlv
blJhbmdlLmxvY2F0aW9uID0gbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCk7CisgICAg
bmV3U2VsZWN0aW9uUmFuZ2UubGVuZ3RoID0gbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgp
OworCisgICAgYXV0byByZXNvbHZlZFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlvblJhbmdlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmVz
b2x2ZWRSYW5nZSkucHRyKCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CkBAIC00MTc0LDE2ICs0MTc5LDE1IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVz
dERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVx
dWVzCiAgICAgICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiByb290Q29udGFpbmVyTm9kZSA9IHJv
b3ROb2RlLT5pc0NvbnRhaW5lck5vZGUoKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHJvb3RO
b2RlLmdldCgpKSA6IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9vdENvbnRhaW5lck5vZGUuZ2V0KCks
IHJhbmdlT2ZJbnRlcmVzdC5nZXQoKSwgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24sIHJhbmdlT2ZJ
bnRlcmVzdExlbmd0aCk7CiAKLSAgICAgICAgQ2hlY2tlZFNpemUgbWlkcG9pbnRMb2NhdGlvbiB7
IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CisgICAgICAgIENoZWNrZWQ8Q2hhcmFjdGVyQ291
bnQsIFJlY29yZE92ZXJmbG93PiBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9j
YXRpb24gfTsKICAgICAgICAgbWlkcG9pbnRMb2NhdGlvbiArPSByYW5nZU9mSW50ZXJlc3RMZW5n
dGggLyAyOwogICAgICAgICBpZiAobWlkcG9pbnRMb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pZHBvaW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCBtaWRw
b2ludExvY2F0aW9uLnVuc2FmZUdldCgpLCAwKTsKKyAgICAgICAgYXV0byBtaWRwb2ludCA9IGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290Q29udGFpbmVyTm9kZSksIG1pZHBvaW50TG9j
YXRpb24udW5zYWZlR2V0KCkpKTsKIAotICAgICAgICBhdXRvIG1pZHBvaW50ID0gbWlkcG9pbnRS
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5T
ZWxlY3Rpb24gPSBzdGFydE9mV29yZChtaWRwb2ludCk7CiAgICAgICAgIGlmIChzdGFydE9mUmFu
Z2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPCByYW5nZU9mSW50ZXJlc3RTdGFydCkgewogICAgICAg
ICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gZW5kT2ZXb3JkKG1pZHBv
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggM2EwZGM0NTIwMTc2YzRjYjM5ZDE4Y2Q1MTAyMmEwNGViMDdjZDc4Mi4u
MmM1ODk2ZGY3ODU3NTg2NjEwZDJhM2E2NTU2ZDU4MTljZjZmZmU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTE0MCwx
OSArMTQwLDIyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJh
bWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlv
dXREYXRhKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9u
LnZpc2libGVTdGFydCgpOwotICAgIFZpc2libGVQb3NpdGlvbiBzZWxlY3Rpb25FbmQgPSBzZWxl
Y3Rpb24udmlzaWJsZUVuZCgpOwotICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9
IHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQpOwotICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpOworICAgIGF1dG8gc2Vs
ZWN0aW9uU3RhcnRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KHNlbGVjdGlvblN0YXJ0KTsK
KyAgICBhdXRvIHNlbGVjdGlvbkVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KHNlbGVjdGlvbi52aXNp
YmxlRW5kKCkpOworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChz
dGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvblN0YXJ0KSk7CisKKyAgICBpZiAoIXNlbGVjdGlvblN0
YXJ0Qm91bmRhcnkgfHwgIXNlbGVjdGlvbkVuZCB8fCAhcGFyYWdyYXBoU3RhcnQpCisgICAgICAg
IHJldHVybjsKIAotICAgIHBvc3RMYXlvdXREYXRhLmNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0
aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQs
IHNlbGVjdGlvblN0YXJ0KS5nZXQoKSk7Ci0gICAgcG9zdExheW91dERhdGEuc2VsZWN0ZWRUZXh0
TGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3Rh
cnQsIHNlbGVjdGlvbkVuZCkuZ2V0KCkpIC0gcG9zdExheW91dERhdGEuY2FuZGlkYXRlUmVxdWVz
dFN0YXJ0UG9zaXRpb247CisgICAgcG9zdExheW91dERhdGEuY2FuZGlkYXRlUmVxdWVzdFN0YXJ0
UG9zaXRpb24gPSBjaGFyYWN0ZXJDb3VudCh7ICpwYXJhZ3JhcGhTdGFydCwgKnNlbGVjdGlvblN0
YXJ0Qm91bmRhcnkgfSk7CisgICAgcG9zdExheW91dERhdGEuc2VsZWN0ZWRUZXh0TGVuZ3RoID0g
Y2hhcmFjdGVyQ291bnQoeyAqc2VsZWN0aW9uU3RhcnRCb3VuZGFyeSwgKnNlbGVjdGlvbkVuZCB9
KTsKICAgICBwb3N0TGF5b3V0RGF0YS5wYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlkYXRlUmVxdWVz
dCA9IHBsYWluVGV4dChmcmFtZS5lZGl0b3IoKS5jb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1
ZXN0KCkuZ2V0KCkpOwogICAgIHBvc3RMYXlvdXREYXRhLnN0cmluZ0ZvckNhbmRpZGF0ZVJlcXVl
c3QgPSBmcmFtZS5lZGl0b3IoKS5zdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQppbmRleCA3YzUwNmZjNmE3YTMxYmYzNzdjYTY1ZGM2NTEwNDRmNDFjZjlkZjEw
Li4zYjk0NjMwNGRmYjc1MjExNDEzZTlmOGQxMTA3ZjZmODc2NTk5ZDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCkBAIC04NjUsMTIgKzg2NSwxMSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiAg
ICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVG
b3J3YXJkZXJdIGNoZWNrU3BlbGxpbmdPZlN0cmluZzpzdHJpbmcuY3JlYXRlTlNTdHJpbmdXaXRo
b3V0Q29weWluZygpLmdldCgpXTsKICAgICBmb3IgKE5TVmFsdWUgKmluY29taW5nUmVzdWx0IGlu
IGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29t
aW5nUmVzdWx0IHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRp
b24gIT0gTlNOb3RGb3VuZCAmJiByZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNT
RVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Cisg
ICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOwogICAg
ICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWlu
Z1Jlc3VsdC5yYW5nZVZhbHVlKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAg
ICB9CiAKQEAgLTkzOSwxMSArOTM4LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3Jh
bW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAgICAg
ICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgICAgICBOU1ZhbHVlICpkZXRhaWxS
YW5nZUFzTlNWYWx1ZSA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclJhbmdlXTsKICAg
ICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlKTsKLSAgICAgICAgTlNSYW5nZSBkZXRh
aWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwotICAgICAgICBB
U1NFUlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNT
RVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubG9j
YXRpb24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxl
bmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VB
c05TVmFsdWUucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNT
RVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CisgICAgICAg
IGdyYW1tYXJEZXRhaWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbFJhbmdlQXNO
U1ZhbHVlLnJhbmdlVmFsdWUpOwogICAgICAgICBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlv
biA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAg
ICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3Jy
ZWN0aW9uc107CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05
NTcsMjIgKzk1NCwyMCBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShO
U0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0
ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSBy
ZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNr
aW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAg
ICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVz
dWx0LnJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21p
bmdSZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAq
bWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jl
c3VsdCBncmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFt
bWFyRGV0YWlsIGRldGFpbDsKQEAgLTk4MSw4ICs5NzYsNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxU
ZXh0QwogICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5n
ZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNS
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24g
PSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGgg
PSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAq
bWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFp
bC51c2VyRGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1h
clVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtp
bmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAg
ICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05OTMsMzYgKzk4
NywzMSBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICpp
bmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpR
dW90ZTsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlw
ZSA9PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OlJlcGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAg
ICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmdd
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlm
IChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdl
OwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxh
Y2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAg
ICAgIH0KQEAgLTEwMzEsMzEgKzEwMjAsMzYgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAg
ICByZXR1cm4gcmVzdWx0czsKIH0KIAotc3RhdGljIGludCBpbnNlcnRpb25Qb2ludEZyb21DdXJy
ZW50U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pCitz
dGF0aWMgTlNVSW50ZWdlciBpbnNlcnRpb25Qb2ludEZyb21DdXJyZW50U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gc2Vs
ZWN0aW9uU3RhcnQgPSBjdXJyZW50U2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwotICAgIFZpc2li
bGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3Rh
cnQpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJh
Z3JhcGhTdGFydCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKKyAgICBhdXRvIHNlbGVjdGlvblN0
YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOworICAgIGF1dG8gc2VsZWN0aW9uU3RhcnRC
b3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KHNlbGVjdGlvblN0YXJ0KTsKKyAgICBhdXRvIHBh
cmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rp
b25TdGFydCkpOworICAgIGlmICghc2VsZWN0aW9uU3RhcnRCb3VuZGFyeSB8fCAhcGFyYWdyYXBo
U3RhcnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudCh7ICpw
YXJhZ3JhcGhTdGFydCwgKnNlbGVjdGlvblN0YXJ0Qm91bmRhcnkgfSk7CiB9CiAKIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
U3RyaW5nVmlldyBzdHJpbmcsIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBjb3JlQ2hlY2tp
bmdUeXBlcywgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbikKIHsKLSAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50
S2V5IDogIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluc2VydGlvblBvaW50
RnJvbUN1cnJlbnRTZWxlY3Rpb24oY3VycmVudFNlbGVjdGlvbildIH07CisgICAgTlNEaWN0aW9u
YXJ5ICpvcHRpb25zID0gQHsgTlNUZXh0Q2hlY2tpbmdJbnNlcnRpb25Qb2ludEtleSA6IEAoaW5z
ZXJ0aW9uUG9pbnRGcm9tQ3VycmVudFNlbGVjdGlvbihjdXJyZW50U2VsZWN0aW9uKSkgfTsKICAg
ICByZXR1cm4gY29yZShbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tT
dHJpbmc6c3RyaW5nLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSByYW5nZTpO
U01ha2VSYW5nZSgwLCBzdHJpbmcubGVuZ3RoKCkpIHR5cGVzOihuc1RleHRDaGVja2luZ1R5cGVz
KGNvcmVDaGVja2luZ1R5cGVzKSB8IE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRp
b25zOm9wdGlvbnMgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdLCBjb3JlQ2hlY2tpbmdUeXBlcyk7
CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWls
JiBncmFtbWFyRGV0YWlsKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBjb3JyZWN0aW9ucyA9IFtO
U011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1t
YXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7IGkrKykgewotICAgICAgICBOU1N0cmluZyogZ3Vlc3Mg
PSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmpl
Y3Q6Z3Vlc3NdOworICAgIE5TTXV0YWJsZUFycmF5ICpjb3JyZWN0aW9ucyA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nl
cykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBb
Y29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KLSAgICBOU1Jhbmdl
IGdyYW1tYXJSYW5nZSA9IE5TTWFrZVJhbmdlKGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1t
YXJEZXRhaWwubGVuZ3RoKTsKLSAgICBOU1N0cmluZyogZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9
IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOwotICAgIE5TRGljdGlvbmFyeSogZ3JhbW1h
ckRldGFpbERpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdy
YW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlv
bnMsIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdOwotICAgIAotICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJp
bmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOworICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247
CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFu
Z2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAg
ICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAg
ICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucywKKyAgICB9OworICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdy
YW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGljdGlvbmFyeV07CiB9CiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNv
bnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCkBAIC0xMDgzLDcgKzEwNzcsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25z
dCBTdHJpbmcmIGNvbnRleAogICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IG5pbDsKICAgICBOU09y
dGhvZ3JhcGh5KiBvcnRob2dyYXBoeSA9IG5pbDsKICAgICBOU1NwZWxsQ2hlY2tlciAqY2hlY2tl
ciA9IFtOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwotICAgIE5TRGljdGlvbmFy
eSAqb3B0aW9ucyA9IEB7IE5TVGV4dENoZWNraW5nSW5zZXJ0aW9uUG9pbnRLZXkgOiAgW05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludGVnZXI6aW5zZXJ0aW9uUG9pbnRGcm9tQ3VycmVudFNl
bGVjdGlvbihjdXJyZW50U2VsZWN0aW9uKV0gfTsKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMg
PSBAeyBOU1RleHRDaGVja2luZ0luc2VydGlvblBvaW50S2V5IDogQChpbnNlcnRpb25Qb2ludEZy
b21DdXJyZW50U2VsZWN0aW9uKGN1cnJlbnRTZWxlY3Rpb24pKSB9OwogICAgIGlmIChjb250ZXh0
Lmxlbmd0aCgpKSB7CiAgICAgICAgIFtjaGVja2VyIGNoZWNrU3RyaW5nOmNvbnRleHQgcmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgY29udGV4dC5sZW5ndGgoKSkgdHlwZXM6TlNUZXh0Q2hlY2tpbmdUeXBl
T3J0aG9ncmFwaHkgb3B0aW9uczpvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTomb3J0aG9ncmFwaHkgd29yZENvdW50OjBd
OwogICAgICAgICBsYW5ndWFnZSA9IFtjaGVja2VyIGxhbmd1YWdlRm9yV29yZFJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGNvbnRleHQubGVuZ3RoKCkpIGluU3RyaW5nOmNvbnRleHQgb3J0aG9ncmFwaHk6
b3J0aG9ncmFwaHldOwpAQCAtMTExNiwyNCArMTExMCwyMCBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZQogICAgIGlmICghW21fd2ViVmlldyBzaG91bGRSZXF1ZXN0Q2FuZGlkYXRlc10pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKKyAgICBpZiAo
IXNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgRnJhbWUqIGZyYW1lID0gY29yZShbbV93ZWJWaWV3IF9zZWxlY3RlZE9yTWFpbkZyYW1lXSk7
CisKKyAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW21fd2ViVmlldyBfc2VsZWN0ZWRPck1haW5GcmFt
ZV0pOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbGFzdFNlbGVj
dGlvbkZvclJlcXVlc3RlZENhbmRpZGF0ZXMgPSBzZWxlY3Rpb247CiAKLSAgICBWaXNpYmxlUG9z
aXRpb24gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7Ci0gICAg
VmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rp
b25TdGFydCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaEVuZCA9IGVuZE9mUGFyYWdy
YXBoKHNlbGVjdGlvbkVuZCk7CisgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52
aXNpYmxlU3RhcnQoKTsKKyAgICBhdXRvIHNlbGVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgg
PSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNl
bGVjdGlvblN0YXJ0KSksICptYWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb25TdGFydCkgfSk7Cisg
ICAgYXV0byBzZWxlY3Rpb25MZW5ndGggPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQ
b2ludChzZWxlY3Rpb25TdGFydCksICptYWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb24udmlzaWJs
ZUVuZCgpKSB9KTsKIAotICAgIGludCBsZW5ndGhUb1NlbGVjdGlvblN0YXJ0ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNlbGVjdGlvblN0YXJ0
KS5nZXQoKSk7Ci0gICAgaW50IGxlbmd0aFRvU2VsZWN0aW9uRW5kID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNlbGVjdGlvbkVuZCkuZ2V0KCkp
OwotICAgIG1fcmFuZ2VGb3JDYW5kaWRhdGVzID0gTlNNYWtlUmFuZ2UobGVuZ3RoVG9TZWxlY3Rp
b25TdGFydCwgbGVuZ3RoVG9TZWxlY3Rpb25FbmQgLSBsZW5ndGhUb1NlbGVjdGlvblN0YXJ0KTsK
KyAgICBtX3JhbmdlRm9yQ2FuZGlkYXRlcyA9IE5TTWFrZVJhbmdlKHNlbGVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGgsIHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgbV9wYXJhZ3JhcGhDb250ZXh0
Rm9yQ2FuZGlkYXRlUmVxdWVzdCA9IHBsYWluVGV4dChmcmFtZS0+ZWRpdG9yKCkuY29udGV4dFJh
bmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpLmdldCgpKTsKIAogICAgIE5TVGV4dENoZWNraW5nVHlw
ZXMgY2hlY2tpbmdUeXBlcyA9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hl
Y2tpbmdUeXBlUmVwbGFjZW1lbnQgfCBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwpAQCAt
MTE5NSw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2Fu
ZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0IGEKICAgICBpZiAoW3ZpZXcg
aXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgewogICAgICAgICB1bnNpZ25lZCBy
ZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgp
OwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICBOU1Jh
bmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5sb2NhdGlv
biwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJhbmdl
ID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUucmFuZ2UubG9jYXRpb24sIHJlcGxhY2Vt
ZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ugc29mdFNwYWNlUmFuZ2UgPSBOU01ha2VS
YW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0gMSwgMSk7CiAgICAgICAgICAgICBpZiAo
YWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoIiAiKSkKICAgICAgICAgICAg
ICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFu
Z2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
YmMzYmViZGYyNjJmYTRlY2ZiMDE4NzhiM2MyYjBjNTVjM2VhOTAxNS4uYjkxYTg3MTQxM2EyNmYx
YTkzNjc5NTgzZWQzZWE3Zjg3NDUxMDRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MjEsMTAgKzgyMSw5IEBAIC0gKFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKIAogLSAoUmVmUHRy
PFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5n
ZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8KIHsK
LSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgYXV0byByYW5nZSA9IFdl
YkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8
IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIG5z
cmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CiAKICAgICBpZiAocmFu
Z2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgewog
ICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRo
IGlzIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAtODM1LDI0ICs4MzQsMTgg
QEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
bnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBw
S2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgICAgICBhdXRvKiBlbGVtZW50ID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3Ro
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVu
dHMoKmVsZW1lbnQpLCAqcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0
aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CiAKLSAgICBjb25zdCBh
dXRvJiBzZWxlY3Rpb24gPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rp
b24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBwYXJhZ3JhcGhS
YW5nZSA9IG1ha2VSYW5nZShzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQo
KSksIHNlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwotICAgIGlmICghcGFyYWdyYXBoUmFuZ2UpCisg
ICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3Jh
cGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCkpKTsKKyAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoUmFuZ2UuZ2V0KCktPnN0YXJ0Q29u
dGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBpbnQgcGFyYWdyYXBoU3RhcnRJ
bmRleCA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoV2ViQ29yZTo6UmFuZ2U6
OmNyZWF0ZShyb290Tm9kZS5kb2N1bWVudCgpLCAmcm9vdE5vZGUsIDAsICZwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpLnB0cigp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBzdGF0aWNfY2FzdDxpbnQ+
KG5zcmFuZ2UubG9jYXRpb24pLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9
IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVy
LT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1v
dmUoc2NvcGVFbmQpIH0sICpyYW5nZSkpOwogfQogCiAtIChET01SYW5nZSAqKV9jb252ZXJ0TlNS
YW5nZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVkZGYyM2VjZjNjYmE1YjliYzllYTlmMjZlZWRjZjAz
Nzk5NTY4OGMuLjZmOTFlZmI5YTkwMWFlMWNjYmFlNTZjOWIyZmQ5OWMxNDA5OTUyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTcyNzgsMTIgKzcy
NzgsOSBAQCBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNr
aW5nVHlwZShOU1RleHRDaGVja2luZ1R5cGUgdHlwZQogCiBzdGF0aWMgV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdChO
U1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5n
ZSA9IG5zUmVzdWx0LnJhbmdlOwotCiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKG5zUmVzdWx0LnJl
c3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwot
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgcmVzdWx0LnJhbmdl
ID0gKldlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2M2UyODlhMGY5MzU5MjA5NGNmMWFmOGU3ZGZlNTI2MDczYzI4
NDdjLi5iYzBiOTU5ODExMTUxNWZhNTViNTQ3NzRmZmMzZmNiNTM5YTU1ZGVjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAgQEAKKzIwMjAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBv
ZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAyMDIwLTAzLTIyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBNYWMgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25z
L3RpbWluZy1tb2RlbC90aW1lbGluZXMvdXBkYXRlLWFuZC1zZW5kLWV2ZW50cy1yZXBsYWNlbWVu
dC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1jb250cmFjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9zcGVsbGluZy9hdXRvY29ycmVjdGlvbi1jb250cmFjdGlv
bi1leHBlY3RlZC50eHQKaW5kZXggNjM4MWUyNjNkYmQ0ZGFjNDBjYWU5MWVjYmUyZjFmZmJjZTlh
MzE5Yy4uYWJmM2Q1NTBhMDg3ZGFhOTFiMDVjOTI4Zjc0ODA4ODk3NDBjZWZiZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJh
Y3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL3NwZWxsaW5n
L2F1dG9jb3JyZWN0aW9uLWNvbnRyYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMTUxLDIxICsxNTEs
OCBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA2IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNiBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDcgb2YgI3Rl
eHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4g
RElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA2IG9m
ICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6d291bGQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NiBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0
aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25UeXBlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDcgb2YgI3RleHQgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA2IG9mICN0ZXh0ID4gRElWID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNiBvZiAjdGV4dCA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNyBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQg
PiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOCBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDYgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDggb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4
IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOCBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA5IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gOSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCkBA
IC0xODYsNiArMTczLDE5IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEzIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTMgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTQgb2YgI3RleHQgPiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxNCBvZiAjdGV4dCA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpy
YW5nZSBmcm9tIDE0IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMTQgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDYgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0VGV4dDp3b3VsZCByZXBs
YWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byA2IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblR5cGVkCitFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTQgb2Yg
I3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxNCBvZiAjdGV4
dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NiBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTQg
b2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxNCBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gNiBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
RElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+
IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEzIG9mICN0ZXh0ID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTMgb2YgI3RleHQgPiBESVYgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTQgb2Yg
I3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxNCBvZiAjdGV4
dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0Rp
ZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDE0IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMTQgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394316</attachid>
            <date>2020-03-23 15:55:34 -0700</date>
            <delta_ts>2020-03-27 14:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200323155533.patch</filename>
            <type>text/plain</type>
            <size>136406</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIwYTNlMzhlY2FkMmMx
YmFjZGFiNWJkNzk3MDhjNDE2NjMyZjE1YS4uNDlhNjVjMTM5ZmRiMWQ2NzI0NWZlMjFiZTJlNTQw
NmI5MjdlYTg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yMyAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGggdG8gbm90IHJlcXVpcmUgYSBsaXZlIHJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZlNWRmMzg3ODIzMTVk
ZmMzZjc3MmI4MmY4MGQ0YzE0NTBmNWQ1NmMuLjA2YTY2NmZmNTBhMzkzMmMzMzdhNzk4NWIyZDhh
ZGIxMjk4MWU3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjAtMDMtMjIgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDIwLTAzLTIzICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aCB0byBub3QgcmVxdWlyZSBhIGxpdmUgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCBkOTFiZTk4ZGE5NjRkMjI1NGM3ZWQxNzFkNjkzNjJiMjYwNTA4OGZlLi40NDBjOGJjNmNj
NDBlNmUzYjdkZTk2OGEwYzk0NWI2Yjg2ZDExZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCiAyMDIwLTAzLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGFuZ2UgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCB0byBub3QgcmVxdWlyZSBh
IGxpdmUgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDlmNTU2NTQ2ZjhkNmRjODE3ZGJkNGQ4
NjMzM2ViMTQ1OGE4MmNlZDkuLmQ5OWM0MDM0ZTFjZDZmZWE1ZjkwZDY3NDE2MTUzOWU5OWRhYjg3
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDg2LDYgKzQ4Niw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFJlZ2lzdHJ5LmgKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzLmgKIAorICAgIGVkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaAogICAgIGVkaXRpbmcvQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgK
ICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2E1NWE0MWU5MWZmZGYx
NmU5ZTUzOGY2ZjYzZDMzZWUxNzU2NWVjLi4xNDFiNGI5ZTNmOTVlYWY3MmRmMjgyYzBhNDMyMDdm
ZjQ3YWQwOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNzMzLDYgKzI3MzMsNyBAQAogCQk5M0YxOUIxNzA4MjQ1RTU5MDAx
RTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vjb3Jl
LmR5bGliICovOyB9OwogCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
MUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKIAkJOTNG
MUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QkYxMkQ1MzM1NjAwODMy
QkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovOyB9OworCQk5M0YyQ0M5MzI0MjdGQjlDMDA1
ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVD
QjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCTkzRjkyNTQzMEY3RUY1QjgwMDdF
MzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9u
R3JvdXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0
IC8qIEpTQ29tbWVudC5oICovOyB9OwpAQCAtMTA5MzIsNiArMTA5MzMsNyBAQAogCQk5M0YxRDVC
OTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTExvc2VDb250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1MzM1NjAwODMyQkVD
IC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYkdMTG9zZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
MkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbnRleHRFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVCMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNzU3LDYgKzIxNzU5LDcgQEAKIAkJCQk5MzMwOUQ4QzA5OUU2NDkxMDA1
NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAogCQkJCUY0RDk4MTdFMjE5NUZC
RjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwICovLAogCQkJCUY0RDk4MTdE
MjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAqLywKKwkJCQk5M0Yy
Q0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLywKIAkJCQk3QzNBOTFF
NTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCiAJCQkJOTMz
MDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCAqLywKIAkJ
CQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLywK
QEAgLTI5NjM3LDYgKzI5NjQwLDcgQEAKIAkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyog
Q2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTAwOTlERjAy
NzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NTkyRjc4
MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAz
RUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4
MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZDgzMTA3NWNk
MzExZDk1MmMyYjE4NjU5YmZlMzQ4NTRlYTE3Yzc1Yi4uZDU2MjkwOWZmZDIxZDU4NDZhMzc0OGE0
NzRkNmUzOWNlYThhNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KQEAgLTIzMzgsMTEgKzIzMzgsMTAgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZToo
UmFuZ2UgKilsaXZlUmFuZ2UKIAogLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6
KE5TUmFuZ2UpbnNyYW5nZQogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkK
KyAgICBhdXRvIHJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOworICAgIGlmICgh
cmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+
IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCkK
LSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgCisKICAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBv
bmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAvLyBjb25jZW50cmF0ZSBvbiBh
IGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBk
byB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3Ig
dGhvc2UgaXMgbm90CkBAIC0yMzUyLDcgKzIzNTEsOSBAQCAtIChSZWZQdHI8UmFuZ2U+KV9jb252
ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgRWxlbWVudCogc2VsZWN0aW9u
Um9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50KCk7CiAgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2Nh
dGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIGlmICghc2NvcGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdl
KG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCAqcmFuZ2UpKTsKIH0KIAog
Ly8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2Vu
dGluZyBhIFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA4NTkyZjA3MDc4M2RmNWFkMTgzODI3OTRlNWFlOWFm
OThjMGVmMmIzLi5hM2Y1M2M4ZTFlYTM2MzRjNGE4ZTViMDkyYWE4ZjM3MjAwYmZiZjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTA5OCw5ICsxMDk4LDkg
QEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlc3VsdHMu
c2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07
Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVz
dWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0
eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQucmFuZ2Uu
bG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkpOwogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVT
LCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxl
bmd0aCkpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5T
TWFrZVJhbmdlKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQu
cmFuZ2UubGVuZ3RoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0z
NjgwLDE5ICszNjgwLDIxIEBAIC0gKGlkKV90ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0
ZXh0SW5kZXgKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRv
Y3VtZW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gdGV4
dFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIHRleHRJbmRleCwgMCk7Ci0gICAgaWYgKCF0ZXh0UmFuZ2Ug
fHwgIXRleHRSYW5nZS0+Ym91bmRhcnlQb2ludHNWYWxpZCgpKQorCisgICAgYXV0byogZG9jdW1l
bnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBD
aGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0
ZXJPZmZzZXRGb3JSYW5nZSh0ZXh0UmFuZ2UsIHRydWUpOwotICAgICAgICByZXR1cm4gW3NlbGYg
dGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwotICAgIH0KLSAg
ICByZXR1cm4gbmlsOworCisgICAgYXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
YXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBhdXRvIGJvdW5kYXJ5ID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgdGV4dEluZGV4KTsKKyAgICBh
dXRvIGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9y
UmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHsgYm91bmRhcnksIGJvdW5kYXJ5IH0pLCB0cnVlKTsKKyAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZz
ZXRdOwogfQogCiAvLyBUaGUgUlRGIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0
ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggZjRlNTE3NTAxMWE3
YWY4MDQyOWQ2MmQ2MTE5YzA4MzkwM2NmYTNkOC4uZTEzZTMzYzhmYTZkODJiNmY4YjZhMjM4NGQ5
NWE4YmY0ODE4MGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OmRldGFjaCgpCiAgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgPSB7IH07
CiB9CiAKLVZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNv
bGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByYW5nZSkKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+
PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gdGV4dFJhbmdlOwog
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcihyYW5nZSk7ICF0ZXh0SXRlcmF0b3Iu
YXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoKSkKQEAgLTY4LDEzICs2OCwxMyBAQCBWZWN0
b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJh
bmdlcyhjb25zdCBSYW5nZSYgcgogICAgIHJldHVybiB0ZXh0UmFuZ2U7CiB9CiAKLXZvaWQgRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQordm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24pCiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJh
bmdlKSkKICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9j
dW1lbnRNYXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVu
ZE9mZnNldCgpLCBkZXNjcmlwdGlvbikpOwogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUg
dHlwZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlKQogewogICAg
IGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAg
IGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKHR5
cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSkpOwpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0
YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiByCiAgICAgfQogfQogCi12
b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKFJh
bmdlJiByYW5nZSwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCit2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCiB7CiAgICAgZm9yIChh
dXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAgYWRkTWFy
a2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIoRG9jdW1lbnRN
YXJrZXI6OkRpY3RhdGlvblJlc3VsdCwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGll
Y2UtPmVuZE9mZnNldCgpLCBTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSwgbWV0YWRhdGEpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2
OWUyNTRkNWU3MmYxNTc2YzMxZGMxN2NlZjhiNmZjNzg4OWE3ZWM0Li4zNjJkNzQ3NDM0OWU0YmNm
OGIzNjM5Y2RmNDEyY2E3OWEzYzhiMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIE5vZGU7CiBjbGFz
cyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiAKK3N0cnVjdCBTaW1wbGVS
YW5nZTsKKwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTQ4LDE1ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgfkRvY3VtZW50
TWFya2VyQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBkZXRhY2goKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1w
bGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAg
IHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6OkRh
dGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3Qg
UmFuZ2UmLCBib29sIGFjdGl2ZU1hdGNoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlv
bnMsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaW50ZXJwcmV0YXRpb25zKTsKLSAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihS
YW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKKyAgICB2b2lkIGFkZERpY3Rh
dGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4m
IG1ldGFkYXRhKTsKICNlbmRpZgogICAgIHZvaWQgYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIoUmFu
Z2UmKTsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IGFkZE1hcmtlcihOb2RlJiwgY29uc3QgRG9jdW1lbnRNYXJrZXImKTsKLSAgICBWZWN0b3I8UmVm
UHRyPFJhbmdlPj4gY29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmKTsKKyAgICBWZWN0b3I8
UmVmUHRyPFJhbmdlPj4gY29sbGVjdFRleHRSYW5nZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI+IE1hcmtlckxpc3Q7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxp
c3Q+PiBNYXJrZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDk5M2U5NTFmMWE1MGE0ZGJh
OWY5M2MxZTgxZmU1ZTJiMTdhZTdmOTguLmMyOGU3MDZiMTA1NmY2ZWE1ZTkwNDlkMDBhNDYyY2Qz
YTVhMTI3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogLy8gRklYTUU6
IENvbnNpZGVyIHJlbmFtaW5nIHRoaXMgdG8gIm1ha2UiIGluc3RlYWQgb2YgImNyZWF0ZSIgc2lu
Y2Ugd2Ugbm9ybWFsbHkgdXNlICJjcmVhdGUiIGZvciBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBo
ZWFwIG9iamVjdHMuCiBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSos
IHVuc2lnbmVkIG9mZnNldCk7Ci1Qb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Y29uc3QgQm91bmRhcnlQb2ludCYpOworV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRp
b24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggYjRmZTJiODVkM2FmODVj
YjgzMDc4ZDdhOWU1MTIxN2YxNDA1MDM2YS4uYTQzMzhhYjIwZmM1MmYyZmYyN2RjYjViNzAyMDhh
N2Y3YjMwNjI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01Myw0ICs1Mywy
MyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJh
bmdlJiBiKQogICAgIHJldHVybiBhLnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7
CiB9CiAKKy8vIEZJWE1FOiBOb2RlOjppc0NoYXJhY3RlckRhdGEgc2hvdWxkIHVzZSBhbiBhbGdv
cml0aG0gbGlrZSB0aGlzLCBzaW5jZSBJJ20gYXNzdW1pbmcgaXQncyBmYXN0ZXIgdGhhbiB0aGUg
aXNDaGFyYWN0ZXJEYXRhTm9kZSB2aXJ0dWFsIGNhbGwgaW4gbW9zdCBjYXNlcy4KK3N0YXRpYyBi
b29sIGZhc3RJc0NoYXJhY3RlckRhdGEoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4g
IW5vZGUuaXNDb250YWluZXJOb2RlKCkgJiYgKG5vZGUuaXNUZXh0Tm9kZSgpIHx8IG5vZGUuaXND
aGFyYWN0ZXJEYXRhTm9kZSgpKTsKK30KKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIE5vZGU6
Omxlbmd0aCBzaW5jZSB0aGUgRE9NIHNwZWNpZmljYXRpb24gY2FsbHMgdGhpcyBhIG5vZGUncyBs
ZW5ndGguCitzdGF0aWMgdW5zaWduZWQgbGVuZ3RoKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAg
aWYgKGZhc3RJc0NoYXJhY3RlckRhdGEobm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxD
aGFyYWN0ZXJEYXRhPihub2RlKS5sZW5ndGgoKTsKKyAgICByZXR1cm4gbm9kZS5jb3VudENoaWxk
Tm9kZXMoKTsKK30KKworU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIHsgeyBub2RlLCAwIH0sIHsgbm9kZSwgbGVuZ3Ro
KG5vZGUpIH0gfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBs
ZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBhY2Q5ODU1
YTg5MTljMzc2ZTE1N2QxY2VkOWM1ZGVlZDdhMTk1NzI0Li5iZDBlMWM0ZWNkMGEwMTg0MzdmMTk5
MDQ2ZTU1N2RjYTJjYzI3MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNTEsNiAr
NTEsOSBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2UgewogICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxS
YW5nZT4mKTsKIH07CiAKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYp
OworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKE5vZGUmKTsKKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKIAogaW5saW5lIFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBS
ZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGViZDRjYWIzMjZmMmMwOTc1NTQwY2IxZDZm
OWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2ZGQwYjNiNzhkZGJkMzIyYzMxMzM0ZTY4ODA2Zjk4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1OTksMTggQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAog
ICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZS5jbG9uZVJhbmdlKCks
IGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKIAogICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBt
b2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVn
emlsbGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgodHJlZVNj
b3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBoT2Zmc2V0SW5UcmVlU2NvcGUsIGNvcnJlY3Rpb25PZmZz
ZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBpZiAoIXVwZGF0ZWRQ
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQorICAgIGF1dG8gdXBkYXRlZFBhcmFn
cmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24gPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24o
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHRyZWVTY29wZVJvb3QpLCBwYXJhZ3JhcGhP
ZmZzZXRJblRyZWVTY29wZSk7CisgICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmlu
Z0NvcnJlY3Rpb24gPSBtYWtlQm91bmRhcnlQb2ludChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpOworICAgIGlmICghdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdD
b3JyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpOwotICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBj
b3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBD
aGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSBhbHRlcm5h
dGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiwgKnVw
ZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVjdGlvbiB9LCB7IGNvcnJlY3Rpb25PZmZz
ZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRlZC4KLSAgICBpZiAocGxh
aW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpICE9IGFsdGVybmF0aXZlKQorICAgIGlmIChw
bGFpblRleHQocmVwbGFjZW1lbnRSYW5nZSkgIT0gYWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdlLT5vd25lckRvY3VtZW50
KCkubWFya2VycygpOworICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdlLnN0YXJ0
LmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGZvciAoYXV0byBtYXJrZXJUeXBlIDogbWFya2Vy
VHlwZXNUb0FkZCkKICAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZSwg
bWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KGFs
dGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiYjkyYzAyMTIxYTNiN2IzOTJmNTI5ZjhhYjc2
ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhhZDI1MTI5NmI0MzkyYjZhOWJjNjdmNWViMGQ4YTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMjgz
LDEyICsyODMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRp
dGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJh
Z3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAgewotICAgICAg
ICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKHNjb3BlLmdldCgpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgYXV0byBlbmRS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUuZ2V0
KCksIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFu
Z2UpCi0gICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgIH0KKyAgICBhdXRvIHN0YXJ0UG9z
aXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0
aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBzdGFydEluZGV4LCBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwor
ICAgIGF1dG8gZW5kUG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2
ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUp
LCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMpKTsKKyAgICB1cGRhdGVTdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
bik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JD
cmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9DaGFyYWN0ZXJSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMWFlZGJmZjM3MmFiZjliN2ZkMmEy
NmVmMzc3Y2ViY2I1ZDJmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NoYXJhY3RlclJhbmdlLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKKyNpZiBVU0UoRk9VTkRBVElPTikKK3R5cGVkZWYgc3RydWN0IF9OU1Jh
bmdlIE5TUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBDaGFy
YWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OworCitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgeworICAg
IENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9OworICAgIENoYXJhY3RlckNvdW50IGxlbmd0
aCB7IDAgfTsKKworI2lmIFVTRShDRikKKyAgICBvcGVyYXRvciBDRlJhbmdlKCkgY29uc3Q7Cisj
ZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIG9wZXJhdG9yIE5TUmFuZ2UoKSBjb25z
dDsKKyNlbmRpZgorfTsKKworI2lmIFVTRShDRikKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBt
YWtlQ2hhcmFjdGVyUmFuZ2UoQ0ZSYW5nZSk7CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9O
KQorT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlKTsK
KyNlbmRpZgorCisvLyBpbmxpbmVzCisKKyNpZiBVU0UoQ0YpCisKK2lubGluZSBDaGFyYWN0ZXJS
YW5nZTo6b3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENGUmFuZ2VNYWtl
KGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+
IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5nZS5s
b2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCB8fCByYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NF
UlQocmFuZ2UubGVuZ3RoID49IDApOworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA8IDAgfHwgcmFu
Z2UubGVuZ3RoIDwgMCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
Q2hhcmFjdGVyUmFuZ2UgeyBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubG9jYXRp
b24pLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubGVuZ3RoKSB9OworfQorCisj
ZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorCitpbmxp
bmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKworaW5saW5lIE9wdGlvbmFsPENo
YXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gQ2hhcmFjdGVyUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiwgcmFuZ2Uu
bGVuZ3RoIH07Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDE1NGJi
ODdjMzMxZDQxZDkxNjE2MmU3ZDkxMTBkNDc4ODI3ZDFjNzAuLjQ2YzI1MTcyZWIyYmVkYWYyNWU3
OTMyM2Y1YmYzODIzOWNhMTBhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0
T2ZQYXJhZ3JhcAogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGRlc3RpbmF0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaW50IHN0YXJ0SW5kZXggPSAtMTsKLSAgICBp
bnQgZW5kSW5kZXggPSAtMTsKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gc3RhcnRJbmRl
eDsKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gZW5kSW5kZXg7CiAgICAgYm9vbCBvcmln
aW5hbElzRGlyZWN0aW9uYWwgPSBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCk7CiAg
ICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmICFlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkg
ewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9u
KCkudmlzaWJsZVN0YXJ0KCk7CkBAIC0xNTI4LDE2ICsxNTI4LDE1IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRP
ZlBhcmFncmFwCiAgICAgaWYgKHN0eWxlSW5FbXB0eVBhcmFncmFwaCAmJiBzZWxlY3Rpb25Jc0Vt
cHR5UGFyYWdyYXBoKQogICAgICAgICBhcHBseVN0eWxlKHN0eWxlSW5FbXB0eVBhcmFncmFwaC5n
ZXQoKSk7CiAKLSAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAhPSAtMSkg
eworICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFydEluZGV4ICYmIGVuZEluZGV4KSB7
CiAgICAgICAgIC8vIEZyYWdtZW50IGNyZWF0aW9uICh1c2luZyBjcmVhdGVNYXJrdXApIGluY29y
cmVjdGx5IHVzZXMgcmVndWxhcgogICAgICAgICAvLyBzcGFjZXMgaW5zdGVhZCBvZiBuYnNwcyBm
b3Igc29tZSBzcGFjZXMgdGhhdCB3ZXJlIHJlbmRlcmVkICgxMTQ3NSksIHdoaWNoCiAgICAgICAg
IC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRp
b24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2Yg
dGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJh
bmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRp
dGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7
Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJ
bmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdGFydCAmJiBlbmQpCi0gICAgICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydC0+c3RhcnRQb3NpdGlvbigp
LCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFs
KSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRp
dGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAgICBhdXRv
IGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5h
dGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFy
dCwgZW5kLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwgfSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCA2MDQ3Yjk0NjQzZTNkNWVhNTczYWZi
ZGNmNjc2YjIwMTFhYzg3NWY3Li5kZmJhNzIxZjVlYWQzYTIwM2VkNmY2NGI5YmMwNWVhZDIzOWVj
MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTExMTQsMTIgKzExMTQsMTAg
QEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kKIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7Ci0gICAgYXV0
byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUs
IGluZGV4LCAwLCB0cnVlKTsKLSAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRleC4gQ2Vy
dGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2UgCi0gICAg
Ly8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucy4KLSAgICBpZiAoIXJhbmdlKQorICAgIGlmICghc2NvcGUpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSB9Owor
ICAgIENoYXJhY3RlckNvdW50IGluZGV4QXNDaGFyYWN0ZXJDb3VudCA9IGluZGV4OworICAgIHJl
dHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIGluZGV4QXNDaGFyYWN0
ZXJDb3VudCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpKSB9OwogfQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhV
c2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA0M2FjMGZjMDEwOTUyYmFjNGYxMDZlMmJiOWQ1MGFlNzRlZjdm
YTI1Li5iNjk0ODlmNzY1NzVkNWZhMjgzYmVjYWQwNGM5MTJlZWQ5MGRjOTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjIzLDE1ICsyMjIzLDE1IEBAIHZvaWQgRWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICBO
b2RlJiBzZWFyY2hFbmROb2RlQWZ0ZXJXcmFwID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+ZW5kQ29u
dGFpbmVyKCk7CiAgICAgaW50IHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmVuZE9mZnNldCgpOwogICAgIAotICAgIGludCBtaXNzcGVsbGluZ09mZnNldCA9
IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOwogICAgIEdyYW1t
YXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IDA7
CisgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IDA7CiAgICAgUmVmUHRy
PFJhbmdlPiBncmFtbWFyU2VhcmNoUmFuZ2U7CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7
CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogCiAgICAgYm9vbCBpc1NwZWxsaW5nID0gdHJ1
ZTsKLSAgICBpbnQgZm91bmRPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IGZvdW5kT2Zm
c2V0ID0gMDsKICAgICBTdHJpbmcgZm91bmRJdGVtOwogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RN
aXNzcGVsbGluZ1JhbmdlOwogICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsK
QEAgLTIzMDcsMTAgKzIzMDcsMTAgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBwYW5lbCwgYW5kIHN0
b3JlIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIGdyZWVuIHNxdWlnZ2xlIGxhdGVyLgogICAgICAg
ICAKICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkgPiAwKTsKLSAgICAg
ICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gIT0gLTEgJiYgZ3JhbW1hckRldGFpbC5s
ZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRSA0ODU5MTkwOiBUaGlzIGdldHMgY29uZnVz
ZWQgd2l0aCBkb3VibGVkIHB1bmN0dWF0aW9uIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGgKLSAg
ICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpncmFt
bWFyU2VhcmNoUmFuZ2UsIGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLmxvY2F0
aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpncmFtbWFyU2VhcmNoUmFuZ2UsIHsgZ3JhbW1hclBo
cmFzZU9mZnNldCArIGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwu
cmFuZ2UubGVuZ3RoIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKGJhZEdyYW1tYXJSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAg
ICAgCkBAIC0yMzIyLDcgKzIzMjIsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIFdlIGZvdW5kIGEg
bWlzc3BlbGxpbmcsIGJ1dCBub3QgYW55IGVhcmxpZXIgYmFkIGdyYW1tYXIuIFNlbGVjdCB0aGUg
bWlzc3BlbGxpbmcsIHVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwsIGFuZCBzdG9yZQogICAgICAg
ICAvLyBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSByZWQgc3F1aWdnbGUgbGF0ZXIuCiAgICAgICAg
IAotICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdl
KHNwZWxsaW5nU2VhcmNoUmFuZ2UsIG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVsbGVkV29yZC5s
ZW5ndGgoKSk7CisgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCB7IG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVs
bGVkV29yZC5sZW5ndGgoKSB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CiAg
ICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApA
QCAtMjc3Myw3ICsyNzczLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VSYW5nZUZvclNwZWxsQ2hl
Y2tpbmcoUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHIKICAgICBTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VUb1JlcGxhY2UsIHJlcGxhY2VtZW50KS0+
YXBwbHkoKTsKIH0KIAotc3RhdGljIHZvaWQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5n
VGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmFncmFwaCYgcGFyYWdyYXBoLCBS
YW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGludCByZXN1
bHRMb2NhdGlvbiwgaW50IHJlc3VsdExlbmd0aCkKK3N0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNo
ZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50LCBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiwgQ2hhcmFjdGVyQ291bnQgcmVz
dWx0TGVuZ3RoKQogewogICAgIGF1dG8mIHNjb3BlID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4o
cGFyYWdyYXBoLnBhcmFncmFwaFJhbmdlKCkuc3RhcnRDb250YWluZXIoKS5yb290Tm9kZSgpKTsK
IApAQCAtMjc4NiwxMCArMjc4Niw5IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5n
UHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhCiAgICAgLy8g
VGV4dENoZWNraW5nUGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kIG11dGF0ZWQgRE9NLgogICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1Piwg
aHR0cDovL3dlYmtpdC5vcmcvYi84OTUyNi4KIAotICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdy
YXBoUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZzY29w
ZSwgcGFyYWdyYXBoTG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2VtZW50Lmxlbmd0
aCgpIC0gcmVzdWx0TGVuZ3RoKTsKLQotICAgIGF1dG8gc3BlbGxDaGVja2luZ1JhbmdlID0gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCBy
ZXBsYWNlbWVudC5sZW5ndGgoKSk7Ci0gICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdy
YXBoKHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVmKCksIHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5
UmVmKCksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIG5ld1BhcmFncmFwaFJh
bmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhzY29wZSksIHsgcGFyYWdyYXBoTG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2Vt
ZW50Lmxlbmd0aCgpIC0gcmVzdWx0TGVuZ3RoIH0pOworICAgIGF1dG8gc3BlbGxDaGVja2luZ1Jh
bmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG5ld1BhcmFncmFwaFJhbmdlLCB7IHJlc3VsdExv
Y2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKKyAgICBwYXJhZ3JhcGggPSBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGgoY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0
ZUxpdmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2UobmV3UGFyYWdy
YXBoUmFuZ2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNw
ZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykKQEAgLTI4MTEsNyArMjgxMCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRl
CiAjZW5kaWYKIAogICAgIC8vIEV4cGFuZCB0aGUgcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBw
YXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNraW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0Lgot
ICAgIGludCBzZWxlY3Rpb25PZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IHNlbGVjdGlv
bk9mZnNldCA9IDA7CiAgICAgYm9vbCB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IGZhbHNl
OwogICAgIGJvb2wgc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOwogICAgIGJvb2wgcmVzdG9yZVNl
bGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yODIzLDkgKzI4MjIsOSBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgICAgICBzZWxlY3Rp
b25PZmZzZXQgPSBwYXJhZ3JhcGgub2Zmc2V0VG8oY2FyZXRQb3NpdGlvbikucmVsZWFzZVJldHVy
blZhbHVlKCk7CiAgICAgICAgICAgICByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVl
OwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNl
dCA+IHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0
aW9uT2Zmc2V0IC0gMSkgPT0gbmV3bGluZUNoYXJhY3RlcikpCisgICAgICAgICAgICBpZiAoc2Vs
ZWN0aW9uT2Zmc2V0ID4gMCAmJiAoc2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHQoKS5s
ZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdID09IG5ld2xp
bmVDaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgIGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFw
aEJvdW5kYXJpZXMgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAg
JiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgJiYgaXNBbWJpZ3Vv
dXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgudGV4dENoYXJBdChzZWxlY3Rpb25PZmZzZXQg
LSAxKSkpCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25P
ZmZzZXQgPD0gcGFyYWdyYXBoLnRleHQoKS5sZW5ndGgoKSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5
Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0IC0gMV0pKQogICAgICAg
ICAgICAgICAgIHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI4MzMsMTQgKzI4MzIsMTQgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNl
Rm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAg
ICBpbnQgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewotICAgICAgICBjb25zdCBpbnQgc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0g
cmVzdWx0c1tpXS50eXBlOwotICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKLSAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJD
b3VudCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5
cGUgPSByZXN1bHRzW2ldLnR5cGU7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0
aW9uID0gcmVzdWx0c1tpXS5yYW5nZS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7
CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ucmFuZ2Uu
bGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3Vs
dExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0
aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJl
c3VsdHNbaV0ucmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1i
aWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25P
ZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOworICAgICAgICBib29sIHJlc3VsdEVuZHNB
dEFtYmlndW91c0JvdW5kYXJ5ID0gdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0
aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRFbmRMb2NhdGlvbjsKIAogICAgICAgICAvLyBPbmx5IG1h
cmsgbWlzc3BlbGxpbmcgaWY6CiAgICAgICAgIC8vIDEuIEN1cnJlbnQgdGV4dCBjaGVja2luZyBp
c24ndCBkb25lIGZvciBhdXRvY29ycmVjdGlvbiwgaW4gd2hpY2ggY2FzZSBzaG91bGRNYXJrU3Bl
bGxpbmcgaXMgZmFsc2UuCkBAIC0yODUwLDE2ICsyODQ5LDE2IEBAIHZvaWQgRWRpdG9yOjptYXJr
QW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVj
dG9yPFRlCiAgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWwgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZwog
ICAgICAgICAgICAgJiYgcmVzdWx0TG9jYXRpb24gPj0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQo
KSAmJiByZXN1bHRFbmRMb2NhdGlvbiA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1
bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExl
bmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICBhdXRvIG1pc3Nw
ZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExl
bmd0aCk7CisgICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pOwogICAgICAgICAgICAgaWYg
KCFtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1p
c3NwZWxsaW5nUmFuZ2UpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
bWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCByZXBs
YWNlbWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0
VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRp
b24sIHJlc3VsdExlbmd0aCB9KSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+
IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFp
bCA6IHJlc3VsdHNbaV0uZGV0YWlscykgewotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwu
bGVuZ3RoID4gMCAmJiBkZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLmxv
Y2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGJhZEdy
YW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5s
b2NhdGlvbiwgZGV0YWlsLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5y
YW5nZS5sZW5ndGggPiAwICYmIGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1bHRMb2NhdGlv
biArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZSh7IHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2Uu
bGVuZ3RoIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwg
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC51c2VyRGVzY3JpcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI4NzcsNyArMjg3Niw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAvLyAyLiBUaGUgcmVzdWx0IGRvZXNuJ3QgZW5k
IGF0IGFuIGFtYmlndW91cyBib3VuZGFyeS4KICAgICAgICAgICAgIC8vICAgIChGSVhNRTogdGhp
cyBpcyByZXF1aXJlZCB1bnRpbCA2ODUzMDI3IGlzIGZpeGVkIGFuZCB0ZXh0IGNoZWNraW5nIGNh
biBkbyB0aGlzIGZvciB1cwogICAgICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgPiAwICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeTsKLSAg
ICAgICAgICAgIGF1dG8gcmFuZ2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0
TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBsYWNl
ID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsK
IAogICAgICAgICAgICAgLy8gQWRkaW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9ubHkgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhleSBhcmUgdHlwZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rICYmIHNlbGVjdGlvbk9mZnNldCAhPSByZXN1bHRFbmRM
b2NhdGlvbiArIDEpCkBAIC0yOTIyLDcgKzI5MjEsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFNraXAgYWxsIG90aGVy
IHJlc3VsdHMgZm9yIHRoZSByZXBsYWNlZCB0ZXh0LgotICAgICAgICAgICAgICAgIHdoaWxlIChp
ICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLmxvY2F0aW9uICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKKyAgICAgICAgICAgICAgICB3aGls
ZSAoaSArIDEgPCByZXN1bHRzLnNpemUoKSAmJiByZXN1bHRzW2kgKyAxXS5yYW5nZS5sb2NhdGlv
biArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0gcmVzdWx0TG9jYXRpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGkrKzsKIAogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVl
OwpAQCAtMjkzMSw3ICsyOTMwLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNv
bnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ICs9IHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gcmVz
dWx0TGVuZ3RoOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZTo6Q29ycmVjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2Vt
ZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0g
cGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgp
IH0pOwogICAgICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6QWNjZXB0
ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFJhbmdlLnB0cigpKTsKIAogICAgICAgICAg
ICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5
IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgpAQCAtMjk0NSw4ICsyOTQ0LDgg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBo
IGV4dGVuZGVkUGFyYWdyYXBoKFdURk1vdmUocGFyYWdyYXBoKSk7CiAgICAgICAgIC8vIFJlc3Rv
cmUgdGhlIGNhcmV0IHBvc2l0aW9uIGlmIHdlIGhhdmUgbWFkZSBhbnkgcmVwbGFjZW1lbnRzCiAg
ICAgICAgIGV4dGVuZGVkUGFyYWdyYXBoLmV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7Ci0gICAgICAg
IGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0ID49IDAg
JiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJy
YW5nZSgwLCBzZWxlY3Rpb25PZmZzZXQpOworICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFm
dGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxl
bmd0aCgpKSB7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJh
Z3JhcGguc3VicmFuZ2UoeyAwLCBzZWxlY3Rpb25PZmZzZXQgfSk7CiAgICAgICAgICAgICBtX2Zy
YW1lLnNlbGVjdGlvbigpLm1vdmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSwgRE9X
TlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91
bmRhcmllcykKICAgICAgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KTsKQEAgLTI5NzMsNyArMjk3Miw4IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNr
VG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogICAgIG1fYWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRv
Y29ycmVjdGlvblJlc3BvbnNlOjpSZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSk7CiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaCgqc2VsZWN0aW9uKTsK
ICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZWRTdHJpbmcsIFNlbGVjdFJlcGxh
Y2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0KTsKLSAgICBh
dXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdT
dGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgQ2hhcmFjdGVyQ291bnQgcmVw
bGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gcmVwbGFjZWRTdHJpbmcubGVuZ3Ro
KCk7CisgICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyBwYXJhZ3Jh
cGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQg
fSk7CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UsIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwg
U3RyaW5nKCkpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya1JldmVyc2Vk
KGNoYW5nZWRSYW5nZSk7CiAjZWxzZQpAQCAtMzc3NywxMiArMzc3NywxMiBAQCB2b2lkIEVkaXRv
cjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVycyhSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZwogCiAgICAgICAgIEFTU0VSVChzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2
ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsKIAotICAgICAgICB1bnNpZ25lZCBzdWJyYW5nZU9mZnNl
dCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKLSAgICAgICAgdW5z
aWduZWQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFy
dFBvc2l0aW9uICsgMTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3VicmFuZ2VPZmZzZXQgPSBz
Y2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247CisgICAgICAgIENoYXJhY3Rl
ckNvdW50IHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3Rh
cnRQb3NpdGlvbiArIDE7CiAKLSAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UocmFuZ2UsIHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCk7CisgICAgICAg
IGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgc3VicmFuZ2VP
ZmZzZXQsIHN1YnJhbmdlTGVuZ3RoIH0pOwogCi0gICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQo
c3VicmFuZ2UucHRyKCkpOworICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVS
YW5nZShzdWJyYW5nZSkpOwogICAgICAgICByYW5nZS5vd25lckRvY3VtZW50KCkubWFya2Vycygp
LmFkZE1hcmtlcihzdWJyYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CiAK
ICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJlbGF0aXZlRW5kUG9zaXRpb24gKyAxOwpAQCAt
Mzk5MiwxNCArMzk5MiwxNCBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9y
Q2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0CiAKIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZv
clRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29u
c3QKIHsKLSAgICBpZiAoIXJlc3VsdC5sZW5ndGgpCisgICAgaWYgKCFyZXN1bHQucmFuZ2UubGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4
dFJhbmdlID0gY29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpOwogICAgIGlmICghY29u
dGV4dFJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxl
bmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
KmNvbnRleHRSYW5nZSwgcmVzdWx0LnJhbmdlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzY2hlZHVs
ZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAppbmRleCBhZDgyNzg4OWNhYjU4NWQzMDE1OTZhNjNhYmRlYzZmZjRiNzVlMzc0
Li5jNjE5ZTY1YmNhZTI3ZmMwZmYyZmRjMDVlZDZmYjlhNDU2NzY5MWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Myw4ICs2
Myw4IEBAIHN0YXRpYyB2b2lkIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhUZXh0Q2hlY2tlckNsaWVu
dCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IGJhZEdyYW1tYXI7CiAgICAgICAgIGJhZEdyYW1tYXIudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXI7Ci0gICAgICAgIGJhZEdyYW1tYXIubG9jYXRpb24gPSBjaGVja0xvY2F0aW9u
ICsgYmFkR3JhbW1hckxvY2F0aW9uOwotICAgICAgICBiYWRHcmFtbWFyLmxlbmd0aCA9IGJhZEdy
YW1tYXJMZW5ndGg7CisgICAgICAgIGJhZEdyYW1tYXIucmFuZ2UubG9jYXRpb24gPSBjaGVja0xv
Y2F0aW9uICsgYmFkR3JhbW1hckxvY2F0aW9uOworICAgICAgICBiYWRHcmFtbWFyLnJhbmdlLmxl
bmd0aCA9IGJhZEdyYW1tYXJMZW5ndGg7CiAgICAgICAgIGJhZEdyYW1tYXIuZGV0YWlscyA9IFdU
Rk1vdmUoYmFkR3JhbW1hckRldGFpbHMpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChiYWRHcmFt
bWFyKTsKIApAQCAtOTcsOSArOTcsOSBAQCBzdGF0aWMgdm9pZCBmaW5kTWlzc3BlbGxpbmdzKFRl
eHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPAogCiAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgbWlzc3BlbGxpbmc7CiAgICAgICAgICAgICBtaXNz
cGVsbGluZy50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICBt
aXNzcGVsbGluZy5sb2NhdGlvbiA9IHdvcmRTdGFydCArIG1pc3NwZWxsaW5nTG9jYXRpb247Ci0g
ICAgICAgICAgICBtaXNzcGVsbGluZy5sZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKLSAgICAg
ICAgICAgIG1pc3NwZWxsaW5nLnJlcGxhY2VtZW50ID0gY2xpZW50LmdldEF1dG9Db3JyZWN0U3Vn
Z2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nLmxvY2F0
aW9uLCBtaXNzcGVsbGluZy5sZW5ndGgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAg
ICAgICAgICBtaXNzcGVsbGluZy5yYW5nZS5sb2NhdGlvbiA9IHdvcmRTdGFydCArIG1pc3NwZWxs
aW5nTG9jYXRpb247CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yYW5nZS5sZW5ndGggPSBtaXNz
cGVsbGluZ0xlbmd0aDsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJlcGxhY2VtZW50ID0gY2xp
ZW50LmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKHRleHQuc3Vic3Ry
aW5nKG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uLCBtaXNzcGVsbGluZy5yYW5nZS5sZW5ndGgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
aXNzcGVsbGluZyk7CiAgICAgICAgIH0KIApAQCAtMTM5LDE0ICsxMzksMTMgQEAgdm9pZCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmV4cGFuZFJhbmdlVG9OZXh0RW5kKCkKIHZvaWQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VWYWx1ZXMoKQogewogICAgIG1f
Y2hlY2tpbmdTdGFydC5yZXNldCgpOwotICAgIG1fY2hlY2tpbmdFbmQucmVzZXQoKTsKICAgICBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQucmVzZXQoKTsKICAgICBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoLnJlc2V0KCk7CiAgICAgbV9vZmZzZXRBc1JhbmdlID0gbnVsbHB0cjsKICAg
ICBtX3RleHQgPSBTdHJpbmcoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFu
Z2VMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpy
YW5nZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHBhcmFncmFw
aFJhbmdlKCkpOwogfQpAQCAtMTU4LDEyICsxNTcsMTIgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6cGFyYWdyYXBoUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9wYXJhZ3JhcGhS
YW5nZTsKIH0KIAotUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKGlu
dCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCkgY29uc3QKK1JlZjxSYW5nZT4g
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZSgp
LCBjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShwYXJhZ3JhcGhSYW5nZSgpLCByYW5nZSkpOwog
fQogCi1FeGNlcHRpb25PcjxpbnQ+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAorRXhjZXB0aW9uT3I8Q2hhcmFjdGVyQ291bnQ+
IFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdAogewogICAgIGF1dG8gc3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhS
YW5nZSgpLnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2lu
dChwb3NpdGlvbik7CkBAIC0xODcsMzUgKzE4NiwzMyBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpvZmZzZXRBc1JhbmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fb2Zmc2V0QXNSYW5n
ZTsKIH0KIAotY29uc3QgU3RyaW5nJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25z
dAorU3RyaW5nVmlldyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25zdAogewotICAg
IGlmIChtX3RleHQuaXNFbXB0eSgpKQorICAgIGlmIChtX3RleHQuaXNOdWxsKCkpCiAgICAgICAg
IG1fdGV4dCA9IHBsYWluVGV4dCgmcGFyYWdyYXBoUmFuZ2UoKSk7CiAgICAgcmV0dXJuIG1fdGV4
dDsgCiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3RhcnQoKSBjb25z
dAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fY2hlY2tpbmdTdGFydCkKICAgICAgICAgbV9jaGVja2luZ1N0
YXJ0ID0gY2hhcmFjdGVyQ291bnQob2Zmc2V0QXNSYW5nZSgpKTsKICAgICByZXR1cm4gKm1fY2hl
Y2tpbmdTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQo
KSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0Vu
ZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NoZWNraW5nRW5kKQotICAgICAgICBtX2NoZWNraW5n
RW5kID0gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdMZW5ndGgoKTsKLSAgICByZXR1cm4gKm1f
Y2hlY2tpbmdFbmQ7CisgICAgcmV0dXJuIGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3Ro
KCk7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29u
c3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5ndGgo
KSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ0xlbmd0aCkKICAgICAgICAgbV9jaGVja2lu
Z0xlbmd0aCA9IGNoYXJhY3RlckNvdW50KG1fY2hlY2tpbmdSYW5nZSk7CiAgICAgcmV0dXJuICpt
X2NoZWNraW5nTGVuZ3RoOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQ7CkBAIC0yMjksNyArMjI2LDcgQEAgaW50IFRleHRDaGVja2luZ1BhcmFn
cmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2F1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRD
aGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAogewog
ICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKQogICAgICAgICByZXR1cm4gKm1f
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CkBAIC0yNDYsMTIgKzI0MywxMiBAQCBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OlRleHRDaGVja2luZ0hlbHBlcihFZGl0b3JDbGllbnQmIGNsaWVudCwgUmFu
Z2UmIHJhbmdlKQogCiBUZXh0Q2hlY2tpbmdIZWxwZXI6On5UZXh0Q2hlY2tpbmdIZWxwZXIoKSA9
IGRlZmF1bHQ7CiAKLVN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxs
aW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFu
Z2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZyhDaGFyYWN0ZXJDb3VudCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCiB7
CiAgICAgZmlyc3RNaXNzcGVsbGluZ09mZnNldCA9IDA7CiAKICAgICBTdHJpbmcgZmlyc3RNaXNz
cGVsbGluZzsKLSAgICBpbnQgY3VycmVudENodW5rT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOwogCiAgICAgZm9yIChXb3JkQXdhcmVJdGVyYXRv
ciBpdChtX3JhbmdlKTsgIWl0LmF0RW5kKCk7IGN1cnJlbnRDaHVua09mZnNldCArPSBpdC50ZXh0
KCkubGVuZ3RoKCksIGl0LmFkdmFuY2UoKSkgewogICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBp
dC50ZXh0KCk7CkBAIC0yNzcsMTcgKzI3NCwxNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwog
CiAgICAgICAgIGlmIChtaXNzcGVsbGluZ0xvY2F0aW9uID49IDAgJiYgbWlzc3BlbGxpbmdMZW5n
dGggPiAwICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gPCB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5n
TGVuZ3RoIDw9IHRleHRMZW5ndGggJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoIDw9IHRleHRMZW5ndGgpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ugb2Yg
bWlzc3BlbGxlZCB3b3JkCi0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxs
aW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3Bl
bGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLCB7IGN1cnJlbnRDaHVu
a09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50
PihtaXNzcGVsbGluZ0xlbmd0aCkgfSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGZpcnN0
LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAgICAgICAgaWYg
KCFmaXJzdE1pc3NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ09m
ZnNldCA9IGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CiAgICAgICAg
ICAgICAgICAgZmlyc3RNaXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nTG9j
YXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIGZp
cnN0TWlzc3BlbGxpbmdSYW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7CisgICAgICAgICAg
ICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1pc3NwZWxsaW5n
UmFuZ2UpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBtYXJrZXIgZm9y
IG1pc3NwZWxsZWQgd29yZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2Us
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVsbGluZ1Jhbmdl
LnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiB3
ZSdyZSBtYXJraW5nIG9ubHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFsbCBpbnN0
YW5jZXMuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjk1LDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1p
c3NwZWxsaW5nT2Zmc2V0LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGluZzsKIH0KIAot
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1t
YXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RG
b3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hl
Y2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RG
b3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBpZiAo
IXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CkBAIC0zMTMsOCArMzEwLDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAvLyBJ
bml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmlu
ZCBzb21ldGhpbmcgdG8gcmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAgIG91
dEZpcnN0Rm91bmRPZmZzZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAt
MTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRldGFp
bC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGgg
PSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdyYW1t
YXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAgLTMzNCw4
ICszMzEsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGlu
Z09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIHdoaWxlICh0b3RhbExlbmd0
aFByb2Nlc3NlZCA8IHRvdGFsUmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0ZSB0aHJv
dWdoIHRoZSBzZWFyY2ggcmFuZ2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBvbmUgZm9y
IHNwZWxsaW5nIGFuZCBncmFtbWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBjaGFy
YWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRPZmZz
ZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBpbnQg
Y3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50
IGN1cnJlbnRTdGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6
IDA7CisgICAgICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRFbmRPZmZzZXQgPSBjdXJyZW50TGVu
Z3RoOwogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRl
cm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBz
ZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8g
c2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KQEAgLTM0
Niw5ICszNDMsOSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgU3RyaW5n
IHBhcmFncmFwaFN0cmluZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAgICAg
ICAgICAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAg
ICAgIGJvb2wgZm91bmRHcmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IHNwZWxs
aW5nTG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlTG9jYXRp
b24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOwor
ICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOworICAg
ICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7Cisg
ICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7CkBAIC0zNjEsNDIgKzM1OCw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAg
ICAgICAgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigp
LCBwYXJhZ3JhcGhTdHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rp
b24pOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyAmJiByZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3Vs
dC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5n
KHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQucmFu
Z2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlv
biArIHJlc3VsdC5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0
aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhT
dHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0
aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1cnJlbnRF
bmRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJlbnRTdGFy
dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGgg
PiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0g
MCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gPCBj
dXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5nZS5s
ZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNl
IHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGlu
IGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LmRl
dGFpbHNbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVu
Z3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9j
YXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5s
b2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJyZW50RW5k
T2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9j
YXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+
cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0aCA8PSBj
dXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5sb2NhdGlv
biArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9IGo7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJl
c3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiAr
IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kR3JhbW1hciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
R3JhbW1hcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFt
bWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dyYW1tYXJE
ZXRhaWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFz
ZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gcGFy
YWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5n
ZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFy
UGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9u
KSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xv
Y2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0
ZXJDb3VudCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtl
Qm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9p
bnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwpAQCAtNDA1LDcgKzQwMiw3IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hl
Y2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhyYXNl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNl
dCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAgICAg
ICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1tYXJQ
aHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJh
c2VPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5nZS0+
c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFs
c2U7CkBAIC00MjgsMTggKzQyNSwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogCiAjaWYg
VVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWls
cywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRl
dGFpbHMsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hhcmFjdGVy
Q291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxs
KSBjb25zdAogewogICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhlIGVhcmxp
ZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChpZiBhbnkp
LgogICAgIC8vIE9wdGlvbmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2ggZGV0YWls
IGluIHRoZSByYW5nZS4KLSAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gLTE7
CisgICAgQ2hhcmFjdGVyQ291bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gMDsKICAg
ICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9IC0xOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBncmFtbWFyRGV0YWlscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBHcmFtbWFy
RGV0YWlsKiBkZXRhaWwgPSAmZ3JhbW1hckRldGFpbHNbaV07Ci0gICAgICAgIEFTU0VSVChkZXRh
aWwtPmxlbmd0aCA+IDApOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VS
VChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAKLSAgICAgICAgaW50IGRl
dGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBk
ZXRhaWwtPmxvY2F0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBkZXRhaWxTdGFydE9mZnNl
dEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5s
b2NhdGlvbjsKICAgICAgICAgCiAgICAgICAgIC8vIFNraXAgdGhpcyBkZXRhaWwgaWYgaXQgc3Rh
cnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlCiAgICAgICAgIGlmIChkZXRhaWxT
dGFydE9mZnNldEluUGFyYWdyYXBoIDwgc3RhcnRPZmZzZXQpCkBAIC00NTAsMzAgKzQ0NywzMCBA
QCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZl
Y3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwot
ICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFt
bWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBhdXRvIGJhZEdyYW1t
YXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLmdldCgpLCB7IGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiwg
ZGV0YWlsLT5yYW5nZS5sZW5ndGggfSk7CisgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2Uuc3Rh
cnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBkZXRhaWwgb25seSBpZiBpdCdzIGVh
cmxpZXIgdGhhbiBvdXIgY3VycmVudCBjYW5kaWRhdGUgKHRoZSBkZXRhaWxzIGFyZW4ndCBpbiBh
IGd1YXJhbnRlZWQgb3JkZXIpCi0gICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8
fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPmxvY2F0aW9uKSB7CisgICAg
ICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9u
U29GYXIgPiBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICBlYXJsaWVzdERl
dGFpbEluZGV4ID0gaTsKLSAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9
IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29G
YXIgPSBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IHJldHVybiBlYXJsaWVzdERldGFpbEluZGV4OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWws
IGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAorU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBv
dXRHcmFtbWFyRGV0YWlsLCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwg
Ym9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7
IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCi0g
ICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwu
bGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAg
ICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFp
bC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24g
PSBlbXB0eVN0cmluZygpOwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIAot
ICAgIFN0cmluZyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBmaXJzdEJh
ZEdyYW1tYXJQaHJhc2U7CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNv
bXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVlZHMgdGhh
dCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZy
b20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5h
bCBzZWFyY2ggcmFuZ2UsCkBAIC00ODEsMTEgKzQ3OCwxMSBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRh
aWwsCiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNvcHlSZWYo
KSk7CiAgICAgCiAgICAgLy8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2YgcGFyYWdy
YXBoLCBidXQgc2tpcCBwYXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0YXJ0IG9m
IHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZzZXQgPSAw
OyBzdGFydE9mZnNldCA8IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBmb3IgKENo
YXJhY3RlckNvdW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hl
Y2tpbmdFbmQoKTsgKSB7CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFtbWFyRGV0
YWlsczsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwogICAgICAg
ICBpbnQgYmFkR3JhbW1hclBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50LnRleHRD
aGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBoLnRleHQo
KSkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQu
dGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQoKS5zdWJz
dHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFi
YWRHcmFtbWFyUGhyYXNlTGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uID09IC0xKTsKQEAgLTUwNiw3ICs1MDMsNyBAQCBTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsCiAgICAgICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5zdGFu
Y2VzKS4KICAgICAgICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQg
PSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpOwot
ICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJp
bmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAg
ICAgICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3Ry
aW5nKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3csIHVu
bGVzcyB3ZSdyZSBtYXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1hcmtB
bGwpCkBAIC01MTgsNyArNTE1LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBz
dGFydE9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJhc2VM
ZW5ndGg7CiAgICAgfQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7Cisg
ICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29sIFRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3ICs1MjYs
NyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAg
ICAvLyBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVz
cG9uZHMgdG8gYSBiYWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCiAg
ICAgLy8gdG8gaXNTZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBmb3Ig
dGhlcmUgdG8gYmUgc29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAogICAg
IC8vIG9yIG92ZXJsYXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkgbWF0
Y2guCi0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgZ3Jh
bW1hclBocmFzZU9mZnNldDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7
CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1t
YXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSArNTM5LDE1
IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAogICAg
IGlmIChncmFtbWFyUGhyYXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdyYW1t
YXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9j
YXRpb24gPj0gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7
CiAKICAgICAvLyBCYWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1t
YXRpY2FsIHdvcmQpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1h
ckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1tYXJE
ZXRhaWwucmFuZ2UubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1
dCBlbmQgb2YgYmFkIGdyYW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQotICAg
IGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IGNoYXJh
Y3RlckNvdW50KG1fcmFuZ2UpKQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCAh
PSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIC8vIFVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVy
cm9yICh3aGV0aGVyIG9yIG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KQEAg
LTU5NCw4ICs1OTEsOCBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNz
ZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4dE9m
UGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBjaGVj
a2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0byYg
cmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3Vs
dC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNzcGVs
bGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAocmVz
dWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNr
aW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBtaXNz
cGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7CiAg
ICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAg
bV9jbGllbnQudGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQs
IFN0cmluZygpLCBjdXJyZW50U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1fY2xp
ZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQpOwpA
QCAtNjA4LDEyICs2MDUsMTIgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpn
dWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0
dXJuIGd1ZXNzZXM7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAg
ICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdy
YXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5n
dGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFt
bWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdlKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyYWdy
YXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2NhdGlv
biwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1t
YXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsgcmVz
dWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2Uu
bGVuZ3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNl
ID0gcGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1
bHQucmFuZ2UubGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgZ3Vlc3MgOiBkZXRhaWwuZ3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNz
ZXMuYXBwZW5kKGd1ZXNzKTsKQEAgLTYzMSw3ICs2MjgsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hl
bHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5n
UmFuZwogewogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlz
c3BlbGxpbmcuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIi
OwogICAgIC8vIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0gICAg
aW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAg
ICBmaW5kRmlyc3RNaXNzcGVsbGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3NwZWxs
aW5nUmFuZ2UpOwogfQogCkBAIC02NDEsNyArNjM4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJl
IG9mIG9maW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgIm91
dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5IGlu
c3RhbmNlLgogICAgIEdyYW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAgaW50
IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBm
aW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0LCB0
cnVlKTsKIH0KICNlbmRpZgpAQCAtNjY4LDcgKzY2NSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25T
ZXQ8CiAgICAgaWYgKGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcikpIHsKICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckNoZWNrTGVuZ3RoID0gdGV4dC5sZW5n
dGgoKTsKICAgICAgICAgZm9yIChhdXRvJiBtaXNwZWxsaW5nIDogbWlzcGVsbGluZ3MpCi0gICAg
ICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNo
ZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdyYW1tYXJDaGVj
a0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxp
bmcucmFuYWdlLmxvY2F0aW9uKTsKICAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVu
dCwgdGV4dC5zdWJzdHJpbmcoMCwgZ3JhbW1hckNoZWNrTGVuZ3RoKSwgZ3JhbW1hdGljYWxFcnJv
cnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmgKaW5kZXggM2YzOWU4NjhkOTk0MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uYTFiM2Q4
MjVjMzViNGJmMzMyNDZjYTUwNzNlMTZhMDkzNDMyZGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdB
bmRBdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0g
ICAgaW50IHJhbmdlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQg
Y2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlv
bk9yPGludD4gb2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJD
b3VudCByYW5nZUxlbmd0aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFj
dGVyUmFuZ2UpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRU
byhjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQo
KTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0
cmluZ1ZpZXcuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhN
RTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNl
IHRleHQoKSBkaXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRl
eHQoKS5sZW5ndGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmco
cG9zLCBsZW4pOyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIHRleHQoKVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1Zp
ZXcgdGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQg
Y2hlY2tpbmdTdGFydCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAg
IGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2lu
Z0xlbmd0aCgpKTsgfQorICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsK
KyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNv
dW50IGNoZWNraW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBj
aGVja2luZ0xlbmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hp
Y2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyBy
ZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tp
bmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4K
LSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0
aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0
Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09
IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJv
b2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29u
c3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVu
Z3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNo
ZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVy
biBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2lu
Z1N0YXJ0KCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdl
IHJhbmdlKSBjb25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkg
JiYgcmFuZ2UubGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tp
bmdSYW5nZUNvdmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFu
Z2UubG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2Uu
bGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29s
IGNoZWNraW5nUmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlLmxvY2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdl
Lmxlbmd0aCA+IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgp
IGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBSZWZQdHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8
UmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPGludD4gbV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVj
a2luZ0xlbmd0aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNl
bWVudFN0YXJ0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tp
bmdTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5n
TGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVs
cGVyIHsKQEAgLTg4LDExICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVy
KEVkaXRvckNsaWVudCYsIFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0g
ICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwot
ICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3Jh
bW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFt
bWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3Bl
bGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0Fs
bCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91
dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFy
RGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3Mo
UmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9D
SEVDS0lORykKLSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBv
dXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0Fs
bCkgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYg
b3V0R3JhbW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQs
IGJvb2wgbWFya0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAg
IGJvb2wgaXNVbmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsK
ICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFp
bChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0
aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7
CisgICAgaW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+JiwgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFyYWN0ZXJD
b3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwp
IGNvbnN0OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKaW5kZXggYmExYjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uMjAxM2Fk
Mjc4MTQzMzhlNWIyOWE1NWYyOWQ4NzNjZjZhOGFhNGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJhY3RlckNvdW50
IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgYmVoCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50
IGNoYXJhY3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRl
cmF0b3IoZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVS
YW5nZS5vd25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNl
dCwgY2hhcmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBs
YWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJh
dG9yLmF0RW5kKCkpOwpAQCAtMjM2NSw4NSArMjM1OSw2MSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1
cm4gbm9kZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwog
fQogCi1SZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5n
dGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorQm91bmRhcnlQb2ludCByZXNvbHZl
Q2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJDb3Vu
dCBsb2NhdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgUmVmPFJh
bmdlPiByZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CisgICAg
cmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzY29wZSwgeyBsb2NhdGlvbiwgMCB9LCBiZWhh
dmlvcikuc3RhcnQ7Cit9CiAKLSAgICBpbnQgZG9jVGV4dFBvc2l0aW9uID0gMDsKLSAgICBpbnQg
cmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9uICsgcmFuZ2VMZW5ndGg7Ci0gICAgYm9vbCBzdGFydFJh
bmdlRm91bmQgPSBmYWxzZTsKK1NpbXBsZVJhbmdlIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgc2NvcGUsIENoYXJhY3RlclJhbmdlIHJhbmdlLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gcmFuZ2UubG9jYXRp
b24gPyBTaW1wbGVSYW5nZSB7IHNjb3BlLmVuZCwgc2NvcGUuZW5kIH0gOiBzY29wZTsKIAotICAg
IFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CisgICAg
Q2hhcmFjdGVyQ291bnQgcmFuZ2VFbmQgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsK
IAotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZh
dGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICAKLSAgICAvLyBGSVhNRTog
dGhlIGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgd29ya2Fyb3VuZCBmb3Ig
PGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODk+LgotICAgIGlmICgh
cmFuZ2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQuYXRFbmQoKSkgewotICAgICAgICBy
ZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsK
LSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCksIDApOwotICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7Ci0gICAgfQorICAgIENoYXJhY3Rl
ckNvdW50IGxvY2F0aW9uID0gMDsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzY29wZSwgYmVo
YXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuUmFuZ2UgPSBp
dC5yYW5nZSgpOwogCi0gICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAg
ICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpOworICAgICAgICBhdXRvIGZvdW5kID0g
WyZdIChDaGFyYWN0ZXJDb3VudCB0YXJnZXRMb2NhdGlvbikgLT4gYm9vbCB7CisgICAgICAgICAg
ICByZXR1cm4gdGFyZ2V0TG9jYXRpb24gPj0gbG9jYXRpb24gJiYgdGFyZ2V0TG9jYXRpb24gPD0g
bG9jYXRpb24gKyBsZW5ndGg7CisgICAgICAgIH07CiAKLSAgICAgICAgYm9vbCBmb3VuZFN0YXJ0
ID0gcmFuZ2VMb2NhdGlvbiA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VMb2NhdGlvbiA8PSBk
b2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7Ci0gICAgICAgIGJvb2wgZm91bmRFbmQgPSByYW5nZUVu
ZCA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VFbmQgPD0gZG9jVGV4dFBvc2l0aW9uICsgbGVu
Z3RoOworICAgICAgICBib29sIGZvdW5kU3RhcnQgPSBmb3VuZChyYW5nZS5sb2NhdGlvbik7Cisg
ICAgICAgIGJvb2wgZm91bmRFbmQgPSBmb3VuZChyYW5nZUVuZCk7CiAKICAgICAgICAgaWYgKGZv
dW5kRW5kKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9y
IHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcKLSAg
ICAgICAgICAgIC8vIHBvc2l0aW9uIGZvciBlbWl0dGVkICdcbidzIG9yIGlmIHRoZSByZW5kZXJl
ciBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgcmVwbGFjZWQgZWxlbWVudC4KKyAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5k
IG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRoZSB3cm9uZyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4n
cyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVs
ZW1lbnQuCiAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAn
XG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBp
dC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAg
ICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0
YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAg
ICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0
YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1
bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+
c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29u
dGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAg
ICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtl
Qm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7
Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRl
eHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAg
ICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRh
aW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0
UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0
UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+
c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRP
ZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRh
cmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0
Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VS
VCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5n
ZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24g
LSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQu
Y29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5S
YW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYg
KGZvdW5kU3RhcnQpCisgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJh
bmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAo
dGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAg
ICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAg
ICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIo
KSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRS
dW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAg
ICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsK
KyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3RoOwogICAgIH0KICAgICAKLSAgICBpZiAoIXN0YXJ0
UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdl
TGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQg
b2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRD
b250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJu
IHJlc3VsdFJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRl
eCAwOTE0ZjdiY2E2MTUwOWZiNWMzZGVlYWM5ZDM4Y2U0ZDRjMzg5NjRiLi5mNGU0MDhhMjFhNTU2
YTU4Yjg0MjM4YjhlMzJjMTAxYTczNmZkNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJD
aGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGlu
ZUxheW91dFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCkBAIC0xMDMsOSAr
MTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5n
QnVpbGRlcihidWlsZGVyKTsgfQogCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gU2ltcGxl
UmFuZ2UsIENoYXJhY3RlclJhbmdlLCBhbmQgQ2hhcmFjdGVyQ291bnQgYW5kIG1vdmUgb3V0IG9m
IHRoaXMgY2xhc3MgdG8gdGhlIHRvcCBsZXZlbCAoYm90dG9tIG9mIHRoaXMgZmlsZSkuCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VM
ZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2Rl
KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVu
dGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgaW5pdCgpOwpAQCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaWRMb29rQWhlYWQgeyB0cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJD
b3VudCA9IHN0ZDo6c2l6ZV90OwotCi1zdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJh
Y3RlckNvdW50IGxvY2F0aW9uIHsgMCB9OwotICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAg
fTsKLX07CiAKIFdFQkNPUkVfRVhQT1JUIENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNv
bnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFj
dGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBP
UlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Q2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFm
MzhjNWIxZmJhNGUwODRhYjdjYTYuLmUyZjhmNTdiMzk1NTE3N2JjZGVmNzNhYTQyYjczNzhjOGFj
OTMwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRl
dGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJh
bmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAg
ICAgICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYg
KGhpdExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFu
Z2VJbkNvbnRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29u
dGV4dFJhbmdlLCByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNv
bnRleHQubGVuZ3RoKTsKKyAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmNvbnRleHRSYW5nZSwgKm1ha2VDaGFyYWN0ZXJS
YW5nZShyZXN1bHRSYW5nZUluQ29udGV4dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTA4LDkgKzUwOCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQog
ICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdl
KCkpOwogICAgICAgICBDRkluZGV4IGZyYWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1
ZXJ5SW5kZXg7Ci0gICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1
ZXJ5SW5kZXgpCi0gICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqY3VycmVudFJhbmdlLCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlS
YW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxz
ZSB7CisgICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5k
ZXgpIHsKKyAgICAgICAgICAgIENoYXJhY3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAg
ICAgICBmcmFnbWVudFJhbmdlLmxvY2F0aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7Cisg
ICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAt
IHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBw
ZW5kKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwg
ZnJhZ21lbnRSYW5nZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVl
cnlSYW5nZS5zdGFydC5vZmZzZXQpCiAgICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBw
ZW5kKGN1cnJlbnRSYW5nZSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5
MmMyNGU1MTc4OTA0N2NlZjYyNjNmYTUwOS4uNmJjNWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4
OGE0ZTEyNjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0
aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlv
bmFyeUxvb2t1cC5tbQpAQCAtMjg3LDEwICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5n
ZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihj
bwogCiAgICAgUmVmUHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFy
YWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFp
blRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBp
dGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3Ry
aW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJh
bmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJh
bmdlID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3Ry
aW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAot
ICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwg
aGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9Owor
ICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxD
aGFyYWN0ZXJSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmls
IH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0zNTgsMTMgKzM1Nywx
MiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5
TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9
IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVj
dGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91
bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsKIAogICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5U
ZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2UpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBh
ZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2Vs
ZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9
IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CisgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IG1h
a2VDaGFyYWN0ZXJSYW5nZShhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhU
ZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCkuaGlnaGxp
Z2h0UmFuZ2UpOwogCi0gICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91
bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWhpZ2hsaWdodFJhbmdlIHx8
ICFoaWdobGlnaHRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwg
fTsKICAgICAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFj
dGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgp
LCBuaWwgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJh
bmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICpoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKICAgICAK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAppbmRleCBhMmI4MTgyODc3
YjI4YWYyOWM4YTA2Mzk1NGQzNzRjZDVhYTVhNWRhLi5kM2NmMDZjOTNkMTlkODVlZTUxNDVkMDJh
MTJkNTJiODNiYzdhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9E
aWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9E
aWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNzIsMTEgKzcyLDggQEAgdm9pZCBEaWN0YXRpb25D
b21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0TGVuZ3RoKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgs
IGVuZE9mZnNldCk7Ci0gICAgaWYgKCFyZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRS
YW5nZSwgbV9tZXRhZGF0YSk7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNl
dCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2Vycygp
LmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVlMThlMDE3Nzll
YzYxMTQ3NDMxYzc5NWUzOGE1OGUuLjY1ZDVkZDU2MmU5MzcwY2ViZmNlNTNjMzIyNWUyNzM1YzU1
YjVmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlM
b29rdXBMZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cExlZ2FjeS5tbQpAQCAtMTQyLDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBsZTxSZWZQdHI8
UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RS
ZXN1bHQKIAogICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJD
b3VudCh7ICpmdWxsQ2hhcmFjdGVyU3RhcnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0pLCAwKTsKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgTlNSYW5nZSBleHRyYWN0ZWRSYW5n
ZSA9IHRva2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdl
VG9QYXNzLCAmb3B0aW9ucyk7CisgICAgYXV0byBleHRyYWN0ZWRSYW5nZSA9IG1ha2VDaGFyYWN0
ZXJSYW5nZSh0b2tlblJhbmdlKHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCBy
YW5nZVRvUGFzcywgJm9wdGlvbnMpKTsKIAogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJl
dHVybnMge05TTm90Rm91bmQsIDB9IGlmIGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29v
ZCBzdHJpbmcuCiAgICAgLy8gRklYTUUgKDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNo
ZWNrIGZvciB6ZXJvIGxlbmd0aCBoZXJlLgotICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kIHx8ICFleHRyYWN0ZWRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFleHRy
YWN0ZWRSYW5nZSB8fCAhZXh0cmFjdGVkUmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
bnVsbHB0ciwgbmlsIH07CiAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpm
dWxsQ2hhcmFjdGVyUmFuZ2UsIGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5n
ZS5sZW5ndGgpLCBvcHRpb25zIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqZXh0cmFjdGVkUmFuZ2UpKSwg
b3B0aW9ucyB9OwogfQogCiBzdGF0aWMgdm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMo
UERGU2VsZWN0aW9uICpzZWxlY3Rpb24sIE5TSW50ZWdlciBudW1iZXJPZkNoYXJhY3RlcnNUb0V4
cGFuZCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRCZWZvcmVTdGFydCwgTlNJbnRlZ2VyJiBj
aGFyYWN0ZXJzQWRkZWRBZnRlckVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGU3ZGQyNGEzMTFh
Yjc0NWRlNTZjNjhkMmVjZWEzMGYyNjA3NGEzYzYuLmFhMDQyZWJjODVmNGM0MGYyZjk1YTQxZGJl
ODQwODVhZDQ2NGM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzk5LDggKzc5OSw3IEBAIHVu
c2lnbmVkIFBhZ2U6OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRP
cHRpb25zIG9wdGlvbnMsIHVuc2lnCiAKIHN0cnVjdCBGaW5kUmVwbGFjZW1lbnRSYW5nZSB7CiAg
ICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3Q7Ci0gICAgc2l6ZV90IGxvY2F0aW9uIHsgbm90
Rm91bmQgfTsKLSAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OworICAgIENoYXJhY3RlclJhbmdlIHJh
bmdlOwogfTsKIAogc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBW
ZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRUZXh0KQpAQCAtODEyLDEwICs4MTEsMTAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdl
cyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJh
bmdlcyBhcmUgc29ydGVkIGJ5IHRoZWlyIGVuZCBvZmZzZXRzLCBwZXIgZWRpdGluZyBjb250YWlu
ZXIuCi0gICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5sb2NhdGlvbiArIHJh
bmdlLmxlbmd0aDsKKyAgICAgICAgYXV0byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLnJhbmdl
LmxvY2F0aW9uICsgcmFuZ2UucmFuZ2UubGVuZ3RoOwogICAgICAgICBhdXRvIGluc2VydGlvbklu
ZGV4ID0gcmFuZ2VMaXN0LnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFu
Z2VMaXN0LnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZUxpc3QucmVuZCgpOyArK2l0ZXJhdG9y
KSB7Ci0gICAgICAgICAgICBhdXRvIGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRl
cmF0b3ItPmxvY2F0aW9uICsgaXRlcmF0b3ItPmxlbmd0aDsKKyAgICAgICAgICAgIGF1dG8gZW5k
T2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+cmFuZ2UubG9jYXRpb24gKyBp
dGVyYXRvci0+cmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgaWYgKGVuZE9mZnNldEZvclJhbmdl
ID49IGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4KQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgaW5zZXJ0aW9uSW5kZXgtLTsKQEAgLTg1OCwxMSArODU3LDExIEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBs
YWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91
Z2ggcmFuZ2VzIHdoZW4gcmVwbGFjaW5nIHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVw
bGFjZW1lbnRzIGRvbid0IGNsb2JiZXIgcmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAg
ICAgICBhdXRvJiByYW5nZXMgPSByYW5nZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIp
LT52YWx1ZTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBp
dGVyYXRvciAhPSByYW5nZXMucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRv
IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWlu
ZXIuZ2V0KCksIGl0ZXJhdG9yLT5sb2NhdGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7Ci0gICAgICAg
ICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIGF1dG8g
cmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCpjb250YWluZXIpLCBpdGVyYXRvci0+cmFuZ2UpOworICAgICAgICAgICAgaWYgKHJhbmdl
LmNvbGxhcHNlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVB
TSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJhbmdl
KS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMpOwogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dChyZXBsYWNlbWVudFRleHQsIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9y
OjpTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC04OTQsNyArODkzLDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJh
bmdlc1dpdGhUZXh0KGNvbnN0IFZlY3RvcjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBsYWNlLAog
ICAgICAgICBpZiAocmVwbGFjZW1lbnRMb2NhdGlvbiA9PSBub3RGb3VuZCB8fCAhcmVwbGFjZW1l
bnRMZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICByZXBsYWNlbWVudFJh
bmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhpZ2hlc3RSb290KSwgcmVwbGFjZW1lbnRMb2NhdGlvbiwg
cmVwbGFjZW1lbnRMZW5ndGggfSk7CisgICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7
IFdURk1vdmUoaGlnaGVzdFJvb3QpLCB7IHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50
TGVuZ3RoIH0gfSk7CiAgICAgfQogCiAgICAgcmVwbGFjZVJhbmdlcygqdGhpcywgcmVwbGFjZW1l
bnRSYW5nZXMsIHJlcGxhY2VtZW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBkMGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0
NzdkZWIzLi5kMjQ1Y2NkOWVjOTEyMDJlYzNkMGY0OWVkNTU0YzMwNTBlZTk3Y2Q4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEwICszMSw5
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
LSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtNjMsMTYgKzYyLDE0IEBAIGVudW0gVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgewogfTsK
IAogc3RydWN0IEdyYW1tYXJEZXRhaWwgewotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVu
Z3RoOworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXM7CiAgICAgU3RyaW5nIHVzZXJEZXNjcmlwdGlvbjsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tp
bmdSZXN1bHQgewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKLSAgICBpbnQgbG9jYXRpb247
Ci0gICAgaW50IGxlbmd0aDsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8
R3JhbW1hckRldGFpbD4gZGV0YWlsczsKICAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGNiZDg5NDc1YWUzZTY2YjI0NTI0NjA0
OWYzYTgwOTljODc5ZjkxYzUuLmQyMzE5ZGZhM2MwZDM1MGE4MmM1OTM3MmU0YzE4Y2I5YzJiZmI1
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwNDQsOSArMjA0NCw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50
IHJhbmdlTGVuZ3RoKQorUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25l
ZCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCgmc2NvcGUsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICBy
ZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0p
KTsKIH0KIAogdW5zaWduZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBz
Y29wZSwgY29uc3QgUmFuZ2UmIHJhbmdlKQpAQCAtMjA3NSw5ICsyMDc1LDkgQEAgU3RyaW5nIElu
dGVybmFsczo6cmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5n
ZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9y
Rm9yVGVzdGluZyhyYW5nZSk7CiB9CiAKLVJlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShS
YW5nZSYgcmFuZ2UsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitSZWY8UmFu
Z2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCByYW5nZUxvY2F0
aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZShyYW5nZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHJhbmdlTG9jYXRp
b24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdl
T2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJp
bmcmIHRleHQsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkKQEAgLTI0MzIsOCArMjQzMiw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRp
ZGF0ZSwgdW5zaWduZWQgbG9jYXRpCiAKICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0Owog
ICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6Tm9uZTsKLSAgICByZXN1bHQubG9j
YXRpb24gPSBsb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gbGVuZ3RoOworICAgIHJlc3Vs
dC5yYW5nZSA9IHsgbG9jYXRpb24sIGxlbmd0aCB9OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IGNhbmRpZGF0ZTsKICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDcyZjQ5ZTI0OGRlY2NmYWVlNDMyMjg2NjNjZGYyMDU5N2JhYTcwZWMuLjdjMTYx
OGYwNDUyNGZjOWY5MWQ0YjhmOTgxOGRjNzMxN2Q2M2MyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjk1LDEyICsyOTUsMTIgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gaW52YWxpZGF0ZUNvbnRyb2xUaW50cygpOwogCi0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRp
b24sIGludCByYW5nZUxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWdu
ZWQgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQm
IHNjb3BlLCBjb25zdCBSYW5nZSYpOwogICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVt
ZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3Qg
UmFuZ2UmKTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRv
cihjb25zdCBSYW5nZSYpOwotICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFu
Z2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKTsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJh
bmdlJiwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oaW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmdOZWFy
TG9jYXRpb24oY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNjJmYWY0OTQ2ZWFhZGQ5ODBlNTc4OWEx
OGJiZGVjNTU4M2Y2MzIzLi4zNzU3OTA3NzA0ZjkzMTNlNjg0MTRjMDA1NTkxNzQxZTQ2YTI1ZGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMjUsMTIgKzMyNSwxMiBA
QCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxv
bmcgdywgbG9uZyBoKTsKIAotICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChF
bGVtZW50IHNjb3BlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOworICAg
IFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25l
ZCBsb25nIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2Up
OwogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdl
IHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIERP
TVN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdl
KTsKLSAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBs
b25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWdu
ZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlv
bihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKaW5kZXggYjg5OTMzZmZhMWJmMjg0M2MyNmZk
YmQ2NmQyOTI2ZWQwMGM1ZjZhMS4uNzZlZjQ3MjJkNzUxY2Y2ZTU5YWFiOWVkZmFiNjY1NmU3MDRm
MTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0zMyw0MiArMzMs
MzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRp
dGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1Jh
bmdlJiByYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbykKK1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIEVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbyBiYXNlKQogewotICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAh
PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3Vu
ZCk7CisgICAgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9j
YXRpb24sIGVkaXRpbmdSYW5nZS5sZW5ndGggfTsKIAotICAgIC8vIFNhbml0aXplIHRoZSBpbnB1
dCwgYmVjYXVzZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHRha2Vz
IHNpZ25lZCBpbnRlZ2Vycy4KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbnQgbGVuZ3RoOwotICAgIGlmIChyYW5nZS5sZW5n
dGggPD0gSU5UX01BWCAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFY
KQotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gcmFuZ2UubG9jYXRpb247Ci0KLSAgICBp
ZiAoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6
RWRpdGFibGVSb290KSB7CisgICAgaWYgKGJhc2UgPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRv
OjpFZGl0YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMg
dGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAg
ICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rp
b24uCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRz
IGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdAogICAgICAgICAvLyBkaXJl
Y3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGlj
LiBPdXIgc29sdXRpb24gaXMKICAgICAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVs
ZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAg
ICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQu
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50
RWxlbWVudCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAg
ICAgICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnRPckRvY3VtZW50RWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwg
cmFuZ2UpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKLQotICAgIGF1dG8mIHNlbGVj
dGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGlmICghc2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VS
VChiYXNlID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKIAotICAgIGF1
dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKSkpOworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtl
Qm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnZpc2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29u
dGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFy
dEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJh
Z3JhcGhTdGFydCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyByYW5n
ZS5sb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJv
b3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29s
dmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29w
ZUVuZCkgfSwgcmFuZ2UpKTsKIH0KIAogRWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJh
bmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAppbmRleCA5NDczOGI3Zjg4ZTllMDU4ZGEyZWQyNTRhMTYw
NDRlYmM2YjkzMDY5Li5lMDQzZjk3MjQwZTQyNWVjZDI1YTQyN2VkZDkyN2FjYjc0NWUzNjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNs
YXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA6IHVpbnQ4X3QgewogICAgIFBhcmFncmFwaCwK
IH07CiAKKy8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgd2l0aCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5n
ZT4uCiBzdHJ1Y3QgRWRpdGluZ1JhbmdlIHsKICAgICBFZGl0aW5nUmFuZ2UoKQogICAgICAgICA6
IGxvY2F0aW9uKG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggYjMwN2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFh
OTE4MC4uZmFiNDg0ZGVhYTE4MmI0NmI1ZGYzYmE5ZDRhYTZkM2NiZDBjY2U5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTgsNiAr
MTE4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KICNlbmRpZgog
CisvLyBGSVhNRTogU2VlbXMgbGlrZSB3ZSBjb3VsZCB1c2Ugc3RkOjp0dXBsZSB0byBjdXQgZG93
biB0aGUgY29kZSBiZWxvdyBhIGxvdCEKKwogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0yNTAsNiArMjUyLDI3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxDYWNoZVF1ZXJ5T3B0aW9ucz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBDYWNoZVF1ZXJ5T3B0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBDaGFyYWN0ZXJSYW5nZSYgcmFuZ2UpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmFuZ2UubG9jYXRpb24pOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJhbmdlLmxlbmd0aCk7Cit9CisKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1
bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOworICAgIGRlY29kZXIgPj4gbG9jYXRpb247
CisgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
eyB7ICpsb2NhdGlvbiwgKmxlbmd0aCB9IH07Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxET01D
YWNoZUVuZ2luZTo6Q2FjaGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERP
TUNhY2hlRW5naW5lOjpDYWNoZUluZm8mIGluZm8pCiB7CiAgICAgZW5jb2RlciA8PCBpbmZvLmlk
ZW50aWZpZXI7CkBAIC0yMDUzLDIyICsyMDc2LDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdp
CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkKIHsKLSAgICBlbmNvZGVyIDw8IGRl
dGFpbC5sb2NhdGlvbjsKLSAgICBlbmNvZGVyIDw8IGRldGFpbC5sZW5ndGg7CisgICAgZW5jb2Rl
ciA8PCBkZXRhaWwucmFuZ2U7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwuZ3Vlc3NlczsKICAgICBl
bmNvZGVyIDw8IGRldGFpbC51c2VyRGVzY3JpcHRpb247CiB9CiAKIE9wdGlvbmFsPEdyYW1tYXJE
ZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPGludD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2Nh
dGlvbjsKLSAgICBpZiAoIWxvY2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgT3B0aW9uYWw8aW50PiBsZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAg
aWYgKCFsZW5ndGgpCisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRl
Y29kZXIgPj4gcmFuZ2U7CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwpAQCAtMjA4MSw3
ICsyMDk4LDcgQEAgT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFy
RGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1c2VyRGVzY3JpcHRp
b24pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92
ZSgqbG9jYXRpb24pLCBXVEZNb3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92
ZSgqdXNlckRlc2NyaXB0aW9uKSB9fTsKKyAgICByZXR1cm4geyB7ICpyYW5nZSwgV1RGTW92ZSgq
Z3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfSB9OwogfQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVGV4dENoZWNraW5nUmVxdWVzdERhdGEmIHJlcXVlc3QpCkBAIC0yMTE3LDggKzIx
MzQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4dENoZWNraQogdm9pZCBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1Jlc3VsdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hlY2tp
bmdSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzdWx0LnR5cGUp
OwotICAgIGVuY29kZXIgPDwgcmVzdWx0LmxvY2F0aW9uOwotICAgIGVuY29kZXIgPDwgcmVzdWx0
Lmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IHJlc3VsdC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IHJl
c3VsdC5kZXRhaWxzOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LnJlcGxhY2VtZW50OwogfQpAQCAt
MjEyOSwxNCArMjE0NSw5IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRD
b2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxpbnQ+IGxvY2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0g
ICAgaWYgKCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPGludD4gbGVuZ3RoOwotICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVu
Z3RoKQorICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+
IHJhbmdlOworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRldGFpbHM7CkBAIC0yMTQ5LDcg
KzIxNjAsNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4
dENoZWNraW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCFyZXBsYWNlbWVudCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKHR5
cGUpLCBXVEZNb3ZlKCpsb2NhdGlvbiksIFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmRldGFp
bHMpLCBXVEZNb3ZlKCpyZXBsYWNlbWVudCkgfX07CisgICAgcmV0dXJuIHsgeyB0eXBlLCAqcmFu
Z2UsIFdURk1vdmUoKmRldGFpbHMpLCBXVEZNb3ZlKCpyZXBsYWNlbWVudCkgfSB9OwogfQogCiB2
b2lkIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4ZjQ4NzYwZGY2ZGRhYzBkYzRk
NWNlZjE3M2VhNGEyMTZlODRmMDE3Li4xYWJiNDE2YzE0YmJkNGFlNWI5Yzk3ODhiN2MwMWEwYjVi
NjI3ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY5LDYgKzY5LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIEFic29sdXRlUG9zaXRpb25Db25zdHJhaW50czsKIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAt
MTE2LDYgKzExNyw3IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKK3N0cnVjdCBDaGFyYWN0ZXJS
YW5nZTsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRl
cm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwpAQCAtMTQyLDcgKzE0NCw3IEBA
IHN0cnVjdCBWZWxvY2l0eURhdGE7CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogc3RydWN0
IFdpbmRvd0ZlYXR1cmVzOwogICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRn
ZXM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwogdXNpbmcgRmxvYXRCb3hF
eHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMTYs
NiArMjE4LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2Fj
aGVRdWVyeU9wdGlvbnM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OkNhY2hlUXVlcnlPcHRpb25zJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZSYpOworICAgIHN0YXRpYyBP
cHRpb25hbDxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4gZGVjb2RlKERlY29kZXImKTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSW5mbz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBmOWQ3YWJl
NzRjNDI2ZmI0NTQyMzAzZDE1ZDMyM2YwYzJmMmFkMDU5Li4zODg4NjYyZjkxYjgxMWI4ZDZhMzk0
NTU4YWQ1MTkyMWY2MWY0YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtMzM2NiwxMiArMzM2Niw5IEBAIHN0YXRpYyBjb25zdGV4cHIgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRDaGVja2lu
Z1R5CiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVz
dWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3Vs
dCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW25zUmVzdWx0IHJhbmdlXTsKLQogICAg
IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBj
b3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobnNS
ZXN1bHQucmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2Vt
ZW50U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4Njhk
YzQ4ODMwYWZmZGM0NzFmZS4uZjYwOGM4ZGI1YzYwNjUzMGNhYTU5NmVkNmFiNWU5NWQ2Y2VkZTU5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpA
QCAtMjEyLDggKzIxMiw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2Vy
OjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShtaXNzcGVs
bGVkUmFuZ2UpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJlc3VsdCkpOwogCiAg
ICAgICAgIG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uICsgbWlzc3BlbGxl
ZFJhbmdlLmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9U
ZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tl
ck1hYy5tbQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRmZmI4NGVlNjM0Li5h
YzNiZWUwMGIxNjU5M2FjZjQ1NzFlYTk5YzExMDE2Y2MxNGY0NTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQsMjIgKzMzNCwyMCBA
QCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dyYXBoeTpOVUxMCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1
bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1Jhbmdl
IHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hl
Y2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdS
ZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNv
bWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9
ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVz
LmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5n
UmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdy
YW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50
VGFnIHNwCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJh
bmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxO
U1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlv
biA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0
aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9
ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0
YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFt
bWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0g
W2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAg
ICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTM3MCwzNiAr
MzY3LDMxIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1Rl
eHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6
Okxpbms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlu
cyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6
OlF1b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFz
aDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwot
ICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAg
ICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxh
Y2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmlu
Z107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2lu
Z1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAg
ICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgfQpAQCAtNDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAog
dm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxs
RG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1h
ckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ld
OwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBhdXRvIGNvcnJl
Y3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9y
IChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmlu
ZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0
Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNN
YWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwot
ICAgIE5TU3RyaW5nICpncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2Vy
RGVzY3JpcHRpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZ3JhbW1hckRldGFpbERp
Y3QgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBn
cmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rp
b25zLmdldCgpLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXSk7CisgICAgTlNTdHJpbmcgKmRl
c2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBO
U0RpY3Rpb25hcnkgKmRldGFpbCA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1h
clVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1h
ckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgfTsKIAotICAgIFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1t
YXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3QuZ2V0KCld
OworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGlu
Z1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsK
IH0KIAogdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3BlbGxEb2N1bWVudFRh
ZyBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29u
dGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJv
b2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggOWNlNWRiYWMxMTRhNDk1ZmVhNGE5ZTk1M2Q5YmZmYzgxZWJkNzZjZC4uNTJiYjdjNzYzZDAw
YjAwM2Q4MWNkMGU4YjE5Zjk4OWZjYWIxYmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTY1LDggKzY1LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIHVpbnQ2
NF90IGdlbmVyYXRlVGV4dENoZWNraW5nUmVxdWVzdElEKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCBmMThjYWE3MmNiZDk2NTMxNzU1ZTkyZWNmYjIw
ZWY0ZGI4Y2E1M2FmLi43MGEzOTAzNWQ1OGM4MTJjMmNiMDEzMTlmNWExNmM2ZmE1OWY1ZDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCkBAIC04Nyw3ICs4Nyw3
IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmFuZ2VBbmRPZmZzZXQ+
IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94CiAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24s
IHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgc2VsZWN0aW9uTG9jYXRpb24gKz0gb2Zmc2V0OwogCi0g
ICAgcmV0dXJuIHt7IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9v
dCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OworICAg
IHJldHVybiB7eyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24s
IGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OwogfQogCiB2b2lkIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmlu
ZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5n
dGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRp
dmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFRleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0
cmluZyBhbgogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0
b3JlID0gbG9jYXRpb25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3RvcmVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2Nh
dGlvbkluUm9vdCArIHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFj
ZW1lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3Rv
cmUgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVj
dGlvbkxvY2F0aW9uVG9SZXN0b3JlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxl
Y3Rpb25Ub1Jlc3RvcmUgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9j
YXRpb25Ub1Jlc3RvcmUsIDApOwogICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5t
b3ZlVG8oc2VsZWN0aW9uVG9SZXN0b3JlLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAg
ICB9CiAKICAgICBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5S
YW5nZTpOU01ha2VSYW5nZSgwLCBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdKSBvcHRp
b25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlk
PiAqYXR0cnMsIE5TUmFuZ2UgYXR0cmlidXRlUmFuZ2UsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAg
YXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24s
IGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRl
UmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CiAgICAgICAgIGlmICghYXR0
cmlidXRlQ29yZVJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTksNyArMTk5LDcg
QEAgQXR0cmlidXRlZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRl
ZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgYXV0byYgdGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFy
a2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAg
ICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5n
ZShjdXJyZW50VGV4dFJhbmdlKSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9m
ZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFu
Z2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFu
Z2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgICAgICBzaXplX3Qgc3VicmFuZ2VMb2NhdGlvbjsK
ICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTY1MWQ4YTM0Yzg5NTcyN2E4ZTJjZTQ1
MzIxN2RkY2Y1OWZiZjdkMC4uMWY5ZWMyNjE0MGY2YWM1YWJjMTY1OWQ1YTVjZjkwZjcxYWUyYWJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTU0NzAsNyArNTQ3MCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRf
dCBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGF1dG8gc3Vycm91bmRpbmdS
YW5nZSA9IG1ha2VSYW5nZShzdGFydE9mRWRpdGFibGVDb250ZW50KHNlbGVjdGlvblN0YXJ0KSwg
c2VsZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gY3Vyc29yUG9zaXRpb24gPSBXZWJDb3JlOjpjaGFy
YWN0ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSk7CiAgICAgYXV0byYgcm9vdE5vZGUgPSBzdXJy
b3VuZGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7Ci0g
ICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291
bnQpOworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoJnJv
b3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwogICAgIGlm
ICghc2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBkODlhMGM0MDdh
ODE4YWJmYWQ2NzE4NWYzY2IyNTIwOWJiYjExZjFmLi43M2ZiNTJlZWY0OTVhZGZkMGJmMzZjOTZj
ZjIwN2ZiZWM3YTk4ZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDA1MSwxOCArNDA1MSwyMCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0
X3QgbGVuZ3RoRGVsdAogICAgIHNpemVfdCBzZWxlY3Rpb25MZW5ndGg7CiAgICAgVGV4dEl0ZXJh
dG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2Vs
ZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAKLSAgICBDaGVja2VkSW50NjQgbmV3
U2VsZWN0aW9uTG9jYXRpb24geyBzZWxlY3Rpb25Mb2NhdGlvbiB9OwotICAgIENoZWNrZWRJbnQ2
NCBuZXdTZWxlY3Rpb25MZW5ndGggeyBzZWxlY3Rpb25MZW5ndGggfTsKLSAgICBuZXdTZWxlY3Rp
b25Mb2NhdGlvbiArPSBsb2NhdGlvbkRlbHRhOwotICAgIG5ld1NlbGVjdGlvbkxlbmd0aCArPSBs
ZW5ndGhEZWx0YTsKKyAgICBhdXRvIG5ld1NlbGVjdGlvbkxvY2F0aW9uID0gY2hlY2tlZFN1bTxD
aGFyYWN0ZXJDb3VudD4oc2VsZWN0aW9uTG9jYXRpb24sIGxvY2F0aW9uRGVsdGEpOworICAgIGF1
dG8gbmV3U2VsZWN0aW9uTGVuZ3RoID0gY2hlY2tlZFN1bTxDaGFyYWN0ZXJDb3VudD4oc2VsZWN0
aW9uTGVuZ3RoLCBsZW5ndGhEZWx0YSk7CiAKICAgICBpZiAobmV3U2VsZWN0aW9uTG9jYXRpb24u
aGFzT3ZlcmZsb3dlZCgpIHx8IG5ld1NlbGVjdGlvbkxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChyb290LCBuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0aW9u
TGVuZ3RoLnVuc2FmZUdldCgpKSkKLSAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBDaGFyYWN0ZXJS
YW5nZSBuZXdTZWxlY3Rpb25SYW5nZTsKKyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sb2NhdGlvbiA9
IG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpOworICAgIG5ld1NlbGVjdGlvblJhbmdl
Lmxlbmd0aCA9IG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKTsKKworICAgIGF1dG8gcmVz
b2x2ZWRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKnJvb3QpLCBuZXdTZWxlY3Rpb25SYW5nZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVkUmFuZ2UpLnB0cigp
LCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
OlllcywgVXNlclRyaWdnZXJlZCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAt
NDE3NywxNiArNDE3OSwxNSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdD
b250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAgICBSZWZQ
dHI8Q29udGFpbmVyTm9kZT4gcm9vdENvbnRhaW5lck5vZGUgPSByb290Tm9kZS0+aXNDb250YWlu
ZXJOb2RlKCkgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPihyb290Tm9kZS5nZXQoKSkgOiByb290
Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5k
TGVuZ3RoRnJvbVJhbmdlKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCByYW5nZU9mSW50ZXJlc3Qu
Z2V0KCksIHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uLCByYW5nZU9mSW50ZXJlc3RMZW5ndGgpOwog
Ci0gICAgICAgIENoZWNrZWRTaXplIG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RM
b2NhdGlvbiB9OworICAgICAgICBDaGVja2VkPENoYXJhY3RlckNvdW50LCBSZWNvcmRPdmVyZmxv
dz4gbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CiAgICAgICAg
IG1pZHBvaW50TG9jYXRpb24gKz0gcmFuZ2VPZkludGVyZXN0TGVuZ3RoIC8gMjsKICAgICAgICAg
aWYgKG1pZHBvaW50TG9jYXRpb24uaGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBtaWRwb2ludFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChyb290Q29udGFpbmVyTm9kZS5nZXQoKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNh
ZmVHZXQoKSwgMCk7CisgICAgICAgIGF1dG8gbWlkcG9pbnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqcm9vdENvbnRhaW5lck5vZGUpLCBtaWRwb2ludExvY2F0aW9uLnVuc2FmZUdldCgp
KSk7CiAKLSAgICAgICAgYXV0byBtaWRwb2ludCA9IG1pZHBvaW50UmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKTsKICAgICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gc3RhcnRP
ZldvcmQobWlkcG9pbnQpOwogICAgICAgICBpZiAoc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2Vs
ZWN0aW9uIDwgcmFuZ2VPZkludGVyZXN0U3RhcnQpIHsKICAgICAgICAgICAgIHN0YXJ0T2ZSYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IGVuZE9mV29yZChtaWRwb2ludCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggY2E0NzkzMTA1NGI4MDI2MjY4NzNlM2Y1M2ZiNWVlMzA1NGU5ODUxMy4uM2I5
NDYzMDRkZmI3NTIxMTQxM2U5ZjhkMTEwN2Y2Zjg3NjU5OWQyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQpAQCAtODY1LDEyICs4NjUsMTEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gV2ViRWRp
dG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkKIAogICAgIE5T
QXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyXSBjaGVja1NwZWxsaW5nT2ZTdHJpbmc6c3RyaW5nLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENv
cHlpbmcoKS5nZXQoKV07CiAgICAgZm9yIChOU1ZhbHVlICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNv
bWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jl
c3VsdCByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQgJiYgcmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChp
bmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAg
ICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1
bHQucmFuZ2VWYWx1ZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgfQog
CkBAIC05MzksMTEgKzkzOCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJP
ZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIEdy
YW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAgICAgICAgTlNWYWx1ZSAqZGV0YWlsUmFuZ2VB
c05TVmFsdWUgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJSYW5nZV07CiAgICAgICAg
IEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZSk7Ci0gICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNS
YW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJU
KGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChk
ZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxvY2F0aW9u
ID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sZW5ndGgg
PSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1Zh
bHVlLnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChk
ZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOworICAgICAgICBncmFt
bWFyRGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxSYW5nZUFzTlNWYWx1
ZS5yYW5nZVZhbHVlKTsKICAgICAgICAgZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBb
ZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICBO
U0FycmF5ICpndWVzc2VzID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlv
bnNdOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTU3LDIy
ICs5NTQsMjAgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJh
eSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzOwogCiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5j
b21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0
UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5
cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICAgICAgQVNT
RVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQo
cmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5y
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVz
dWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gKm1ha2VD
aGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQg
Z3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBm
b3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAgICAgICAgICAgICAgICAgR3JhbW1hckRl
dGFpbCBkZXRhaWw7CkBAIC05ODEsOCArOTc2LDcgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMK
ICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05T
VmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5T
UmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0
YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkZXRhaWwubGVuZ3RoID0gZGV0
YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdlID0gKm1ha2VD
aGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAgICAgICAgICAgICAgICBkZXRhaWwudXNl
ckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2Vy
RGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21p
bmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgICAg
ICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTkzLDM2ICs5ODcsMzEg
QEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21p
bmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6TGluazsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVj
a2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0
OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4
dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpS
ZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
KyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNraW5nVHlwZXMu
Y29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAg
ICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVu
dFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9
CkBAIC0xMDQ5LDE2ICsxMDM4LDE4IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3Qg
U3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0
YWlsKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBjb3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwuZ3Vl
c3Nlcy5zaXplKCk7IGkrKykgewotICAgICAgICBOU1N0cmluZyogZ3Vlc3MgPSBncmFtbWFyRGV0
YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOwor
ICAgIE5TTXV0YWJsZUFycmF5ICpjb3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07
CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAg
ICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMg
YWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5n
ZSA9IE5TTWFrZVJhbmdlKGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVu
Z3RoKTsKLSAgICBOU1N0cmluZyogZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRh
aWwudXNlckRlc2NyaXB0aW9uOwotICAgIE5TRGljdGlvbmFyeSogZ3JhbW1hckRldGFpbERpY3Qg
PSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVz
Y3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlvbnMsIE5TR3JhbW1h
ckNvcnJlY3Rpb25zLCBuaWxdOwotICAgIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1h
clBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOworICAgIE5TU3RyaW5nICpkZXNjcmlw
dGlvbk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNEaWN0
aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFtbWFy
VXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAgICAgTlNHcmFtbWFy
Q29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucywKKyAgICB9OworICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6
YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGljdGlvbmFyeV07CiB9CiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYg
bWlzc3BlbGxlZFdvcmQpCkBAIC0xMTk0LDcgKzExODUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQgYQogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKSB7
CiAgICAgICAgIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoID0gYWNjZXB0ZWRDYW5kaWRhdGUu
cmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudExlbmd0aCA+IDAp
IHsKLSAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2Vw
dGVkQ2FuZGlkYXRlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CisgICAgICAgICAgICBO
U1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5yYW5n
ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAgTlNSYW5nZSBzb2Z0
U3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKE5TTWF4UmFuZ2UocmVwbGFjZWRSYW5nZSkgLSAxLCAx
KTsKICAgICAgICAgICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5lbmRzV2l0
aCgiICIpKQogICAgICAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKil2aWV3IF9zZXRTb2Z0U3Bh
Y2VSYW5nZTpzb2Z0U3BhY2VSYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCBlZDVlZDIwNDAyOTU1NzhlYmU5OWViODA3NzQyZDdlMDZiMDQ5
ZTMwLi5kZDg3YWQ0OWEzNWE4MmUzMmRmMmJjZWNmNWRlMmZlNzVmYjY4NDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgyMSwxMCArODIxLDkg
QEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
bnNyYW5nZQogCiAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbyly
YW5nZUlzUmVsYXRpdmVUbwogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkK
KyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOwor
ICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3Jhbmdl
Lmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4g
SU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2Nh
dGlvbjsKIAogICAgIGlmIChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVU
bzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlz
IHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0
CkBAIC04MzYsNyArODM1LDcgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRv
RE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICAgICAgYXV0
byogZWxlbWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWxlbWVudCwgbnNyYW5nZS5sb2NhdGlv
biwgbnNyYW5nZS5sZW5ndGgpOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQp
LCAqcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2Vi
UmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC04NDQsMTAgKzg0Myw5IEBAIC0gKFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2Ug
cmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFy
eVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0
YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFn
cmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAg
fSwgKnBhcmFncmFwaFN0YXJ0IH0pOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRl
eCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5k
ID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWlu
ZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RG
TW92ZShzY29wZUVuZCkgfSwgKnJhbmdlKSk7CiB9CiAKIC0gKERPTVJhbmdlICopX2NvbnZlcnRO
U1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWRkZjIzZWNmM2NiYTViOWJjOWVhOWYyNmVlZGNm
MDM3OTk1Njg4Yy4uNmY5MWVmYjlhOTAxYWUxY2NiYWU1NmM5YjJmZDk5YzE0MDk5NTJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzI3OCwxMiAr
NzI3OCw5IEBAIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hl
Y2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHlwZSB0eXBlCiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0
KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJh
bmdlID0gbnNSZXN1bHQucmFuZ2U7Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUobnNSZXN1bHQu
cmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICByZXN1bHQucmFu
Z2UgPSAqV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1M2VjM2I4NmZiZWMxYTViNGVkNWU4OTRlM2Q2OTRlOGI4
N2Y5ZWUuLjAxZmRiNjg1Zjk5ZDYxYjg3ZTVhN2YzYmQxZGMwYTMzNmJhMGNhMDcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
IG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKIDIwMjAtMDMtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IENoYW5nZSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIHRvIG5vdCByZXF1aXJlIGEgbGl2ZSBy
YW5nZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394757</attachid>
            <date>2020-03-27 14:05:09 -0700</date>
            <delta_ts>2020-03-27 16:05:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200327140508.patch</filename>
            <type>text/plain</type>
            <size>160506</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE0NjIyYzg5OWNjNWRi
OTc5MWMwOGY3NDE1MjdjMzdmZmNjNTYyYy4uMGMzODYxMDM1M2M5Mjg5ZDUxNDJiNjViYWQ0ZDhm
MTk3MzJiMTExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIb3ZlcmluZyBvdmVyIGNvdW50cmll
cyBhdCBodHRwczovL2NvdmlkaW5jLmlvLyBzaG93cyBiaXphcnJlIHJlbmRlcmluZyBhcnRpZmFj
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNWVjMmFlM2YzZTJkYTFiMzVmNjg3OWIxMWU3MWJjMzJjYzVhNTUzYS4u
NjhhZGY2NTAxYzY2YWYyYzYzOTcyMDIxMDNhMWU4Y2UyODUzZmMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9m
ZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
IDIwMjAtMDMtMjcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQgc2hvdWxkIHZhbGlkYXRlIGl0cyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQzNGRmOGRmNTRjNzkwMTc3
Zi4uYzRkNjM2OGE2NzlhYjg1YWY5MDliOWNlNzMyMTNmOGQxN2ZhNDU1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBzaG91
bGQgYXZvaWQgcmVhZGluZyBVUkwgc3RyaW5ncyBmcm9tIHRoZSBwYXN0ZWJvYXJkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCA5YWQ1Mzc4NTMyNGJiMzRjMGRkYjlkY2MxMTcwYzhjZGQ0YTM2NmE4Li43
OTdkM2MxMzk0ODMzYWQ4OGI3NTM0ZGQyNGUzZGZlNjc2MTlmZWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCiAg
ICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCiAKKyAgICBlZGl0
aW5nL0NoYXJhY3RlclJhbmdlLmgKICAgICBlZGl0aW5nL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5o
CiAgICAgZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCiAgICAgZWRpdGluZy9Db21wb3Np
dGlvblVuZGVybGluZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZWEzYzRiNGRmMTk0MjkzOTRhZjM4M2ZmMjUwZjYwMjU5OTY3
OTQyYi4uYzU5MGUxNWViMGZmMGQ3MWMzOTY4MzQ2YzdlNTdiNjRkNzA1NzJjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcz
NCw2ICsyNzM0LDcgQEAKIAkJOTNGMTlCMTcwODI0NUU1OTAwMUU5QUJDIC8qIGxpYmljdWNvcmUu
ZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0YxRDMxQTA1NThDQzVDMDA4MjFCQzAgLyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNG
MUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUI4MTJENTMyQzQwMDgzMkJF
QyAvKiBXZWJHTExvc2VDb250ZXh0LmggKi87IH07CiAJCTkzRjFENUMxMTJENTMzNTYwMDgzMkJF
QyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNv
bnRleHQuaCAqLzsgfTsKKwkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJh
bmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Yy
Q0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjlCNkUxMEJBMEZCNzIw
MDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCAqLzsg
fTsKQEAgLTEwOTM0LDYgKzEwOTM1LDcgQEAKIAkJOTNGMUQ1QjkxMkQ1MzJDNDAwODMyQkVDIC8q
IFdlYkdMTG9zZUNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMTG9zZUNv
bnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRTEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTExvc2VDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFE
OCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
aGFyYWN0ZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y2RjFFQTEy
N0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y2RjFFQjEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb250ZXh0RXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUMxMjdGNzBCMTAwNTVD
QjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
TENvbnRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc1OSw2
ICsyMTc2MSw3IEBACiAJCQkJOTMzMDlEOEMwOTlFNjQ5MTAwNTZFNTgxIC8qIEJyZWFrQmxvY2tx
dW90ZUNvbW1hbmQuaCAqLywKIAkJCQlGNEQ5ODE3RTIxOTVGQkY2MDA4MjMwRkMgLyogQ2hhbmdl
TGlzdFR5cGVDb21tYW5kLmNwcCAqLywKIAkJCQlGNEQ5ODE3RDIxOTVGQkY2MDA4MjMwRkMgLyog
Q2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8sCisJCQkJOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4
IC8qIENoYXJhY3RlclJhbmdlLmggKi8sCiAJCQkJN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8q
IENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovLAogCQkJCTkzMzA5RDhEMDk5RTY0OTEwMDU2RTU4
MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOEUwOTlFNjQ5MTAw
NTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggKi8sCkBAIC0yOTY0Miw2ICsyOTY0NSw3
IEBACiAJCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0
ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTU5MkY3ODFBOTJBQTI4MDAxRjg4NjIgLyog
Q2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNGMkNDOTMyNDI3RkI5
QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0I4RkZE
MTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5w
dXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ4MzEwNzVjZDMxMWQ5NTJjMmIxODY1OWJmZTM0
ODU0ZWExN2M3NWIuLmQ1NjI5MDlmZmQyMWQ1ODQ2YTM3NDhhNDc0ZDZlMzljZWE4YTQ5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0yMzM4LDExICsyMzM4
LDEwIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdlICopbGl2ZVJhbmdlCiAK
IC0gKFJlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKIHsK
LSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgYXV0byByYW5nZSA9IG1h
a2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8IG5zcmFuZ2Uu
bG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIG5zcmFuZ2UubGVu
Z3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247Ci0gICAgICAgIAorCiAgICAgLy8gb3Vy
IGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5wdXQg
bWV0aG9kcyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5p
bmcgdGhlIHNlbGVjdGlvbgogICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRl
eHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdApAQCAtMjM1
Miw3ICsyMzUxLDkgQEAgLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFu
Z2UpbnNyYW5nZQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5kb2N1bWVudCgpOwogICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJh
bWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAg
IEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3Ro
KTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
Y3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnNjb3BlKSwgKnJhbmdlKSk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIGlu
dGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcgYSBWaXNpYmxlUG9zaXRp
b24gYW5kIGNvbnZlcnQgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggODU5MmYwNzA3ODNkZjVhZDE4MzgyNzk0ZTVhZTlhZjk4YzBlZjJiMy4uYTNmNTNjOGUx
ZWEzNjM0YzRhOGU1YjA5MmFhOGYzNzIwMGJmYmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KQEAgLTEwOTgsOSArMTA5OCw5IEBAIHN0YXRpYyB2b2lkIEFYQXR0
cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZywKICAgICAgICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgY29uc3QgVGV4
dENoZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOwotICAgICAgICAgICAgQVhBdHRy
aWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxl
ZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdl
LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJp
YnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9j
YXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0
LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1h
cmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQucmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkpOwogI2Vu
ZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMzY4MCwxOSArMzY4MCwyMSBAQCAt
IChpZClfdGV4dE1hcmtlckZvckluZGV4OihOU0ludGVnZXIpdGV4dEluZGV4CiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHRleHRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LCB0ZXh0SW5kZXgsIDApOwotICAgIGlmICghdGV4dFJhbmdlIHx8ICF0ZXh0UmFuZ2UtPmJvdW5k
YXJ5UG9pbnRzVmFsaWQoKSkKKworICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UodGV4
dFJhbmdlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0
ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKKworICAg
IGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAg
ICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byBib3VuZGFyeSA9
IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
KmRvY3VtZW50RWxlbWVudCksIHRleHRJbmRleCk7CisgICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQg
PSBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNyZWF0ZUxpdmVSYW5n
ZSh7IGJvdW5kYXJ5LCBib3VuZGFyeSB9KSwgdHJ1ZSk7CisgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKIH0KIAogLy8gVGhlIFJU
RiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2Nlc3Np
YmlsaXR5IG9iamVjdCB0aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGY0ZTUxNzUwMTFhN2FmODA0MjlkNjJkNjExOWMwODM5
MDNjZmEzZDguLmUxM2UzM2M4ZmE2ZDgyYjZmOGI2YTIzODRkOTVhOGJmNDgxODBhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpkZXRhY2goKQogICAg
IG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzID0geyB9OwogfQogCi1WZWN0b3I8UmVmUHRy
PFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25z
dCBSYW5nZSYgcmFuZ2UpCitWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBmb3IgKFRleHRJdGVyYXRv
ciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4dEl0ZXJhdG9yLmF0RW5kKCk7IHRleHRJdGVyYXRv
ci5hZHZhbmNlKCkpCkBAIC02OCwxMyArNjgsMTMgQEAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHIK
ICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogewogICAgIGZvciAo
YXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1h
cmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKHR5cGUsIHRl
eHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgZGVzY3JpcHRp
b24pKTsKIH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5n
ZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUpCit2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNl
IDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNl
LT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0
T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCkpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2
b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlc01hcmtlcihSYW5nZSYgcgogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihSYW5nZSYgcmFuZ2UsIGNvbnN0IFJl
dGFpblB0cjxpZD4mIG1ldGFkYXRhKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZERpY3RhdGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IFJl
dGFpblB0cjxpZD4mIG1ldGFkYXRhKQogewogICAgIGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xs
ZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0
Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25SZXN1
bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgU3Ry
aW5nKCksIFZlY3RvcjxTdHJpbmc+KCksIG1ldGFkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNjllMjU0ZDVlNzJmMTU3NmMzMWRj
MTdjZWY4YjZmYzc4ODlhN2VjNC4uMzYyZDc0NzQzNDllNGJjZjhiMzYzOWNkZjQxMmNhNzlhM2M4
YjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBSZW5k
ZXJlZERvY3VtZW50TWFya2VyOwogCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7CisKIGNsYXNzIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00
OCwxNSArNTAsMTUgQEAgcHVibGljOgogICAgIH5Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIoKTsK
IAogICAgIHZvaWQgZGV0YWNoKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIo
UmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CiAgICAgdm9pZCBh
ZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9k
ZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUsIERvY3VtZW50TWFya2VyOjpEYXRhJiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlJiwgYm9vbCBhY3RpdmVN
YXRjaCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFkZE1hcmtlcihSYW5n
ZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8
aWQ+JiBtZXRhZGF0YSk7CiAgICAgdm9pZCBhZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzTWFya2VyKFJhbmdlJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyk7
Ci0gICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoUmFuZ2UmLCBjb25zdCBSZXRhaW5Q
dHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CiAjZW5kaWYK
ICAgICB2b2lkIGFkZERyYWdnZWRDb250ZW50TWFya2VyKFJhbmdlJik7CiAKQEAgLTEwNyw3ICsx
MDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNYXJrZXIoTm9kZSYsIGNv
bnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGNvbGxlY3RU
ZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxS
ZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0Pj4gTWFya2VyTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBhNGRiYTlmOTNjMWU4MWZlNWUyYjE3YWU3
Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2MmNkM2E1YTEyNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb3Np
dGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJWE1FOiBDb25zaWRlciByZW5hbWluZyB0
aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdlIG5vcm1hbGx5IHVzZSAi
Y3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBvYmplY3RzLgogUG9zaXRp
b24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQpOwot
UG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQm
KTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihj
b25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEJvdW5kYXJ5
UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNhZjg1Y2I4MzA3OGQ3YTllNTEyMTdmMTQw
NTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1YjcwMjA4YTdmN2IzMDYyN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCArNTMsMjMgQEAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYgYikKICAgICByZXR1cm4g
YS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQogCisvLyBGSVhNRTogTm9k
ZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4gYWxnb3JpdGhtIGxpa2UgdGhpcywgc2lu
Y2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4gdGhlIGlzQ2hhcmFjdGVyRGF0YU5vZGUg
dmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0aWMgYm9vbCBmYXN0SXNDaGFyYWN0ZXJE
YXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuICFub2RlLmlzQ29udGFpbmVyTm9k
ZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2RlLmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSk7
Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBOb2RlOjpsZW5ndGggc2luY2UgdGhlIERP
TSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2RlJ3MgbGVuZ3RoLgorc3RhdGljIHVuc2ln
bmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmIChmYXN0SXNDaGFyYWN0ZXJE
YXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFjdGVyRGF0YT4obm9kZSku
bGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRDaGlsZE5vZGVzKCk7Cit9CisKK1NpbXBs
ZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJiBub2RlKQoreworICAg
IHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxlbmd0aChub2RlKSB9IH07Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNkOTg1NWE4OTE5YzM3NmUxNTdkMWNlZDlj
NWRlZWQ3YTE5NTcyNC4uYmQwZTFjNGVjZDBhMDE4NDM3ZjE5OTA0NmU1NTdkY2EyY2MyNzEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUxLDYgKzUxLDkgQEAgc3RydWN0IFNpbXBs
ZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7CiB9OwogCitTaW1w
bGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JUIFNp
bXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJik7CisKIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKIGlu
bGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcAppbmRleCBlYmQ0Y2FiMzI2ZjJjMDk3NTU0MGNiMWQ2ZjllN2ExMjI3OWIyOTg4Li4xMjY4
MTNjNmRkMGIzYjc4ZGRiZDMyMmMzMTMzNGU2ODgwNmY5OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTU5OSwx
NyArNTk5LDE4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5h
dGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kOjpjcmVhdGUocmFuZ2UuY2xvbmVSYW5nZSgpLCBhbHRlcm5hdGl2ZSktPmFwcGx5
KCk7CiAKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZpZWQgdGhlIERPTSwgc3Vj
aCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlz
IG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1
dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRyZWVTY29wZVJvb3QucHRyKCksIHBhcmFn
cmFwaE9mZnNldEluVHJlZVNjb3BlLCBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRl
cm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbikKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhTdGFydENvbnRhaW5pbmdD
b3JyZWN0aW9uID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cyh0cmVlU2NvcGVSb290KSwgcGFyYWdyYXBoT2Zmc2V0SW5UcmVlU2NvcGUpOwor
ICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uID0gbWFrZUJv
dW5kYXJ5UG9pbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAg
ICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAg
ICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCp1cGRhdGVk
UGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVjdGlvbk9mZnNldEluUGFy
YWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgQ2hhcmFjdGVyQ291bnQgYWx0ZXJu
YXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gYWx0ZXJuYXRpdmUubGVuZ3RoKCk7CisgICAg
YXV0byByZXBsYWNlbWVudFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgdXBkYXRlZFBh
cmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24sICp1cGRhdGVkUGFyYWdyYXBoRW5kQ29u
dGFpbmluZ0NvcnJlY3Rpb24gfSwgeyBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVy
bmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCB9KTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKHBsYWluVGV4dChyZXBsYWNlbWVudFJh
bmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50
UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBtYXJr
ZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKTsKKyAgICBh
dXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMo
KTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCiAgICAgICAg
IG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtl
clR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4YWI3NmU1YmU0NjBiMjM0OS4uMDg0ZWE3
MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI4MywxMiArMjgzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAg
ICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0
KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZS5nZXQoKSwgc3Rh
cnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBlbmRJbmRleCwgMCwgdHJ1
ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICAgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFydFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBhdXRvIGVuZFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5kSW5kZXgsIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogfQogCiBzdGF0aWMgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMDFhZWRiZmYzNzJhYmY5YjdmZDJhMjZlZjM3N2NlYmNiNWQyZjFlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5o
CkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYg
VVNFKEZPVU5EQVRJT04pCit0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQ2hhcmFjdGVyQ291bnQgPSBzdGQ6OnNp
emVfdDsKKworc3RydWN0IENoYXJhY3RlclJhbmdlIHsKKyAgICBDaGFyYWN0ZXJDb3VudCBsb2Nh
dGlvbiB7IDAgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAwIH07CisKKyNpZiBVU0Uo
Q0YpCisgICAgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoRk9V
TkRBVElPTikKKyAgICBvcGVyYXRvciBOU1JhbmdlKCkgY29uc3Q7CisjZW5kaWYKK307CisKKyNp
ZiBVU0UoQ0YpCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENG
UmFuZ2UpOworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKK09wdGlvbmFsPENoYXJhY3Rl
clJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisjZW5kaWYKKworLy8gaW5saW5l
cworCisjaWYgVVNFKENGKQorCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIENGUmFu
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBDRlJhbmdlTWFrZShsb2NhdGlvbiwgbGVuZ3RoKTsK
K30KKworaW5saW5lIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2Uo
Q0ZSYW5nZSByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91
bmQgfHwgcmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKHJhbmdlLmxlbmd0aCA+PSAw
KTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPCAwIHx8IHJhbmdlLmxlbmd0aCA8IDApCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJhY3RlclJhbmdlIHsgc3Rh
dGljX2Nhc3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8Q2hh
cmFjdGVyQ291bnQ+KHJhbmdlLmxlbmd0aCkgfTsKK30KKworI2VuZGlmCisKKyNpZiBVU0UoRk9V
TkRBVElPTikgJiYgZGVmaW5lZChfX09CSkNfXykKKworaW5saW5lIENoYXJhY3RlclJhbmdlOjpv
cGVyYXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UobG9jYXRp
b24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNo
YXJhY3RlclJhbmdlKE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09
IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENo
YXJhY3RlclJhbmdlIHsgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCB9OworfQorCisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxNTRiYjg3YzMzMWQ0MWQ5MTYxNjJlN2Q5
MTEwZDQ3ODgyN2QxYzcwLi40NmMyNTE3MmViMmJlZGFmMjVlNzkzMjNmNWJmMzgyMzljYTEwYWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cApAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAo
c3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9PSBkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgaW50IGVuZEluZGV4ID0gLTE7Cisg
ICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IHN0YXJ0SW5kZXg7CisgICAgT3B0aW9uYWw8Q2hh
cmFjdGVyQ291bnQ+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0g
ZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVj
dGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwpA
QCAtMTUyOCwxNiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlmIChz
dHlsZUluRW1wdHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkKICAgICAg
ICAgYXBwbHlTdHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAgaWYgKHBy
ZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJlc2VydmVT
ZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAgICAgICAvLyBGcmFnbWVu
dCBjcmVhdGlvbiAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJlZ3VsYXIK
ICAgICAgICAgLy8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2VzIHRoYXQg
d2VyZSByZW5kZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRv
IGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAg
ICAgICAgIC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEg
bG9jYXRpb24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2gg
d2lsbCByZXR1cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVz
dGluYXRpb25JbmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFu
Z2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFi
bGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwotICAg
ICAgICBpZiAoc3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9u
KCksIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOworICAgICAgICBhdXRvIHN0
YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlv
bihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0
aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgYXV0byBlbmQgPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICplbmRJbmRl
eCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMp
KTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSwg
b3JpZ2luYWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAKaW5kZXggNjA0N2I5NDY0M2UzZDVlYTU3M2FmYmRjZjY3NmIyMDExYWM4NzVmNy4u
ZGZiYTcyMWY1ZWFkM2EyMDNlZDZmNjRiOWJjMDVlYWQyMzllYzMzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE0LDEyICsxMTE0LDEwIEBAIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpCiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5k
ZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1ZSk7Ci0g
ICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBvcGVyYXRp
b25zIGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAotICAgIC8vIG9mIHByb2JsZW1zIHdpdGgg
VGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMuCi0g
ICAgaWYgKCFyYW5nZSkKKyAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiB7IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBp
bmRleEFzQ2hhcmFjdGVyQ291bnQgPSBpbmRleDsKKyAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGUpLCBpbmRleEFzQ2hhcmFjdGVyQ291bnQsIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRv
cihOb2RlJiBub2RlLCBpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
NDNhYzBmYzAxMDk1MmJhYzRmMTA2ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uYjY5NDg5Zjc2NTc1ZDVm
YTI4M2JlY2FkMDRjOTEyZWVkOTBkYzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMjIyMywxNSArMjIyMywxNSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFm
dGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBz
ZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQo
KTsKICAgICAKLSAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNv
dW50IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRh
aWw7Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50
IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJj
aFJhbmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwogICAgIFN0cmluZyBtaXNzcGVs
bGVkV29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zm
c2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBmb3VuZE9mZnNldCA9IDA7CiAgICAgU3RyaW5n
IGZvdW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAg
ICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBAIC0yMzA3LDEwICsyMzA3LDEw
IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBzbyB3ZSBk
cmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIEFTU0VSVChi
YWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAgIEFTU0VSVChncmFtbWFyRGV0
YWlsLmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgICAg
IEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICAKICAgICAg
ICAgLy8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5j
dHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFkR3JhbW1h
clJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCBncmFt
bWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5s
ZW5ndGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJS
YW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFy
RGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAg
ICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihi
YWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1fZnJhbWUu
c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApAQCAtMjMyMiw3ICsyMzIy
LDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBidXQgbm90
IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1cGRhdGUg
dGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2Ug
ZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAgICAgICAgYXV0byBtaXNz
cGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdl
LCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOworICAgICAgICBh
dXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxpbmdTZWFy
Y2hSYW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgfSk7
CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVj
dGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAgLTI3NzMsNyArMjc3Myw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNraW5nKFJhbmdlJiByYW5nZVRv
UmVwbGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6
Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFwcGx5KCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFw
aChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1
bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIFJhbmdl
JiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgQ2hhcmFjdGVyQ291
bnQgcmVzdWx0TG9jYXRpb24sIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCkKIHsKICAgICBh
dXRvJiBzY29wZSA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJhZ3JhcGhS
YW5nZSgpLnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSk7CiAKQEAgLTI3ODYsMTAgKzI3ODYs
OSBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogICAgIC8vIFRleHRDaGVja2luZ1BhcmFncmFw
aCBtYXkgYmUgb3JwaGFuZWQgYWZ0ZXIgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtdXRhdGVk
IERPTS4KICAgICAvLyBTZWUgPHJkYXI6Ly8xMDMwNTMxNT4sIGh0dHA6Ly93ZWJraXQub3JnL2Iv
ODk1MjYuCiAKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFwaExvY2F0aW9u
LCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCk7
Ci0KLSAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
Km5ld1BhcmFncmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkp
OwotICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFu
Z2UuY29weVJlZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhS
YW5nZS5nZXQoKSk7CisgICAgYXV0byBuZXdQYXJhZ3JhcGhSYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHBhcmFncmFw
aExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3Vs
dExlbmd0aCB9KTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShuZXdQYXJhZ3JhcGhSYW5nZSwgeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgfSk7CisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKGNyZWF0
ZUxpdmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVj
a2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKG5ld1BhcmFncmFwaFJhbmdlKSk7CiB9CiAKIHZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC0yODEx
LDcgKzI4MTAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogI2VuZGlmCiAKICAgICAvLyBF
eHBhbmQgdGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4
dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KLSAgICBpbnQgc2VsZWN0aW9uT2Zm
c2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBzZWxlY3Rpb25PZmZzZXQgPSAwOwogICAgIGJv
b2wgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSBmYWxzZTsKICAgICBib29sIHNlbGVjdGlv
bkNoYW5nZWQgPSBmYWxzZTsKICAgICBib29sIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9
IGZhbHNlOwpAQCAtMjgyMyw5ICsyODIyLDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNl
Rm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAg
ICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gcGFyYWdyYXBo
Lm9mZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICAg
ICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChz
ZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dExl
bmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpID09IG5l
d2xpbmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYg
KHNlbGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgfHwgcGFyYWdyYXBo
LnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKICAgICAg
ICAgICAgICAgICBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gdHJ1ZTsK
LSAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8
PSBwYXJhZ3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIo
cGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkpKQorICAgICAgICAgICAg
aWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50
ZXh0KCkubGVuZ3RoKCkgJiYgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgu
dGV4dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdKSkKICAgICAgICAgICAgICAgICB1c2VBbWJpZ3Vv
dXNCb3VuZGFyeU9mZnNldCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODMzLDE0ICsy
ODMyLDE0IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNr
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgaW50IG9mZnNldER1ZVRvUmVw
bGFjZW1lbnQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgY29uc3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBw
YXJhZ3JhcGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAg
IGNvbnN0IFRleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKLSAg
ICAgICAgY29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9m
ZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSBy
ZXN1bHRzW2ldLmxlbmd0aDsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0g
cmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCBhdXRvbWF0
aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdSYW5nZUVu
ZE9mZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVu
dDsKKyAgICAgICAgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBl
OworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ucmFu
Z2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJD
b3VudCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLnJhbmdlLmxlbmd0aDsKKyAgICAgICAgQ2hh
cmFjdGVyQ291bnQgcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExl
bmd0aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2Nh
dGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1bHRzW2ldLnJlcGxhY2VtZW50
OwotICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0gdXNl
QW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRF
bmRMb2NhdGlvbjsKKyAgICAgICAgYm9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9
IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVz
dWx0RW5kTG9jYXRpb247CiAKICAgICAgICAgLy8gT25seSBtYXJrIG1pc3NwZWxsaW5nIGlmOgog
ICAgICAgICAvLyAxLiBDdXJyZW50IHRleHQgY2hlY2tpbmcgaXNuJ3QgZG9uZSBmb3IgYXV0b2Nv
cnJlY3Rpb24sIGluIHdoaWNoIGNhc2Ugc2hvdWxkTWFya1NwZWxsaW5nIGlzIGZhbHNlLgpAQCAt
Mjg1MCwxNiArMjg0OSwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBpZiAo
c2hvdWxkTWFya1NwZWxsaW5nICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIHJlc3Vs
dFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcKICAgICAgICAgICAgICYmIHJlc3Vs
dExvY2F0aW9uID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0RW5kTG9jYXRp
b24gPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91
bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExv
Y2F0aW9uID49IDApOwotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdy
YXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAg
YXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRp
b24sIHJlc3VsdExlbmd0aCB9KTsKICAgICAgICAgICAgIGlmICghbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1JhbmdlKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5n
UmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOwotICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2Nh
dGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFt
bWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSkp
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9u
ID49IDApOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHRzW2ldLmRldGFp
bHMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDAgJiYgZGV0YWls
LmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdS
YW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0
aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3Jh
cGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5n
dGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCAmJiBk
ZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFw
aC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9j
YXRpb24sIGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiAr
IGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAg
ICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFt
bWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC0yODc3LDcgKzI4NzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VG
b3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAg
ICAgICAgICAgLy8gMi4gVGhlIHJlc3VsdCBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3VvdXMgYm91
bmRhcnkuCiAgICAgICAgICAgICAvLyAgICAoRklYTUU6IHRoaXMgaXMgcmVxdWlyZWQgdW50aWwg
Njg1MzAyNyBpcyBmaXhlZCBhbmQgdGV4dCBjaGVja2luZyBjYW4gZG8gdGhpcyBmb3IgdXMKICAg
ICAgICAgICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50Lmxlbmd0aCgpID4gMCAm
JiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdl
VG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5n
dGgpOworICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAKICAgICAgICAgICAgIC8vIEFk
ZGluZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJl
IHR5cGVkLgogICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6
TGluayAmJiBzZWxlY3Rpb25PZmZzZXQgIT0gcmVzdWx0RW5kTG9jYXRpb24gKyAxKQpAQCAtMjky
Miw3ICsyOTIxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxs
Q2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciByZXN1bHRzIGZvciB0aGUgcmVw
bGFjZWQgdGV4dC4KLSAgICAgICAgICAgICAgICB3aGlsZSAoaSArIDEgPCByZXN1bHRzLnNpemUo
KSAmJiByZXN1bHRzW2kgKyAxXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0g
cmVzdWx0TG9jYXRpb24pCisgICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5z
aXplKCkgJiYgcmVzdWx0c1tpICsgMV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxh
Y2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBpKys7CiAKICAg
ICAgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKQEAgLTI5MzEsNyArMjkzMCw3
IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlv
bk9mZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24p
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcGFyYWdyYXBo
LnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7
IHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKICAgICAgICAgICAgICAg
ICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRSYW5nZS5wdHIoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEg
bWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0
IGJlIHJlLWNvcnJlY3RlZC4KQEAgLTI5NDUsOCArMjk0NCw4IEBAIHZvaWQgRWRpdG9yOjptYXJr
QW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVj
dG9yPFRlCiAgICAgICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBleHRlbmRlZFBhcmFncmFwaChX
VEZNb3ZlKHBhcmFncmFwaCkpOwogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBwb3NpdGlv
biBpZiB3ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwogICAgICAgICBleHRlbmRlZFBhcmFn
cmFwaC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwotICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlv
bkFmdGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9mZnNldCA8
PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNl
bGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zm
c2V0KTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rp
b25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgeworICAgICAgICAg
ICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKHsgMCwg
c2VsZWN0aW9uT2Zmc2V0IH0pOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3Zl
VG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAg
ICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCiAgICAgICAgICAg
ICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CkBAIC0yOTcz
LDcgKzI5NzIsOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXItPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6
UmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVj
a2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7CiAgICAgcmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIFNtYXJ0UmVw
bGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7Ci0gICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBw
YXJhZ3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJp
bmcubGVuZ3RoKCkpOworICAgIENoYXJhY3RlckNvdW50IHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXND
aGFyYWN0ZXJDb3VudCA9IHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8gY2hhbmdl
ZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwg
cmVwbGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogICAgIGNoYW5nZWRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdl
ZFJhbmdlLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vs
c2UKQEAgLTM3NzcsMTIgKzM3NzcsMTIgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVw
aG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKIAogICAg
ICAgICBBU1NFUlQoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8IGxlbmd0
aCk7CiAKLSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24g
KyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3Ro
ID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisgICAg
ICAgIENoYXJhY3RlckNvdW50IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVs
YXRpdmVTdGFydFBvc2l0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZUxlbmd0
aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxOwogCi0g
ICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJy
YW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0
aCB9KTsKIAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJhbmdlLnB0cigpKTsKKyAg
ICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2Uoc3VicmFuZ2UpKTsKICAg
ICAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoc3VicmFuZ2Us
IERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQb3Np
dGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTM5OTIsMTQgKzM5OTIsMTQgQEAg
UmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBj
b25zdAogCiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQo
Y29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXN1
bHQubGVuZ3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5nZSA9IGNvbnRleHRSYW5n
ZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29u
dGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgIHJldHVybiBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3Vs
dC5yYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggYWQ4
Mjc4ODljYWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1ZTM3NC4uZjgzMjcyYzI4ZjBhMGQ3ZDY3
YzBlNzEyMjRhNzdhYzk0MWVhZjUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgdm9pZCBm
aW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmll
dyB0ZXh0LCBWZQogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBiYWRHcmFtbWFyOwogICAg
ICAgICBiYWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAg
ICBiYWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlv
bjsKLSAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOworICAgICAg
ICBiYWRHcmFtbWFyLnJhbmdlLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJM
b2NhdGlvbjsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sZW5ndGggPSBiYWRHcmFtbWFyTGVu
Z3RoOwogICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1tYXJEZXRh
aWxzKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7CiAKQEAgLTk3LDkgKzk3
LDkgQEAgc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xp
ZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjwKIAogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IG1pc3NwZWxsaW5nOwogICAgICAgICAgICAgbWlzc3BlbGxpbmcudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubG9jYXRpb24g
PSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICAgICAgbWlzc3BlbGxp
bmcubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5y
ZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVk
V29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5sb2NhdGlvbiwgbWlzc3BlbGxpbmcubGVu
Z3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAgICAgbWlzc3BlbGxpbmcu
cmFuZ2UubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAg
ICAgICAgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAg
ICAgICAgICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5yYW5n
ZS5sb2NhdGlvbiwgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobWlzc3BlbGxpbmcpOwogICAgICAg
ICB9CiAKQEAgLTEzOSwxNCArMTM5LDEzIEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpl
eHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6aW52YWxp
ZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQucmVzZXQo
KTsKLSAgICBtX2NoZWNraW5nRW5kLnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVu
dFN0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgp
OwogICAgIG1fb2Zmc2V0QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7
CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKK0No
YXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFuZ2VMZW5ndGgoKSBjb25zdAog
ewogICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSgpKTsKIH0KQEAgLTE1
OCwxMiArMTU3LDEyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnBhcmFncmFwaFJh
bmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVJlZjxSYW5n
ZT4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBp
bnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0CitSZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6c3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hhcmFjdGVyT2Zmc2V0LCBj
aGFyYWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgcmFuZ2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50
PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlv
bikgY29uc3QKK0V4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRv
IHN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UoKS5zdGFydFBvc2l0aW9u
KCkpOwogICAgIGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pOwpAQCAtMTg3
LDM1ICsxODYsMzMgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0QXNSYW5n
ZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX29mZnNldEFzUmFuZ2U7CiB9CiAKLWNvbnN0IFN0cmlu
ZyYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKK1N0cmluZ1ZpZXcgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0LmlzRW1wdHko
KSkKKyAgICBpZiAobV90ZXh0LmlzTnVsbCgpKQogICAgICAgICBtX3RleHQgPSBwbGFpblRleHQo
JnBhcmFncmFwaFJhbmdlKCkpOwogICAgIHJldHVybiBtX3RleHQ7IAogfQogCi1pbnQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRl
eHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NoZWNraW5nU3RhcnQpCiAgICAgICAgIG1fY2hlY2tpbmdTdGFydCA9IGNoYXJhY3RlckNvdW50
KG9mZnNldEFzUmFuZ2UoKSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5nU3RhcnQ7CiB9CiAKLWlu
dCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kKCkgY29uc3QKK0NoYXJhY3RlckNv
dW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBjb25zdAogewotICAgIGlm
ICghbV9jaGVja2luZ0VuZCkKLSAgICAgICAgbV9jaGVja2luZ0VuZCA9IGNoZWNraW5nU3RhcnQo
KSArIGNoZWNraW5nTGVuZ3RoKCk7Ci0gICAgcmV0dXJuICptX2NoZWNraW5nRW5kOworICAgIHJl
dHVybiBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2hlY2tpbmdMZW5ndGgpCiAgICAgICAgIG1fY2hlY2tpbmdMZW5ndGggPSBjaGFyYWN0ZXJD
b3VudChtX2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAqbV9jaGVja2luZ0xlbmd0aDsKIH0K
IAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgp
IGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwpAQCAt
MjI5LDcgKzIyNiw3IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0
YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1
dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvbWF0aWNS
ZXBsYWNlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50
TGVuZ3RoOwpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hl
Y2tpbmdIZWxwZXIoRWRpdG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKIAogVGV4dENo
ZWNraW5nSGVscGVyOjp+VGV4dENoZWNraW5nSGVscGVyKCkgPSBkZWZhdWx0OwogCi1TdHJpbmcg
VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3Bl
bGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGlu
Z1JhbmdlKQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmco
Q2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVm
UHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAgIGZpcnN0TWlzc3BlbGxp
bmdPZmZzZXQgPSAwOwogCiAgICAgU3RyaW5nIGZpcnN0TWlzc3BlbGxpbmc7Ci0gICAgaW50IGN1
cnJlbnRDaHVua09mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudENodW5rT2Zm
c2V0ID0gMDsKIAogICAgIGZvciAoV29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZSk7ICFpdC5h
dEVuZCgpOyBjdXJyZW50Q2h1bmtPZmZzZXQgKz0gaXQudGV4dCgpLmxlbmd0aCgpLCBpdC5hZHZh
bmNlKCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gaXQudGV4dCgpOwpAQCAtMjc3LDE3
ICsyNzQsMTcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxp
bmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogICAgICAgICBpZiAobWlzc3Bl
bGxpbmdMb2NhdGlvbiA+PSAwICYmIG1pc3NwZWxsaW5nTGVuZ3RoID4gMCAmJiBtaXNzcGVsbGlu
Z0xvY2F0aW9uIDwgdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3Ro
ICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3Ro
KSB7CiAgICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdlIG9mIG1pc3NwZWxsZWQgd29yZAotICAg
ICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSht
X3JhbmdlLCBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVs
bGluZ0xlbmd0aCk7CisgICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UobV9yYW5nZSwgeyBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGlu
Z0xvY2F0aW9uLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4obWlzc3BlbGxpbmdMZW5ndGgp
IH0pOwogCiAgICAgICAgICAgICAvLyBSZW1lbWJlciBmaXJzdC1lbmNvdW50ZXJlZCBtaXNzcGVs
bGluZyBhbmQgaXRzIG9mZnNldC4KICAgICAgICAgICAgIGlmICghZmlyc3RNaXNzcGVsbGluZykg
ewogICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQgPSBjdXJyZW50Q2h1bmtP
ZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwogICAgICAgICAgICAgICAgIGZpcnN0TWlzc3Bl
bGxpbmcgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xl
bmd0aCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2Ug
PSBtaXNzcGVsbGluZ1JhbmdlLnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxp
bmdSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gU3RvcmUgbWFya2VyIGZvciBtaXNzcGVsbGVkIHdvcmQuCi0g
ICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmcpOworICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1h
cmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UncmUgbWFya2luZyBvbmx5IHRo
ZSBmaXJzdCBtaXNzcGVsbGluZywgYW5kIG5vdCBhbGwgaW5zdGFuY2VzLgogICAgICAgICAgICAg
aWYgKCFtYXJrQWxsKQpAQCAtMjk4LDcgKzI5NSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9v
CiAgICAgcmV0dXJuIGZpcnN0TWlzc3BlbGxpbmc7CiB9CiAKLVN0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFy
LCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0
SXNTcGVsbGluZywgQ2hhcmFjdGVyQ291bnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCiB7CiAgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMzEzLDggKzMxMCw4
IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1l
dGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVy
bi4KICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0g
MDsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1hckRl
dGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPSAw
OworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRHcmFtbWFy
RGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0zMzQsOCArMzMxLDggQEAgU3RyaW5nIFRl
eHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBj
aGVja0dyYW1tYXIsIGIKICAgICB3aGlsZSAodG90YWxMZW5ndGhQcm9jZXNzZWQgPCB0b3RhbFJh
bmdlTGVuZ3RoKSB7CiAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2VhcmNoIHJhbmdl
IGJ5IHBhcmFncmFwaHMsIGNoZWNraW5nIGVhY2ggb25lIGZvciBzcGVsbGluZyBhbmQgZ3JhbW1h
ci4KICAgICAgICAgYXV0byBjdXJyZW50TGVuZ3RoID0gY2hhcmFjdGVyQ291bnQocGFyYWdyYXBo
UmFuZ2UpOwotICAgICAgICBpbnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24g
PyByYW5nZVN0YXJ0T2Zmc2V0IDogMDsKLSAgICAgICAgaW50IGN1cnJlbnRFbmRPZmZzZXQgPSBj
dXJyZW50TGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBjdXJyZW50U3RhcnRPZmZzZXQg
PSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOworICAgICAgICBDaGFyYWN0
ZXJDb3VudCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKICAgICAgICAgaWYgKGlu
U2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBtX3JhbmdlLT5l
bmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIg
b2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlIHRvIHRoZSBl
bmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIHdpbGwgd2FudCB0
byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCkBAIC0zNDYsOSArMzQzLDkgQEAgU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9v
bCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgIFN0cmluZyBwYXJhZ3JhcGhTdHJpbmcgPSBw
bGFpblRleHQocGFyYWdyYXBoUmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgaWYgKHBhcmFncmFw
aFN0cmluZy5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5kR3JhbW1h
ciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ0xvY2F0aW9uID0gMDsKLSAg
ICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0gMDsKLSAgICAgICAgICAg
ICAgICBpbnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBDaGFy
YWN0ZXJDb3VudCBzcGVsbGluZ0xvY2F0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBDaGFyYWN0
ZXJDb3VudCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAgIENoYXJh
Y3RlckNvdW50IGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgZ3JhbW1hckRldGFpbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwpAQCAtMzYxLDQyICsz
NTgsNDIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdP
ckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBjaGVja1Rl
eHRPZlBhcmFncmFwaCgqbV9jbGllbnQudGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoU3RyaW5nLCBj
aGVja2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcmVzdWx0Lmxv
Y2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyByZXN1bHQu
bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdM
b2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pc3Nw
ZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJl
c3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IGN1cnJl
bnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyByZXN1bHQucmFuZ2UubGVu
Z3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAgICAgICAgICAgICAgICAg
c3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1
bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hciAmJiByZXN1bHQubG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5s
b2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0LmxvY2F0aW9uID49IDApOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6
OkdyYW1tYXIgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiBy
ZXN1bHQucmFuZ2UubG9jYXRpb24gKyByZXN1bHQucmFuZ2UubGVuZ3RoID4gY3VycmVudFN0YXJ0
T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxl
bmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHN0b3Ag
YWZ0ZXIgdGhlIGZpcnN0IGdyYW1tYXIgcmVzdWx0LCBzaW5jZSB0aGVyZSBtaWdodCBzdGlsbCBi
ZSBhIHNwZWxsaW5nIHJlc3VsdCBhZnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQg
YmVnaW5zIGJ1dCBiZWZvcmUgdGhlIGZpcnN0IGRldGFpbCBpbiBpdCwgYnV0IHdlIGNhbiBzdG9w
IGlmIHdlIGZpbmQgYSBzZWNvbmQgZ3JhbW1hciByZXN1bHQuCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZm91bmRHcmFtbWFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3Vs
dC5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC5kZXRhaWxzW2pdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9uID49IDApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0
aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyBkZXRhaWwtPmxv
Y2F0aW9uICsgZGV0YWlsLT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCAmJiAoIWZvdW5kR3Jh
bW1hciB8fCByZXN1bHQubG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uIDwgZ3JhbW1hckRldGFp
bExvY2F0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwt
PnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IGN1
cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdl
LmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCAmJiAo
IWZvdW5kR3JhbW1hciB8fCByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxv
Y2F0aW9uIDwgZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncmFtbWFyRGV0YWlsSW5kZXggPSBqOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSByZXN1bHQubG9jYXRpb24gKyBkZXRh
aWwtPmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyRGV0
YWlsTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxvY2F0
aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEdyYW1tYXIgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQubG9jYXRp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0g
cmVzdWx0LnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dEdy
YW1tYXJEZXRhaWwgPSByZXN1bHQuZGV0YWlsc1tncmFtbWFyRGV0YWlsSW5kZXhdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGhTdHJpbmcu
c3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJp
bmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdPZmZz
ZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
bGxpbmdPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0g
dHJ1ZTsKQEAgLTQwNSw3ICs0MDIsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9j
YXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rl
ckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJy
ZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24p
CiAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IGNoYXJhY3Rl
ckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICpt
YWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAg
ICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwpAQCAtNDI4LDE4ICs0MjUs
MTggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKIAogI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5H
KQogCi1pbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0
IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIGludCBiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24sIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxs
KSBjb25zdAoraW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChj
b25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBDaGFyYWN0ZXJDb3Vu
dCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIENoYXJhY3RlckNvdW50IHN0YXJ0T2Zmc2V0LCBD
aGFyYWN0ZXJDb3VudCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKIHsKICAgICAvLyBG
b3VuZCBzb21lIGJhZCBncmFtbWFyLiBGaW5kIHRoZSBlYXJsaWVzdCBkZXRhaWwgcmFuZ2UgdGhh
dCBzdGFydHMgaW4gb3VyIHNlYXJjaCByYW5nZSAoaWYgYW55KS4KICAgICAvLyBPcHRpb25hbGx5
IGFkZCBhIERvY3VtZW50TWFya2VyIGZvciBlYWNoIGRldGFpbCBpbiB0aGUgcmFuZ2UuCi0gICAg
aW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IC0xOworICAgIENoYXJhY3RlckNvdW50
IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IDA7CiAgICAgaW50IGVhcmxpZXN0RGV0YWls
SW5kZXggPSAtMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbHMu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJmdy
YW1tYXJEZXRhaWxzW2ldOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwKTsKLSAg
ICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRpb24gPj0gMCk7CisgICAgICAgIEFTU0VSVChkZXRh
aWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2Nh
dGlvbiA+PSAwKTsKICAgICAgICAgCi0gICAgICAgIGludCBkZXRhaWxTdGFydE9mZnNldEluUGFy
YWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAg
ICAgICAgQ2hhcmFjdGVyQ291bnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdy
YW1tYXJQaHJhc2VMb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIAog
ICAgICAgICAvLyBTa2lwIHRoaXMgZGV0YWlsIGlmIGl0IHN0YXJ0cyBiZWZvcmUgdGhlIG9yaWdp
bmFsIHNlYXJjaCByYW5nZQogICAgICAgICBpZiAoZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFw
aCA8IHN0YXJ0T2Zmc2V0KQpAQCAtNDUwLDMwICs0NDcsMzAgQEAgaW50IFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4m
IGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKG1hcmtB
bGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCAr
IGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGJhZEdyYW1t
YXJSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIo
YmFkR3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVz
Y3JpcHRpb24pOworICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSByZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UobV9yYW5nZS5nZXQoKSwgeyBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBz
dGFydE9mZnNldCArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24sIGRldGFpbC0+cmFuZ2UubGVuZ3Ro
IH0pOworICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBk
ZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8v
IFJlbWVtYmVyIHRoaXMgZGV0YWlsIG9ubHkgaWYgaXQncyBlYXJsaWVyIHRoYW4gb3VyIGN1cnJl
bnQgY2FuZGlkYXRlICh0aGUgZGV0YWlscyBhcmVuJ3QgaW4gYSBndWFyYW50ZWVkIG9yZGVyKQot
ICAgICAgICBpZiAoZWFybGllc3REZXRhaWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRhaWxMb2Nh
dGlvblNvRmFyID4gZGV0YWlsLT5sb2NhdGlvbikgeworICAgICAgICBpZiAoZWFybGllc3REZXRh
aWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID4gZGV0YWlsLT5yYW5n
ZS5sb2NhdGlvbikgewogICAgICAgICAgICAgZWFybGllc3REZXRhaWxJbmRleCA9IGk7Ci0gICAg
ICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSBkZXRhaWwtPmxvY2F0aW9uOwor
ICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gZGV0YWlsLT5yYW5nZS5s
b2NhdGlvbjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gZWFybGllc3REZXRh
aWxJbmRleDsKIH0KIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3Jh
bW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJh
c2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgQ2hh
cmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QK
IHsKICAgICAvLyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0
ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgotICAgIG91dEdyYW1tYXJEZXRhaWwu
bG9jYXRpb24gPSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0
R3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5y
YW5nZS5sZW5ndGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwog
ICAgIG91dEdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAg
ICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICAKLSAgICBTdHJpbmcgZmlyc3RCYWRH
cmFtbWFyUGhyYXNlOworICAgIFN0cmluZ1ZpZXcgZmlyc3RCYWRHcmFtbWFyUGhyYXNlOwogCiAg
ICAgLy8gRXhwYW5kIHRoZSBzZWFyY2ggcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3Jh
cGhzLCBzaW5jZSBncmFtbWFyIGNoZWNraW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0LgogICAg
IC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
cGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlLApAQCAt
NDgxLDExICs0NzgsMTEgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFk
R3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgIFRleHRDaGVja2lu
Z1BhcmFncmFwaCBwYXJhZ3JhcGgobV9yYW5nZS5jb3B5UmVmKCkpOwogICAgIAogICAgIC8vIFN0
YXJ0IGNoZWNraW5nIGZyb20gYmVnaW5uaW5nIG9mIHBhcmFncmFwaCwgYnV0IHNraXAgcGFzdCBy
ZXN1bHRzIHRoYXQgb2NjdXIgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNo
IHJhbmdlLgotICAgIGZvciAoaW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJh
Z3JhcGguY2hlY2tpbmdFbmQoKTsgKSB7CisgICAgZm9yIChDaGFyYWN0ZXJDb3VudCBzdGFydE9m
ZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgewogICAg
ICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZ3JhbW1hckRldGFpbHM7CiAgICAgICAgIGludCBi
YWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPSAtMTsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJh
c2VMZW5ndGggPSAwOwotICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1t
YXJPZlN0cmluZyhTdHJpbmdWaWV3KHBhcmFncmFwaC50ZXh0KCkpLnN1YnN0cmluZyhzdGFydE9m
ZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCAmYmFkR3Jh
bW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCktPmNoZWNr
R3JhbW1hck9mU3RyaW5nKHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwg
Z3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhy
YXNlTGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghYmFkR3JhbW1hclBocmFzZUxlbmd0
aCkgewogICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9PSAtMSk7
CkBAIC01MDYsNyArNTAzLDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICAvLyBr
ZXB0IGdvaW5nIHNvIHdlIGNvdWxkIG1hcmsgYWxsIGluc3RhbmNlcykuCiAgICAgICAgIGlmIChi
YWRHcmFtbWFySW5kZXggPj0gMCAmJiBmaXJzdEJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxv
Y2F0aW9uIC0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKTsKLSAgICAgICAgICAgIGZpcnN0QmFk
R3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKGJhZEdyYW1tYXJQaHJhc2VM
b2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgICAgICBmaXJzdEJhZEdy
YW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNl
TG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBGb3VuZCBvbmUuIFdlJ3JlIGRvbmUgbm93LCB1bmxlc3Mgd2UncmUgbWFya2luZyBl
YWNoIGluc3RhbmNlLgogICAgICAgICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtNTE4LDcgKzUxNSw3
IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1h
ckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwKICAgICAgICAgc3RhcnRPZmZzZXQgPSBiYWRHcmFt
bWFyUGhyYXNlTG9jYXRpb24gKyBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoOwogICAgIH0KICAgICAK
LSAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlOworICAgIHJldHVybiBmaXJzdEJhZEdy
YW1tYXJQaHJhc2UudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6Omlz
VW5ncmFtbWF0aWNhbCgpIGNvbnN0CkBAIC01MjksNyArNTI2LDcgQEAgYm9vbCBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0CiAgICAgLy8gUmV0dXJucyB0cnVlIG9u
bHkgaWYgdGhlIHBhc3NlZCByYW5nZSBleGFjdGx5IGNvcnJlc3BvbmRzIHRvIGEgYmFkIGdyYW1t
YXIgZGV0YWlsIHJhbmdlLiBUaGlzIGlzIGFuYWxvZ291cwogICAgIC8vIHRvIGlzU2VsZWN0aW9u
TWlzc3BlbGxlZC4gSXQncyBub3QgZ29vZCBlbm91Z2ggZm9yIHRoZXJlIHRvIGJlIHNvbWUgYmFk
IGdyYW1tYXIgc29tZXdoZXJlIGluIHRoZSByYW5nZSwKICAgICAvLyBvciBvdmVybGFwcGluZyB0
aGUgcmFuZ2U7IHRoZSByYW5nZXMgbXVzdCBleGFjdGx5IG1hdGNoLgotICAgIGludCBncmFtbWFy
UGhyYXNlT2Zmc2V0OworICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CiAg
ICAgCiAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgIFN0cmluZyBiYWRHcmFt
bWFyUGhyYXNlID0gZmluZEZpcnN0QmFkR3JhbW1hcihncmFtbWFyRGV0YWlsLCBncmFtbWFyUGhy
YXNlT2Zmc2V0LCBmYWxzZSk7CkBAIC01NDIsMTUgKzUzOSwxNSBAQCBib29sIFRleHRDaGVja2lu
Z0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICBpZiAoZ3JhbW1hclBocmFzZU9m
ZnNldCA+IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChncmFtbWFyRGV0
YWlsLmxvY2F0aW9uID49IDApOwotICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxlbmd0aCA+IDAp
OworICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOworICAgIEFT
U0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogCiAgICAgLy8gQmFkIGdyYW1t
YXIsIGJ1dCBzdGFydCBvZiBkZXRhaWwgKGUuZy4gdW5ncmFtbWF0aWNhbCB3b3JkKSBkb2Vzbid0
IG1hdGNoIHN0YXJ0IG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gKyBn
cmFtbWFyUGhyYXNlT2Zmc2V0KQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9u
ICsgZ3JhbW1hclBocmFzZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IC8vIEJhZCBncmFtbWFyIGF0IHN0YXJ0IG9mIHJhbmdlLCBidXQgZW5kIG9mIGJhZCBncmFtbWFy
IGlzIGJlZm9yZSBvciBhZnRlciBlbmQgb2YgcmFuZ2UKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdyYW1tYXJEZXRhaWwubGVuZ3RoKSAhPSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkK
KyAgICBpZiAoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggIT0gY2hhcmFjdGVyQ291bnQobV9y
YW5nZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIHNw
ZWxsaW5nIHBhbmVsIHRvIGJlIGRpc3BsYXlpbmcgdGhpcyBlcnJvciAod2hldGhlciBvciBub3Qg
dGhlIHNwZWxsaW5nIHBhbmVsIGlzIG9uIHNjcmVlbikuCkBAIC01OTQsOCArNTkxLDggQEAgVmVj
dG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5n
cmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICBjaGVja1RleHRPZlBhcmFncmFwaCgqbV9jbGllbnQu
dGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoLnRleHQoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywg
Y3VycmVudFNlbGVjdGlvbik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsK
LSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYm
IHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5s
ZW5ndGgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGgu
Y2hlY2tpbmdTdWJzdHJpbmcoKTsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1
bHQucmFuZ2UpKSB7CisgICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3Jh
cGguY2hlY2tpbmdTdWJzdHJpbmcoKS50b1N0cmluZygpOwogICAgICAgICAgICAgQVNTRVJUKG1p
c3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50LnRleHRDaGVja2Vy
KCktPmdldEd1ZXNzZXNGb3JXb3JkKG1pc3NwZWxsZWRXb3JkLCBTdHJpbmcoKSwgY3VycmVudFNl
bGVjdGlvbiwgZ3Vlc3Nlcyk7CiAgICAgICAgICAgICBtX2NsaWVudC51cGRhdGVTcGVsbGluZ1VJ
V2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKQEAgLTYwOCwxMiArNjA1LDEyIEBA
IFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRP
clVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAgIHJldHVybiBndWVzc2VzOwogCiAgICAg
Zm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VD
b3ZlcmVkQnkocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgeworICAgICAgICBpZiAo
cmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguaXND
aGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5yYW5nZSkpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byYgZGV0YWlsIDogcmVzdWx0LmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
ZGV0YWlsLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubG9jYXRp
b24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0
Y2hlcyhyZXN1bHQubG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBo
LnRleHRTdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAg
IEFTU0VSVChkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYg
KHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyh7IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiAr
IGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCku
c3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkudG9T
dHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVu
Z3RoKCkpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZGV0YWlsLmd1
ZXNzZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBndWVzc2VzLmFwcGVuZChndWVzcyk7CkBA
IC02MzEsNyArNjI4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxNaXNzcGVs
bGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmcKIHsKICAgICAvLyBVc2Ug
dGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRGaXJzdE1pc3NwZWxsaW5nLiBJZ25vcmUgdGhl
IHJldHVybiB2YWx1ZSBhbmQgdGhlICJvdXQgcGFyYW1ldGVyIjsKICAgICAvLyBhbGwgd2UgbmVl
ZCB0byBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgotICAgIGludCBpZ25vcmVkT2Zmc2V0Owor
ICAgIENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZpcnN0TWlzc3BlbGxp
bmcoaWdub3JlZE9mZnNldCwgdHJ1ZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAt
NjQxLDcgKzYzOCw3IEBAIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsQmFkR3JhbW1h
cigpCiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBvZmluZEZpcnN0QmFkR3Jh
bW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kICJvdXQgcGFyYW1ldGVycyI7IGFsbCB3
ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5jZS4KICAgICBHcmFtbWFy
RGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWlsOwotICAgIGludCBpZ25vcmVkT2Zmc2V0OworICAg
IENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZpcnN0QmFkR3JhbW1hcihp
Z25vcmVkR3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNldCwgdHJ1ZSk7CiB9CiAjZW5kaWYKQEAg
LTY2OCw3ICs2NjUsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xp
ZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0aW9uU2V0PAogICAgIGlmIChjaGVja2lu
Z1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgIGZvciAo
YXV0byYgbWlzcGVsbGluZyA6IG1pc3BlbGxpbmdzKQotICAgICAgICAgICAgZ3JhbW1hckNoZWNr
TGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwgbWlzcGVsbGlu
Zy5sb2NhdGlvbik7CisgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1
bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLnJhbmdlLmxvY2F0aW9uKTsK
ICAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5zdWJzdHJpbmcoMCwg
Z3JhbW1hckNoZWNrTGVuZ3RoKSwgZ3JhbW1hdGljYWxFcnJvcnMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5kZXggM2YzOWU4NjhkOTk0
MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uMzQ2ZDVhODE5MmViZGNiNzYzYjBhNWUwNjVm
ODExODhjZjBhODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5oCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRDaGVj
a2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVu
dFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYm
IGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBS
ZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50IHJhbmdlTGVuZ3RoKCkg
Y29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQg
Y2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0VG8oY29u
c3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCByYW5nZUxlbmd0aCgpIGNv
bnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0OworICAg
IEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYpIGNv
bnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAotICAgIC8vIEZJWE1FOiBD
b25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1ZpZXcuCi0gICAgY29uc3Qg
U3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVtb3Zpbmcg
dGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQoKSBkaXJlY3RseS4KLSAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQotICAg
IFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9N
QVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0gICAgVUNo
YXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tpbmdTdGFydCgpIGNvbnN0
OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0xlbmd0aCgp
IGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRl
eHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQorICAgIENo
YXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBj
aGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nTGVuZ3RoKCkg
Y29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQog
CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hpY2ggd2UgYWxsb3cgYXV0b21hdGlj
IHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSBpcyBu
b3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoLCB0aGlzIGRl
ZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4KLSAgICBpbnQgYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQo
KSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgp
IGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRpb24sIGlu
dCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNraW5nU3RhcnQoKSAmJiBs
ZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXNDaGVja2luZ1JhbmdlQ292
ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24g
PD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49IGNoZWNraW5nU3RhcnQo
KSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50
IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbiA8IGNoZWNraW5n
RW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KKyAgICBib29s
IGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7IHJldHVy
biByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2UubGVuZ3RoID09IGNo
ZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShDaGFy
YWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPD0gY2hlY2tp
bmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoID49IGNoZWNraW5nU3Rh
cnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMo
Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uIDwgY2hl
Y2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+IGNoZWNraW5nU3Rh
cnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgpA
QCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1f
cGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0QXNSYW5n
ZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+
IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0Vu
ZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xlbmd0aDsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwotICAgIG11dGFi
bGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAgIG11dGFi
bGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdTdGFydDsKKyAgICBtdXRhYmxl
IE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUg
T3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAg
ICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50
TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsKQEAgLTg4LDExICs4MSwx
MSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYsIFJhbmdl
Jik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3RyaW5nIGZpbmRGaXJzdE1p
c3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQ
dHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmluZyBmaW5kRmlyc3RN
aXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVs
bGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFy
RGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVyQ291bnQm
IGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmly
c3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3Rl
ckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0
YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RN
aXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBTdHJpbmcg
ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQm
IG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgU3RyaW5n
IGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgQ2hh
cmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7
CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAgIGJvb2wgaXNVbmdyYW1tYXRpY2Fs
KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsKICNpZiBVU0UoR1JBTU1BUl9DSEVD
S0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1h
ckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgaW50IGZpbmRGaXJzdEdy
YW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgQ2hhcmFjdGVyQ291bnQg
YmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hh
cmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYmExYjcyMGFlZjAz
NDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uMWFjYTc3M2U0MTQ1ZWE2NTQyYjJhZDkyNGQ1
NTFiMTQ5NzU3ZTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoCiAgICAgcmV0dXJu
IGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKFJhbmdlJiBl
bnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KQotewot
ICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0b3IoZW50aXJlUmFuZ2UpOwot
ICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5nZS5vd25lckRvY3VtZW50KCks
IGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwot
fQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJh
dG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwpAQCAtMjM2
NSw4NSArMjM1OSw2MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1l
bnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4gbm9kZSAmJiBpc1JlbmRlcmVy
UmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQogCi1SZWZQdHI8UmFuZ2U+IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2Nv
cGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgZm9yU2VsZWN0aW9u
UHJlc2VydmF0aW9uKQorQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29u
c3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHRSYW5nZSA9IHNj
b3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0KLSAgICBpbnQgZG9jVGV4dFBvc2l0aW9u
ID0gMDsKLSAgICBpbnQgcmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9uICsgcmFuZ2VMZW5ndGg7Ci0g
ICAgYm9vbCBzdGFydFJhbmdlRm91bmQgPSBmYWxzZTsKLQotICAgIFJlZjxSYW5nZT4gdGV4dFJ1
blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CisgICAgcmV0dXJuIHJlc29sdmVDaGFy
YWN0ZXJSYW5nZShzY29wZSwgeyBsb2NhdGlvbiwgMCB9LCBiZWhhdmlvcikuc3RhcnQ7Cit9CiAK
LSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9u
cyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci0gICAgCi0gICAgLy8gRklYTUU6IHRo
ZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdvcmthcm91bmQgZm9yIDxo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5Pi4KLSAgICBpZiAoIXJh
bmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpIHsKLSAgICAgICAgcmVz
dWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0g
ICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigp
LCAwKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwotICAgIH0KK1NpbXBsZVJhbmdlIHJl
c29sdmVDaGFyYWN0ZXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIENoYXJhY3RlclJh
bmdlIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICBhdXRvIHJl
c3VsdFJhbmdlID0gU2ltcGxlUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiA/IHNjb3BlLmVuZCA6IHNj
b3BlLnN0YXJ0LCAocmFuZ2UubG9jYXRpb24gfHwgcmFuZ2UubGVuZ3RoKSA/IHNjb3BlLmVuZCA6
IHNjb3BlLnN0YXJ0IH07CisgICAgYXV0byByYW5nZUVuZCA9IHJhbmdlLmxvY2F0aW9uICsgcmFu
Z2UubGVuZ3RoOworICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uID0gMDsKKyAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdChzY29wZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgp
KSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKKyAgICAg
ICAgYXV0byB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCi0gICAgZm9yICg7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5n
dGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkp
OworICAgICAgICBhdXRvIGZvdW5kID0gWyZdIChDaGFyYWN0ZXJDb3VudCB0YXJnZXRMb2NhdGlv
bikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0TG9jYXRpb24gPj0gbG9jYXRp
b24gJiYgdGFyZ2V0TG9jYXRpb24gPD0gbG9jYXRpb24gKyBsZW5ndGg7CisgICAgICAgIH07CiAK
LSAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gcmFuZ2VMb2NhdGlvbiA+PSBkb2NUZXh0UG9zaXRp
b24gJiYgcmFuZ2VMb2NhdGlvbiA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7Ci0gICAgICAg
IGJvb2wgZm91bmRFbmQgPSByYW5nZUVuZCA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VFbmQg
PD0gZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOworICAgICAgICBib29sIGZvdW5kU3RhcnQgPSBm
b3VuZChyYW5nZS5sb2NhdGlvbik7CisgICAgICAgIGJvb2wgZm91bmRFbmQgPSBmb3VuZChyYW5n
ZUVuZCk7CiAKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBp
cyBvZnRlbiBhdCB0aGUgd3JvbmcKLSAgICAgICAgICAgIC8vIHBvc2l0aW9uIGZvciBlbWl0dGVk
ICdcbidzIG9yIGlmIHRoZSByZW5kZXJlciBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgcmVwbGFj
ZWQgZWxlbWVudC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBm
b3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRoZSB3cm9uZyBw
b3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJl
bnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogY29u
c2lkZXIgY29udHJvbGxpbmcgdGhpcyB3aXRoIFRleHRJdGVyYXRvckJlaGF2aW9yIGluc3RlYWQg
b2YgZG9pbmcgaXQgdW5jb25kaXRpb25hbGx5IHRvIGhlbHAgdXMgZXZlbnR1YWxseSBwaGFzZSBp
dCBvdXQgZXZlcnl3aGVyZS4KICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSAmJiAoaXQudGV4
dCgpWzBdID09ICdcbicgfHwgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoaXQpKSkgewogICAgICAg
ICAgICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IGl0LnJhbmdlKCkuc3RhcnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKFdURk1vdmUoc3RhcnQuY29u
dGFpbmVyKSwgc3RhcnQub2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3Np
dGlvbigpOwotICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9z
aXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAocnVuRW5kLmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dFJ1blJhbmdlLT5zZXRFbmQoKnJ1bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRl
T2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQo
KSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9IGl0LnJhbmdlKCkuc3Rh
cnQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRv
IGVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24odGV4dFJ1blJhbmdlLnN0YXJ0KSkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9ICplbmQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZv
dW5kU3RhcnQpIHsKLSAgICAgICAgICAgIHN0YXJ0UmFuZ2VGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewot
ICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUxvY2F0aW9uIC0gZG9jVGV4dFBvc2l0
aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChyYW5nZUxvY2F0aW9u
ID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNl
dFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0ZXh0UnVu
UmFuZ2UtPmVuZE9mZnNldCgpKTsKKyAgICAgICAgYXV0byBib3VuZGFyeSA9IFsmXSAoQ2hhcmFj
dGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IEJvdW5kYXJ5UG9pbnQgeworICAgICAgICAgICAg
aWYgKGlzPFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIpKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHRhcmdldExvY2F0aW9uIC0gbG9jYXRpb24gPD0gZG93bmNhc3Q8VGV4dD4o
dGV4dFJ1blJhbmdlLnN0YXJ0LmNvbnRhaW5lci5nZXQoKSkubGVuZ3RoKCkpOworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHRleHRSdW5SYW5nZS5zdGFydC5vZmZzZXQgKyB0YXJn
ZXRMb2NhdGlvbiAtIGxvY2F0aW9uOworICAgICAgICAgICAgICAgIHJldHVybiB7IHRleHRSdW5S
YW5nZS5zdGFydC5jb250YWluZXIuY29weVJlZigpLCBvZmZzZXQgfTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldExvY2F0aW9uID09IGxvY2F0aW9u
ID8gdGV4dFJ1blJhbmdlLnN0YXJ0IDogdGV4dFJ1blJhbmdlLmVuZDsKKyAgICAgICAgfTsKIAor
ICAgICAgICBpZiAoZm91bmRTdGFydCkKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLnN0YXJ0ID0g
Ym91bmRhcnkocmFuZ2UubG9jYXRpb24pOwogICAgICAgICBpZiAoZm91bmRFbmQpIHsKLSAgICAg
ICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuaXNUZXh0Tm9kZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlRW5kIC0gZG9jVGV4dFBvc2l0aW9u
OwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmFuZ2VFbmQgPT0gZG9jVGV4
dFBvc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRS
dW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5z
ZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZz
ZXQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkb2NUZXh0UG9zaXRpb24gKz0gbGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0UmFuZ2UuZW5kID0gYm91bmRhcnkocmFuZ2VFbmQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBkb2NUZXh0UG9zaXRpb24g
Kz0gbGVuZ3RoOworICAgICAgICBsb2NhdGlvbiArPSBsZW5ndGg7CiAgICAgfQotICAgIAotICAg
IGlmICghc3RhcnRSYW5nZUZvdW5kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAg
ICBpZiAocmFuZ2VMZW5ndGggJiYgcmFuZ2VFbmQgPiBkb2NUZXh0UG9zaXRpb24pIC8vIHJhbmdl
RW5kIGlzIG91dCBvZiBib3VuZHMKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVu
UmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKLSAgICAK
KwogICAgIHJldHVybiByZXN1bHRSYW5nZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKaW5kZXggMDkxNGY3YmNhNjE1MDlmYjVjM2RlZWFjOWQzOGNlNGQ0YzM4OTY0Yi4u
ZjRlNDA4YTIxYTU1NmE1OGI4NDIzOGI4ZTMyYzEwMWE3MzZmZDViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5o
IgpAQCAtMTAzLDkgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRleHRUb1N0cmlu
Z0J1aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QgeyBjb3B5YWJsZVRleHQoKS5h
cHBlbmRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIHRo
ZXNlIHRvIFNpbXBsZVJhbmdlLCBDaGFyYWN0ZXJSYW5nZSwgYW5kIENoYXJhY3RlckNvdW50IGFu
ZCBtb3ZlIG91dCBvZiB0aGlzIGNsYXNzIHRvIHRoZSB0b3AgbGV2ZWwgKGJvdHRvbSBvZiB0aGlz
IGZpbGUpLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlv
biwgaW50IHJhbmdlTGVuZ3RoLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxz
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6
ZV90JiBsZW5ndGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IHN1YnJh
bmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3Rl
ckNvdW50KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoKTsKQEAgLTI4OSwxMyArMjg4LDkg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlkTG9va0FoZWFkIHsgdHJ1ZSB9OwogfTsKIAotdXNp
bmcgQ2hhcmFjdGVyQ291bnQgPSBzdGQ6OnNpemVfdDsKLQotc3RydWN0IENoYXJhY3RlclJhbmdl
IHsKLSAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiB7IDAgfTsKLSAgICBDaGFyYWN0ZXJDb3Vu
dCBsZW5ndGggeyAwIH07Ci19OwogCiBXRUJDT1JFX0VYUE9SVCBDaGFyYWN0ZXJDb3VudCBjaGFy
YWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQT1JUIEJvdW5kYXJ5UG9pbnQg
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFjdGVyQ291
bnQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsK
K1dFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYsIENoYXJhY3RlclJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCAyYjkzMTdi
MTcxM2YyNjBhMmRhZjM4YzViMWZiYTRlMDg0YWI3Y2E2Li5lMmY4ZjU3YjM5NTUxNzdiY2RlZjcz
YWE0MmI3Mzc4YzhhYzkzMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8RERBY3Rp
b25Db250ZXh0PiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShWaXNpYmxlUG9zaXRpb24K
ICAgICAgICAgQ0ZSYW5nZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IEREUmVzdWx0R2V0UmFuZ2Uo
cmVzdWx0KTsKICAgICAgICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3VsdFJhbmdlSW5Db250ZXh0
LmxvY2F0aW9uICYmIChoaXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9u
KSA8IHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgbWFpblJlc3Vs
dCA9IHJlc3VsdDsKLSAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24sIHJl
c3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICBtYWluUmVzdWx0UmFuZ2Ug
PSBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsICpt
YWtlQ2hhcmFjdGVyUmFuZ2UocmVzdWx0UmFuZ2VJbkNvbnRleHQpKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTUwOCw5ICs1MDgsMTIgQEAgTlNBcnJheSAqRGF0
YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJh
bmdlLCBEYXRhRGUKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IGZyYWdtZW50UmFuZ2Vz
OwogICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShp
dGVyYXRvci5yYW5nZSgpKTsKICAgICAgICAgQ0ZJbmRleCBmcmFnbWVudEluZGV4ID0gcXVlcnlS
YW5nZS5zdGFydC5xdWVyeUluZGV4OwotICAgICAgICBpZiAoZnJhZ21lbnRJbmRleCA9PSBxdWVy
eVJhbmdlLmVuZC5xdWVyeUluZGV4KQotICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5k
KFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmN1cnJlbnRSYW5nZSwgcXVlcnlSYW5nZS5zdGFydC5v
ZmZzZXQsIHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0KSk7
Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoZnJhZ21lbnRJbmRleCA9PSBxdWVyeVJhbmdl
LmVuZC5xdWVyeUluZGV4KSB7CisgICAgICAgICAgICBDaGFyYWN0ZXJSYW5nZSBmcmFnbWVudFJh
bmdlOworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZS5sb2NhdGlvbiA9IHF1ZXJ5UmFuZ2Uuc3Rh
cnQub2Zmc2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZS5sZW5ndGggPSBxdWVyeVJhbmdl
LmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAgICAgICAgICAgIGZyYWdt
ZW50UmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpj
dXJyZW50UmFuZ2UsIGZyYWdtZW50UmFuZ2UpKSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoIXF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0KQogICAgICAgICAgICAgICAgIGZyYWdt
ZW50UmFuZ2VzLmFwcGVuZChjdXJyZW50UmFuZ2UpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGQ2
NDhmZDcwZmMzOGZjOTJjMjRlNTE3ODkwNDdjZWY2MjYzZmE1MDkuLjZiYzViZTFmZTc0ZTA1MWEz
YTZjYjBiYzYxZmYyODhhNGUxMjY5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTI4NywxMCArMjg3LDkgQEAgc3RkOjp0dXBs
ZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VG
b3JTZWxlY3Rpb24oY28KIAogICAgIFJlZlB0cjxSYW5nZT4gZnVsbENoYXJhY3RlclJhbmdlID0g
bWFrZVJhbmdlKHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpOwogICAgIFN0cmluZyBpdGVt
U3RyaW5nID0gcGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7Ci0gICAgUmV0YWlu
UHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0
aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnJhbmdlVG9QYXNzXSk7Ci0gICAgTlNSYW5n
ZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CisgICAgTlNSYW5n
ZSBoaWdobGlnaHRSYW5nZSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0
aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnJhbmdlVG9QYXNzXSkuZ2V0KCkuaGlnaGxp
Z2h0UmFuZ2U7CiAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hh
cmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5n
dGgpLCBuaWwgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICptYWtlQ2hhcmFjdGVyUmFuZ2UoaGlnaGxpZ2h0
UmFuZ2UpKSksIG5pbCB9OwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAt
MzU4LDEzICszNTcsMTIgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkg
Kj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKICAgICBOU1JhbmdlIHNl
bGVjdGVkUmFuZ2UgPSBbZ2V0UlZTZWxlY3Rpb25DbGFzcygpIHJldmVhbFJhbmdlQXRJbmRleDpo
aXRJbmRleCBzZWxlY3RlZFJhbmdlczpAW1tOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnNlbGVjdGlv
blJhbmdlXV0gc2hvdWxkVXBkYXRlU2VsZWN0aW9uOm5pbF07CiAKICAgICBTdHJpbmcgaXRlbVN0
cmluZyA9IHBsYWluVGV4dCgqZnVsbENoYXJhY3RlclJhbmdlKTsKLSAgICBSZXRhaW5QdHI8UlZJ
dGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDpp
dGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV0pOwotICAgIE5TUmFuZ2UgaGln
aGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgpLmhpZ2hsaWdodFJhbmdlOworICAgIGF1dG8gaGlnaGxp
Z2h0UmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UoYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5j
ZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV0p
LmdldCgpLmhpZ2hsaWdodFJhbmdlKTsKIAotICAgIGlmIChoaWdobGlnaHRSYW5nZS5sb2NhdGlv
biA9PSBOU05vdEZvdW5kIHx8ICFoaWdobGlnaHRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFoaWdo
bGlnaHRSYW5nZSB8fCAhaGlnaGxpZ2h0UmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
bnVsbHB0ciwgbmlsIH07CiAgICAgCi0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9yOjpzdWJyYW5n
ZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0
UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqaGlnaGxpZ2h0UmFuZ2UpKSwg
bmlsIH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5k
ZXggYTJiODE4Mjg3N2IyOGFmMjljOGEwNjM5NTRkMzc0Y2Q1YWE1YTVkYS4uZDNjZjA2YzkzZDE5
ZDg1ZWU1MTQ1ZDAyYTEyZDUyYjgzYmM3YTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTcyLDExICs3Miw4IEBAIHZv
aWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiAgICAgaWYgKGVuZE9mZnNldCA8IHJl
c3VsdExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXN1bHRSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgZW5kT2Zmc2V0IC0g
cmVzdWx0TGVuZ3RoLCBlbmRPZmZzZXQpOwotICAgIGlmICghcmVzdWx0UmFuZ2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1h
cmtlcigqcmVzdWx0UmFuZ2UsIG1fbWV0YWRhdGEpOworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290
KSwgeyBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCB9KTsKKyAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UsIG1fbWV0
YWRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQppbmRleCA1MTM1Yjkw
NmRlZTE4ZTAxNzc5ZWM2MTE0NzQzMWM3OTVlMzhhNThlLi42NWQ1ZGQ1NjJlOTM3MGNlYmZjZTUz
YzMyMjVlMjczNWM1NWI1ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0ZDo6
dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0CiAKICAgICBOU1JhbmdlIHJhbmdlVG9QYXNzID0gTlNNYWtlUmFu
Z2UoY2hhcmFjdGVyQ291bnQoeyAqZnVsbENoYXJhY3RlclN0YXJ0LCAqcG9zaXRpb25Cb3VuZGFy
eSB9KSwgMCk7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwotICAgIE5TUmFuZ2Ug
ZXh0cmFjdGVkUmFuZ2UgPSB0b2tlblJhbmdlKHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2Uu
Z2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpOworICAgIGF1dG8gZXh0cmFjdGVkUmFuZ2Ug
PSBtYWtlQ2hhcmFjdGVyUmFuZ2UodG9rZW5SYW5nZShwbGFpblRleHQoZnVsbENoYXJhY3RlclJh
bmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRpb25zKSk7CiAKICAgICAvLyB0b2tlblJhbmdl
IHNvbWV0aW1lcyByZXR1cm5zIHtOU05vdEZvdW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRl
dGVybWluZSBhIGdvb2Qgc3RyaW5nLgogICAgIC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRu
J3QgbmVlZCB0byBjaGVjayBmb3IgemVybyBsZW5ndGggaGVyZS4KLSAgICBpZiAoZXh0cmFjdGVk
UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQor
ICAgIGlmICghZXh0cmFjdGVkUmFuZ2UgfHwgIWV4dHJhY3RlZFJhbmdlLT5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogCi0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiwg
ZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSwgb3B0aW9ucyB9OworICAgIHJldHVybiB7IGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKmV4dHJh
Y3RlZFJhbmdlKSksIG9wdGlvbnMgfTsKIH0KIAogc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9u
QnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmVyT2ZD
aGFyYWN0ZXJzVG9FeHBhbmQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQmVmb3JlU3RhcnQs
IE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQWZ0ZXJFbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCAzN2RjY2ZmMzVlM2E5ZjJiNmE2YTZkMDE5MmNjZDkwMjBhODc0NzFlLi41NzRjZGJmNTQ3YTU0
NTIwYzQzYTIwMjU0NTBhNzc0ZjZmNmJlMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgwMyw4
ICs4MDMsNyBAQCB1bnNpZ25lZCBQYWdlOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZwogCiBzdHJ1Y3QgRmluZFJlcGxhY2Vt
ZW50UmFuZ2UgewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiByb290OwotICAgIHNpemVfdCBs
b2NhdGlvbiB7IG5vdEZvdW5kIH07Ci0gICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKKyAgICBDaGFy
YWN0ZXJSYW5nZSByYW5nZTsKIH07CiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYg
cGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKQEAgLTgxNiwxMCArODE1LDEwIEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJh
bmdlPiYgcmFuZ2VzCiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICAvLyBF
bnN1cmUgdGhhdCByYW5nZXMgYXJlIHNvcnRlZCBieSB0aGVpciBlbmQgb2Zmc2V0cywgcGVyIGVk
aXRpbmcgY29udGFpbmVyLgotICAgICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2Uu
bG9jYXRpb24gKyByYW5nZS5sZW5ndGg7CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2Ug
PSByYW5nZS5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLnJhbmdlLmxlbmd0aDsKICAgICAgICAgYXV0
byBpbnNlcnRpb25JbmRleCA9IHJhbmdlTGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byBp
dGVyYXRvciA9IHJhbmdlTGlzdC5yYmVnaW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VMaXN0LnJlbmQo
KTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNlcnRp
b25JbmRleCA9IGl0ZXJhdG9yLT5sb2NhdGlvbiArIGl0ZXJhdG9yLT5sZW5ndGg7CisgICAgICAg
ICAgICBhdXRvIGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPnJhbmdl
LmxvY2F0aW9uICsgaXRlcmF0b3ItPnJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIGlmIChlbmRP
ZmZzZXRGb3JSYW5nZSA+PSBlbmRPZmZzZXRCZWZvcmVJbnNlcnRpb25JbmRleCkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGluc2VydGlvbkluZGV4LS07CkBAIC04NjIsMTEg
Kzg2MSwxMSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZl
Y3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICAvLyBJdGVyYXRlIGJh
Y2t3YXJkcyB0aHJvdWdoIHJhbmdlcyB3aGVuIHJlcGxhY2luZyB0ZXh0LCBzdWNoIHRoYXQgZWFy
bGllciB0ZXh0IHJlcGxhY2VtZW50cyBkb24ndCBjbG9iYmVyIHJlcGxhY2VtZW50IHJhbmdlcyBs
YXRlciBvbi4KICAgICAgICAgYXV0byYgcmFuZ2VzID0gcmFuZ2VzQnlDb250YWluZXJOb2RlLmZp
bmQoY29udGFpbmVyKS0+dmFsdWU7CiAgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdl
cy5yYmVnaW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VzLnJlbmQoKTsgKytpdGVyYXRvcikgewotICAg
ICAgICAgICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoY29udGFpbmVyLmdldCgpLCBpdGVyYXRvci0+bG9jYXRpb24sIGl0ZXJhdG9yLT5sZW5n
dGgpOwotICAgICAgICAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCisgICAg
ICAgICAgICBhdXRvIHJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqY29udGFpbmVyKSwgaXRlcmF0b3ItPnJhbmdlKTsKKyAgICAgICAg
ICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsK
KyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxp
dmVSYW5nZShyYW5nZSkucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRD
bG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50
OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFj
ZW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtODk4LDcgKzg5Nyw3IEBAIHVpbnQzMl90IFBh
Z2U6OnJlcGxhY2VSYW5nZXNXaXRoVGV4dChjb25zdCBWZWN0b3I8UmVmPFJhbmdlPj4mIHJhbmdl
c1RvUmVwbGFjZSwKICAgICAgICAgaWYgKHJlcGxhY2VtZW50TG9jYXRpb24gPT0gbm90Rm91bmQg
fHwgIXJlcGxhY2VtZW50TGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
cmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHJlcGxhY2Vt
ZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0pOworICAgICAgICByZXBsYWNlbWVudFJh
bmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhpZ2hlc3RSb290KSwgeyByZXBsYWNlbWVudExvY2F0aW9u
LCByZXBsYWNlbWVudExlbmd0aCB9IH0pOwogICAgIH0KIAogICAgIHJlcGxhY2VSYW5nZXMoKnRo
aXMsIHJlcGxhY2VtZW50UmFuZ2VzLCByZXBsYWNlbWVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKaW5kZXggZDBkMDBjNmJkNTczMjc3M2MwYTM3
ZThiYjUzNjU3ZWIzNDc3ZGViMy4uZDI0NWNjZDllYzkxMjAyZWMzZDBmNDllZDU1NGMzMDUwZWU5
N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0zMSwxMCArMzEsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJh
bmdlLmgiCiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTYzLDE2ICs2MiwxNCBAQCBlbnVtIFRleHRDaGVja2luZ1Byb2Nl
c3NUeXBlIHsKIH07CiAKIHN0cnVjdCBHcmFtbWFyRGV0YWlsIHsKLSAgICBpbnQgbG9jYXRpb247
Ci0gICAgaW50IGxlbmd0aDsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8
U3RyaW5nPiBndWVzc2VzOwogICAgIFN0cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCiBzdHJ1
Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7Ci0gICAg
aW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7
CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGRldGFpbHM7CiAgICAgU3RyaW5nIHJlcGxhY2Vt
ZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZjI3Yjk5ZjM4
N2MxMjhhZmZiNDM2OWFiNGVjM2E5YzBiZmZjMjk4Li4xMzRlYTMxZmNlOGY5ODg5MTEyY2MxNGMw
N2ZkMTc0ZGJlNWJjZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0y
MDQ0LDkgKzIwNDQsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmludmFsaWRhdGVD
b250cm9sVGludHMoKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxSYW5nZT4gSW50ZXJu
YWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdl
TG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxl
bmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyByYW5nZUxvY2F0aW9uLCBy
YW5nZUxlbmd0aCB9KSk7CiB9CiAKIHVuc2lnbmVkIEludGVybmFsczo6bG9jYXRpb25Gcm9tUmFu
Z2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJiByYW5nZSkKQEAgLTIwNzUsOSArMjA3NSw5
IEBAIFN0cmluZyBJbnRlcm5hbHM6OnJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0
b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBwbGFpblRleHRVc2luZ0JhY2t3YXJk
c1RleHRJdGVyYXRvckZvclRlc3RpbmcocmFuZ2UpOwogfQogCi1SZWY8UmFuZ2U+IEludGVybmFs
czo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKQorUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgdW5zaWdu
ZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2UsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsK
KyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwg
eyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9CiAKIFJlZlB0cjxSYW5nZT4gSW50
ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNvbnN0IFJhbmdlJiBzZWFyY2hSYW5n
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQpCkBAIC0yNDMyLDgg
KzI0MzIsNyBAQCB2b2lkIEludGVybmFsczo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoY29uc3Qg
U3RyaW5nJiBjYW5kaWRhdGUsIHVuc2lnbmVkIGxvY2F0aQogCiAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Ok5vbmU7Ci0g
ICAgcmVzdWx0LmxvY2F0aW9uID0gbG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IGxlbmd0
aDsKKyAgICByZXN1bHQucmFuZ2UgPSB7IGxvY2F0aW9uLCBsZW5ndGggfTsKICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7CiAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBlMjM1MjM0MWRiOGMxNWQ0MjlmOWNlZmQyODlkZjUyMjcw
ZTVhYzdjLi5jZjc5ZTUwYzdiODQ3M2Y2ZmUyNTJmOGNjNzY4NTljNmY5MTU3MWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5NSwxMiArMjk1LDEyIEBAIHB1YmxpYzoKIAog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGludmFsaWRhdGVDb250cm9sVGludHMoKTsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGlu
dCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21S
YW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmKTsKICAgICB1bnNpZ25lZCBsZW5ndGhG
cm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdl
QXNUZXh0KGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0VXNpbmdCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmKTsKLSAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJh
bmdlJiwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7CisgICAgUmVmPFJhbmdl
PiBzdWJyYW5nZShSYW5nZSYsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdl
TGVuZ3RoKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8UmFuZ2U+PiByYW5nZUZvckRpY3Rpb25h
cnlMb29rdXBBdExvY2F0aW9uKGludCB4LCBpbnQgeSk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTYyZmFmNDk0NmVh
YWRkOTgwZTU3ODlhMThiYmRlYzU1ODNmNjMyMy4uMzc1NzkwNzcwNGY5MzEzZTY4NDE0YzAwNTU5
MTc0MWU0NmEyNWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzI1
LDEyICszMjUsMTIgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcg
eCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CiAKLSAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdl
TGVuZ3RoKTsKKyAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBz
Y29wZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVu
Z3RoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUs
IFJhbmdlIHJhbmdlKTsKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZyb21SYW5nZShFbGVtZW50
IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNUZXh0KFJhbmdlIHJh
bmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRv
cihSYW5nZSByYW5nZSk7Ci0gICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIGxvbmcgcmFu
Z2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2Ug
cmFuZ2UsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxl
bmd0aCk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJp
bmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdldE9m
ZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCmluZGV4IGI4OTkzM2Zm
YTFiZjI4NDNjMjZmZGJkNjZkMjkyNmVkMDBjNWY2YTEuLjc2ZWY0NzIyZDc1MWNmNmU1OWFhYjll
ZGZhYjY2NTZlNzA0ZjE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRp
bmdSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApA
QCAtMzMsNDIgKzMzLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8pCitSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6
dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gYmFzZSkKIHsKLSAgICBBU1NFUlQocmFu
Z2UubG9jYXRpb24gIT0gbm90Rm91bmQpOworICAgIEFTU0VSVChlZGl0aW5nUmFuZ2UubG9jYXRp
b24gIT0gbm90Rm91bmQpOworICAgIFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlIHJhbmdlIHsgZWRp
dGluZ1JhbmdlLmxvY2F0aW9uLCBlZGl0aW5nUmFuZ2UubGVuZ3RoIH07CiAKLSAgICAvLyBTYW5p
dGl6ZSB0aGUgaW5wdXQsIGJlY2F1c2UgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCB0YWtlcyBzaWduZWQgaW50ZWdlcnMuCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID4g
SU5UX01BWCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaW50IGxlbmd0aDsKLSAgICBp
ZiAocmFuZ2UubGVuZ3RoIDw9IElOVF9NQVggJiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5n
dGggPD0gSU5UX01BWCkKLSAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5s
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbGVuZ3RoID0gSU5UX01BWCAtIHJhbmdlLmxvY2F0
aW9uOwotCi0gICAgaWYgKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgeworICAgIGlmIChiYXNlID09IEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBh
c3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgY2FsbGVkIGJ5IGlucHV0IG1ldGhv
ZHMgdGhhdAogICAgICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmlu
ZyB0aGUgc2VsZWN0aW9uLgogICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBv
ZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QKICAg
ICAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBp
cyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgICAgIC8vIHRvIHVzZSB0aGUgcm9v
dCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9u
YWwgYmFzZS4KICAgICAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBp
bnB1dCBjb250ZXh0LgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiks
IGxlbmd0aCk7CisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cygqZWxlbWVudCksIHJhbmdlKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7Ci0KLSAg
ICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBp
ZiAoIXNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFw
aCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRP
ZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpKTsKKyAgICBhdXRvIHBhcmFncmFw
aFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3Rh
cnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdy
YXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8g
cGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9k
ZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFy
dEluZGV4ICsgcmFuZ2UubG9jYXRpb24sIGxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50
cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShX
ZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCks
IFdURk1vdmUoc2NvcGVFbmQpIH0sIHJhbmdlKSk7CiB9CiAKIEVkaXRpbmdSYW5nZSBFZGl0aW5n
UmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJh
bmdlKiByYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKaW5kZXggOTQ3MzhiN2Y4OGU5ZTA1
OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OS4uZTA0M2Y5NzI0MGU0MjVlY2QyNWE0MjdlZGQ5Mjdh
Y2I3NDVlMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1Jhbmdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTQxLDYgKzQx
LDcgQEAgZW51bSBjbGFzcyBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gOiB1aW50OF90IHsKICAg
ICBQYXJhZ3JhcGgsCiB9OwogCisvLyBGSVhNRTogUmVwbGFjZSB0aGlzIHdpdGggT3B0aW9uYWw8
Q2hhcmFjdGVyUmFuZ2U+Lgogc3RydWN0IEVkaXRpbmdSYW5nZSB7CiAgICAgRWRpdGluZ1Jhbmdl
KCkKICAgICAgICAgOiBsb2NhdGlvbihub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkw
NDE4ZWJlODFhYmMxYTkxODAuLmZhYjQ4NGRlYWExODJiNDZiNWRmM2JhOWQ0YWE2ZDNjYmQwY2Nl
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRz
Lmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNlZW1zIGxpa2Ugd2UgY291bGQgdXNlIHN0ZDo6dHVw
bGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVsb3cgYSBsb3QhCisKIG5hbWVzcGFjZSBJUEMgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjUw
LDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVRdWVyeU9wdGlvbnM+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVRdWVyeU9wdGlvbgogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZ2UmIHJhbmdlKQoreworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxvY2F0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sZW5ndGgpOworfQorCitPcHRpb25hbDxDaGFyYWN0
ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsb2NhdGlvbjsKKyAgICBkZWNvZGVy
ID4+IGxvY2F0aW9uOworICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4g
bGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24sICpsZW5ndGggfSB9OworfQorCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiBpbmZvKQogewogICAgIGVuY29k
ZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAtMjA1MywyMiArMjA3NiwxNiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpCiB7Ci0gICAg
ZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubGVuZ3Ro
OworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJhbmdlOwogICAgIGVuY29kZXIgPDwgZGV0YWlsLmd1
ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwudXNlckRlc2NyaXB0aW9uOwogfQogCiBPcHRp
b25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxpbnQ+IGxvY2F0aW9uOwotICAgIGRl
Y29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4gbGVuZ3RoOwotICAgIGRlY29kZXIgPj4g
bGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBy
YW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ3Vlc3Nl
czsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50
Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICgh
dXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZ3Vl
c3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfX07CisgICAgcmV0dXJuIHsgeyAqcmFu
Z2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3JpcHRpb24pIH0gfTsKIH0K
IAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQpA
QCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVl
c3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2kKIHZvaWQgQXJndW1l
bnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sb2NhdGlvbjsKLSAgICBlbmNv
ZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAgZW5jb2RlciA8PCByZXN1bHQucmFuZ2U7CiAgICAg
ZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5yZXBsYWNl
bWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUsOSBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXImCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+
IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsK
LSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7Cisg
ICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdyYW1tYXJEZXRhaWw+PiBkZXRhaWxz
OwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1
bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICgh
cmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
e3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgqbG9jYXRpb24pLCBXVEZNb3ZlKCpsZW5ndGgpLCBX
VEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH19OworICAgIHJldHVybiB7
IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQp
IH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2
MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uMWFiYjQxNmMxNGJiZDRhZTViOWM5
Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBBYnNvbHV0ZVBvc2l0aW9uQ29u
c3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
IGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CitzdHJ1
Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTE0
Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmli
dXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAKLXRlbXBsYXRlIDx0eXBlbmFtZT4g
Y2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVz
aW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8mKTsKICAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggZjlkN2FiZTc0YzQyNmZiNDU0MjMwM2QxNWQzMjNmMGMyZjJhZDA1OS4uMzg4ODY2MmY5
MWI4MTFiOGQ2YTM5NDU1OGFkNTE5MjFmNjFmNGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMzNjYsMTIgKzMzNjYsOSBAQCBzdGF0aWMg
Y29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgY29yZVRleHRDaGVja2luZ1R5cGUo
TlNUZXh0Q2hlY2tpbmdUeQogCiBzdGF0aWMgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHRl
eHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdChOU1RleHRDaGVja2luZ1Jl
c3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtuc1Jlc3VsdCBy
YW5nZV07Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJl
c3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUobnNSZXN1bHQucmVzdWx0VHlwZSk7Ci0g
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJh
Y3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jl
c3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCmluZGV4IGM5Yjc1NTNjZDdiMDhlZWFj
N2Q4MjMzOGIxMTBmNGFlZGQ5ZWY2YWMuLjM5MGI0YTVmN2I5ZWFjNjMxZmQ3MzI0MTY1N2UyMjFk
YTVjMTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJE
ZXRhaWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgK
QEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFp
bD4gY3JlYXRlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3Nlcywg
Y29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24pOwogICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1h
ckRldGFpbD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKIAotICAgIGlu
dCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbjsgfQot
ICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoOyB9
CisgICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdl
LmxvY2F0aW9uOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRl
dGFpbC5yYW5nZS5sZW5ndGg7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gZ3Vlc3NlcygpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9n
cmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4Njhk
YzQ4ODMwYWZmZGM0NzFmZS4uZjYwOGM4ZGI1YzYwNjUzMGNhYTU5NmVkNmFiNWU5NWQ2Y2VkZTU5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpA
QCAtMjEyLDggKzIxMiw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2Vy
OjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShtaXNzcGVs
bGVkUmFuZ2UpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJlc3VsdCkpOwogCiAg
ICAgICAgIG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uICsgbWlzc3BlbGxl
ZFJhbmdlLmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9U
ZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tl
ck1hYy5tbQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRmZmI4NGVlNjM0Li5h
YzNiZWUwMGIxNjU5M2FjZjQ1NzFlYTk5YzExMDE2Y2MxNGY0NTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQsMjIgKzMzNCwyMCBA
QCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dyYXBoeTpOVUxMCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1
bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1Jhbmdl
IHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hl
Y2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdS
ZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNv
bWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9
ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVz
LmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5n
UmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdy
YW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50
VGFnIHNwCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJh
bmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxO
U1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlv
biA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0
aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9
ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0
YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFt
bWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0g
W2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAg
ICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTM3MCwzNiAr
MzY3LDMxIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1Rl
eHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6
Okxpbms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlu
cyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6
OlF1b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFz
aDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwot
ICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAg
ICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxh
Y2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmlu
Z107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2lu
Z1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAg
ICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgfQpAQCAtNDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAog
dm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxs
RG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1h
ckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ld
OwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBhdXRvIGNvcnJl
Y3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9y
IChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmlu
ZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0
Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNN
YWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwot
ICAgIE5TU3RyaW5nICpncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2Vy
RGVzY3JpcHRpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZ3JhbW1hckRldGFpbERp
Y3QgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBn
cmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rp
b25zLmdldCgpLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXSk7CisgICAgTlNTdHJpbmcgKmRl
c2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBO
U0RpY3Rpb25hcnkgKmRldGFpbCA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1h
clVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1h
ckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgfTsKIAotICAgIFtbTlNTcGVs
bENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1t
YXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3QuZ2V0KCld
OworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGlu
Z1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsK
IH0KIAogdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3BlbGxEb2N1bWVudFRh
ZyBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29u
dGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJv
b2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggOWNlNWRiYWMxMTRhNDk1ZmVhNGE5ZTk1M2Q5YmZmYzgxZWJkNzZjZC4uNTJiYjdjNzYzZDAw
YjAwM2Q4MWNkMGU4YjE5Zjk4OWZjYWIxYmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTY1LDggKzY1LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIHVpbnQ2
NF90IGdlbmVyYXRlVGV4dENoZWNraW5nUmVxdWVzdElEKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCBmMThjYWE3MmNiZDk2NTMxNzU1ZTkyZWNmYjIw
ZWY0ZGI4Y2E1M2FmLi43MGEzOTAzNWQ1OGM4MTJjMmNiMDEzMTlmNWExNmM2ZmE1OWY1ZDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCkBAIC04Nyw3ICs4Nyw3
IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmFuZ2VBbmRPZmZzZXQ+
IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94CiAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24s
IHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgc2VsZWN0aW9uTG9jYXRpb24gKz0gb2Zmc2V0OwogCi0g
ICAgcmV0dXJuIHt7IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9v
dCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OworICAg
IHJldHVybiB7eyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24s
IGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OwogfQogCiB2b2lkIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmlu
ZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5n
dGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRp
dmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFRleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0
cmluZyBhbgogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0
b3JlID0gbG9jYXRpb25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3RvcmVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2Nh
dGlvbkluUm9vdCArIHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFj
ZW1lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3Rv
cmUgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVj
dGlvbkxvY2F0aW9uVG9SZXN0b3JlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxl
Y3Rpb25Ub1Jlc3RvcmUgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9j
YXRpb25Ub1Jlc3RvcmUsIDApOwogICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5t
b3ZlVG8oc2VsZWN0aW9uVG9SZXN0b3JlLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAg
ICB9CiAKICAgICBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5S
YW5nZTpOU01ha2VSYW5nZSgwLCBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdKSBvcHRp
b25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlk
PiAqYXR0cnMsIE5TUmFuZ2UgYXR0cmlidXRlUmFuZ2UsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAg
YXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24s
IGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRl
UmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CiAgICAgICAgIGlmICghYXR0
cmlidXRlQ29yZVJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTksNyArMTk5LDcg
QEAgQXR0cmlidXRlZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRl
ZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAgICAgYXV0byYgdGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFy
a2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAg
ICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5n
ZShjdXJyZW50VGV4dFJhbmdlKSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9m
ZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFu
Z2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFu
Z2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgICAgICBzaXplX3Qgc3VicmFuZ2VMb2NhdGlvbjsK
ICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjc1ZWY1MmExM2I0YWZhYThlMDlkYzUx
M2Q0MjhkMzEyMmUxZjAzNi4uYjk5MGY2YjMyMjk2ZjAzY2JiZDAwOGJhNTQxYWNkN2ZkYzJlMGI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTU0MjgsNyArNTQyOCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRf
dCBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGF1dG8gc3Vycm91bmRpbmdS
YW5nZSA9IG1ha2VSYW5nZShzdGFydE9mRWRpdGFibGVDb250ZW50KHNlbGVjdGlvblN0YXJ0KSwg
c2VsZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gY3Vyc29yUG9zaXRpb24gPSBXZWJDb3JlOjpjaGFy
YWN0ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSk7CiAgICAgYXV0byYgcm9vdE5vZGUgPSBzdXJy
b3VuZGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7Ci0g
ICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291
bnQpOworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoJnJv
b3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwogICAgIGlm
ICghc2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhODdkYmVmNTQ3
MjA3MTUxNzVjZTcyNTY0YzZhOGY1YWFjMTQxYzdiLi5mOTUyZDE2NWJiNTg1NjJjMmY4YmYyNDI2
ZDljNzlhMGQ2ZGUzYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDA2NiwxOCArNDA2NiwyMCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0
X3QgbGVuZ3RoRGVsdAogICAgIHNpemVfdCBzZWxlY3Rpb25MZW5ndGg7CiAgICAgVGV4dEl0ZXJh
dG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2Vs
ZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAKLSAgICBDaGVja2VkSW50NjQgbmV3
U2VsZWN0aW9uTG9jYXRpb24geyBzZWxlY3Rpb25Mb2NhdGlvbiB9OwotICAgIENoZWNrZWRJbnQ2
NCBuZXdTZWxlY3Rpb25MZW5ndGggeyBzZWxlY3Rpb25MZW5ndGggfTsKLSAgICBuZXdTZWxlY3Rp
b25Mb2NhdGlvbiArPSBsb2NhdGlvbkRlbHRhOwotICAgIG5ld1NlbGVjdGlvbkxlbmd0aCArPSBs
ZW5ndGhEZWx0YTsKKyAgICBhdXRvIG5ld1NlbGVjdGlvbkxvY2F0aW9uID0gY2hlY2tlZFN1bTxD
aGFyYWN0ZXJDb3VudD4oc2VsZWN0aW9uTG9jYXRpb24sIGxvY2F0aW9uRGVsdGEpOworICAgIGF1
dG8gbmV3U2VsZWN0aW9uTGVuZ3RoID0gY2hlY2tlZFN1bTxDaGFyYWN0ZXJDb3VudD4oc2VsZWN0
aW9uTGVuZ3RoLCBsZW5ndGhEZWx0YSk7CiAKICAgICBpZiAobmV3U2VsZWN0aW9uTG9jYXRpb24u
aGFzT3ZlcmZsb3dlZCgpIHx8IG5ld1NlbGVjdGlvbkxlbmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChyb290LCBuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0aW9u
TGVuZ3RoLnVuc2FmZUdldCgpKSkKLSAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBDaGFyYWN0ZXJS
YW5nZSBuZXdTZWxlY3Rpb25SYW5nZTsKKyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sb2NhdGlvbiA9
IG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpOworICAgIG5ld1NlbGVjdGlvblJhbmdl
Lmxlbmd0aCA9IG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKTsKKworICAgIGF1dG8gcmVz
b2x2ZWRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKnJvb3QpLCBuZXdTZWxlY3Rpb25SYW5nZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVkUmFuZ2UpLnB0cigp
LCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
OlllcywgVXNlclRyaWdnZXJlZCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAt
NDE5MiwxNiArNDE5NCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdD
b250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAgICBSZWZQ
dHI8Q29udGFpbmVyTm9kZT4gcm9vdENvbnRhaW5lck5vZGUgPSByb290Tm9kZS0+aXNDb250YWlu
ZXJOb2RlKCkgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPihyb290Tm9kZS5nZXQoKSkgOiByb290
Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5k
TGVuZ3RoRnJvbVJhbmdlKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCByYW5nZU9mSW50ZXJlc3Qu
Z2V0KCksIHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uLCByYW5nZU9mSW50ZXJlc3RMZW5ndGgpOwog
Ci0gICAgICAgIENoZWNrZWRTaXplIG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RM
b2NhdGlvbiB9OworICAgICAgICBDaGVja2VkPENoYXJhY3RlckNvdW50LCBSZWNvcmRPdmVyZmxv
dz4gbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CiAgICAgICAg
IG1pZHBvaW50TG9jYXRpb24gKz0gcmFuZ2VPZkludGVyZXN0TGVuZ3RoIC8gMjsKICAgICAgICAg
aWYgKG1pZHBvaW50TG9jYXRpb24uaGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBtaWRwb2ludFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChyb290Q29udGFpbmVyTm9kZS5nZXQoKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNh
ZmVHZXQoKSwgMCk7CisgICAgICAgIGF1dG8gbWlkcG9pbnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqcm9vdENvbnRhaW5lck5vZGUpLCBtaWRwb2ludExvY2F0aW9uLnVuc2FmZUdldCgp
KSk7CiAKLSAgICAgICAgYXV0byBtaWRwb2ludCA9IG1pZHBvaW50UmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKTsKICAgICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gc3RhcnRP
ZldvcmQobWlkcG9pbnQpOwogICAgICAgICBpZiAoc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2Vs
ZWN0aW9uIDwgcmFuZ2VPZkludGVyZXN0U3RhcnQpIHsKICAgICAgICAgICAgIHN0YXJ0T2ZSYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IGVuZE9mV29yZChtaWRwb2ludCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggY2E0NzkzMTA1NGI4MDI2MjY4NzNlM2Y1M2ZiNWVlMzA1NGU5ODUxMy4uM2I5
NDYzMDRkZmI3NTIxMTQxM2U5ZjhkMTEwN2Y2Zjg3NjU5OWQyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQpAQCAtODY1LDEyICs4NjUsMTEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gV2ViRWRp
dG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkKIAogICAgIE5T
QXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2Fy
ZGVyXSBjaGVja1NwZWxsaW5nT2ZTdHJpbmc6c3RyaW5nLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENv
cHlpbmcoKS5nZXQoKV07CiAgICAgZm9yIChOU1ZhbHVlICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNv
bWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jl
c3VsdCByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQgJiYgcmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChp
bmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAg
ICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1
bHQucmFuZ2VWYWx1ZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgfQog
CkBAIC05MzksMTEgKzkzOCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJP
ZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIEdy
YW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAgICAgICAgTlNWYWx1ZSAqZGV0YWlsUmFuZ2VB
c05TVmFsdWUgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJSYW5nZV07CiAgICAgICAg
IEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZSk7Ci0gICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNS
YW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJU
KGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChk
ZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxvY2F0aW9u
ID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sZW5ndGgg
PSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1Zh
bHVlLnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChk
ZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOworICAgICAgICBncmFt
bWFyRGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxSYW5nZUFzTlNWYWx1
ZS5yYW5nZVZhbHVlKTsKICAgICAgICAgZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBb
ZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICBO
U0FycmF5ICpndWVzc2VzID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlv
bnNdOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTU3LDIy
ICs5NTQsMjAgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJh
eSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzOwogCiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5j
b21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0
UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5
cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICAgICAgQVNT
RVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQo
cmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5y
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVz
dWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gKm1ha2VD
aGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQg
Z3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBm
b3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAgICAgICAgICAgICAgICAgR3JhbW1hckRl
dGFpbCBkZXRhaWw7CkBAIC05ODEsOCArOTc2LDcgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMK
ICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05T
VmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5T
UmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0
YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkZXRhaWwubGVuZ3RoID0gZGV0
YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdlID0gKm1ha2VD
aGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAgICAgICAgICAgICAgICBkZXRhaWwudXNl
ckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2Vy
RGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21p
bmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgICAg
ICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTkzLDM2ICs5ODcsMzEg
QEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21p
bmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6TGluazsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVj
a2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0
OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4
dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpS
ZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
KyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNraW5nVHlwZXMu
Y29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAg
ICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVu
dFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9
CkBAIC0xMDQ5LDE2ICsxMDM4LDE4IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3Qg
U3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0
YWlsKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBjb3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwuZ3Vl
c3Nlcy5zaXplKCk7IGkrKykgewotICAgICAgICBOU1N0cmluZyogZ3Vlc3MgPSBncmFtbWFyRGV0
YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOwor
ICAgIE5TTXV0YWJsZUFycmF5ICpjb3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07
CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAg
ICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMg
YWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5n
ZSA9IE5TTWFrZVJhbmdlKGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVu
Z3RoKTsKLSAgICBOU1N0cmluZyogZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRh
aWwudXNlckRlc2NyaXB0aW9uOwotICAgIE5TRGljdGlvbmFyeSogZ3JhbW1hckRldGFpbERpY3Qg
PSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVz
Y3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlvbnMsIE5TR3JhbW1h
ckNvcnJlY3Rpb25zLCBuaWxdOwotICAgIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1h
clBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOworICAgIE5TU3RyaW5nICpkZXNjcmlw
dGlvbk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNEaWN0
aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFtbWFy
VXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAgICAgTlNHcmFtbWFy
Q29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucywKKyAgICB9OworICAgIFtbTlNTcGVsbENoZWNrZXIg
c2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6
YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGljdGlvbmFyeV07CiB9CiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYg
bWlzc3BlbGxlZFdvcmQpCkBAIC0xMTk0LDcgKzExODUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQgYQogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKSB7
CiAgICAgICAgIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoID0gYWNjZXB0ZWRDYW5kaWRhdGUu
cmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudExlbmd0aCA+IDAp
IHsKLSAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2Vw
dGVkQ2FuZGlkYXRlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CisgICAgICAgICAgICBO
U1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5yYW5n
ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAgTlNSYW5nZSBzb2Z0
U3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKE5TTWF4UmFuZ2UocmVwbGFjZWRSYW5nZSkgLSAxLCAx
KTsKICAgICAgICAgICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5lbmRzV2l0
aCgiICIpKQogICAgICAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKil2aWV3IF9zZXRTb2Z0U3Bh
Y2VSYW5nZTpzb2Z0U3BhY2VSYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCBlZDVlZDIwNDAyOTU1NzhlYmU5OWViODA3NzQyZDdlMDZiMDQ5
ZTMwLi5kZDg3YWQ0OWEzNWE4MmUzMmRmMmJjZWNmNWRlMmZlNzVmYjY4NDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgyMSwxMCArODIxLDkg
QEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
bnNyYW5nZQogCiAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbyly
YW5nZUlzUmVsYXRpdmVUbwogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkK
KyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOwor
ICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3Jhbmdl
Lmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4g
SU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2Nh
dGlvbjsKIAogICAgIGlmIChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVU
bzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlz
IHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0
CkBAIC04MzYsNyArODM1LDcgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRv
RE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICAgICAgYXV0
byogZWxlbWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWxlbWVudCwgbnNyYW5nZS5sb2NhdGlv
biwgbnNyYW5nZS5sZW5ndGgpOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQp
LCAqcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2Vi
UmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC04NDQsMTAgKzg0Myw5IEBAIC0gKFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2Ug
cmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFy
eVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0
YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFn
cmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAg
fSwgKnBhcmFncmFwaFN0YXJ0IH0pOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRl
eCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5k
ID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWlu
ZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RG
TW92ZShzY29wZUVuZCkgfSwgKnJhbmdlKSk7CiB9CiAKIC0gKERPTVJhbmdlICopX2NvbnZlcnRO
U1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWRkZjIzZWNmM2NiYTViOWJjOWVhOWYyNmVlZGNm
MDM3OTk1Njg4Yy4uNmY5MWVmYjlhOTAxYWUxY2NiYWU1NmM5YjJmZDk5YzE0MDk5NTJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzI3OCwxMiAr
NzI3OCw5IEBAIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hl
Y2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHlwZSB0eXBlCiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0
KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJh
bmdlID0gbnNSZXN1bHQucmFuZ2U7Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUobnNSZXN1bHQu
cmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICByZXN1bHQucmFu
Z2UgPSAqV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2OWJmN2VmYWMyZWI3MmRjYmIyNzUxM2E4NTE3NGYxYjA4
ODg4OGIuLmU0MjI2MzEwZjgxN2I2YjkxYWE0YzUyMDZiNDM4MWRiYjBiZjk5MmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
IG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKIDIwMjAtMDMtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgSG92ZXJpbmcgb3ZlciBjb3VudHJpZXMgYXQgaHR0cHM6Ly9jb3ZpZGluYy5pby8g
c2hvd3MgYml6YXJyZSByZW5kZXJpbmcgYXJ0aWZhY3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNy
YXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJr
ZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDBmNDBl
ZmQ4M2NiYTgwMDJkMThhMTYwN2I5YzU4NzJlZmUxZGU3MmMuLjIzNGQzMzk2NzNhMjM2OGEzZTg0
MjYxNzhlNzEyMTNmODQxYTBmMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWlu
ZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0xLDEyICsxLDEyIEBACiB0
ZXh0CiB0ZXh0CiB0ZXh0Ci1UaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZv
ciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBvdXQgb2YgYm91bmRzCitUaGlzIHZlcmlm
aWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBp
bmRleCBncmVhdGVyIHRoYW4gMl4zMQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAot
UEFTUyBpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5
OTk5OTk5OTkpKSBpcyBmYWxzZQorUEFTUyBpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50
ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jh
c2guaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWlu
ZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbAppbmRleCAwYWIyZjE3OTU5OGRiYTA3NWMwNmVk
NzI4YWYxMTA2OTZkNWU3MmExLi42YWM3ZjlmNjcyY2I2ODUxNWUwN2EzYzUwMTBlZTY4MDBhMzFi
YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2Vy
LWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5o
dG1sCkBAIC0xNCwxMiArMTQsMTIgQEAgdGV4dAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRp
b24oIlRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3
aGVuIGdpdmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2
ZW4gYW4gaW5kZXggZ3JlYXRlciB0aGFuIDJeMzEiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
eHQxIikuZm9jdXMoKTsKICAgICAgICAgdmFyIGl0ZW0xID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoIml0ZW0xLmlzVGV4dE1h
cmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIik7ICAgICAg
IAorICAgICAgICBzaG91bGRCZVRydWUoIml0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRl
eHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIik7CiAgICAgfQogCiA8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lu
cHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAppbmRleCA2
YTQ4NWFlYjI4MjY1NTg3ZTNkM2NjNjQ0OTc0M2JkYjU2ZTAzOWEyLi5iYjAyYzdiZTEyMGU4MDcw
ZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDE3IEBACi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdO
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogMTIzNDU2Ci0xMCw1NzIsMCwx
OAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUw
LDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcy
LDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3Miw0MCwxOAotMCwwLDAsMAotMCwwLDAsMAotMCww
LDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhlIGJlZ2lubmluZzogKDAsMCksICgxMCw1NzIsMCwx
OCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDApLCAoMTgsNTcyLDAsMTgp
CitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDApLCAoNTgsNTcyLDAsMTgpCitjYXJldCBh
dCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCksICg1OCw1NzIsMCwxOCkKK2ZpcnN0IGNoYXJhY3Rl
cjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxKSwgKDUwLDU3Miw4
LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rl
cjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQorZmlyc3QgbGluZTogKDAsNiksICgxMCw1NzIsNDgs
MTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDQy
OTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBj
aGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAoMTgsNTcyLDQwLDE4KQorb3V0IG9mIGJvdW5kcywg
Y2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywg
Y2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCwwKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5k
cywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywxKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5k
cywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0Mjk0OTY3Mjk1KSwgKDU4LDU3MiwwLDE4KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFj
dGVycmFuZ2UtcGxhaW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKaW5kZXggNzkyNThiMTlhZWYxY2Y2YmFi
ZjljYTVjZTNkZDVkOGQyMjZkNjBkZS4uNjJjZGM5YjgyNmY5NjVmODU1ZDdkNWM4N2FlN2U1OTBk
NDQ2MjlkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sCkBAIC0xLDEw
ICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQog
PHN0eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTEy
LDcgKzcsNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiA8Ym9keSBjb250ZW50
ZWRpdGFibGU+CiAxMjM0NTYKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLQogCXZh
ciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKIAkKIAlm
dW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTIxLDQwICsxNSw0MiBAQCBib2R5IHsgbWFyZ2luOiAx
MDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogCX0K
LQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7
CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCArICIsIiArIGxlbmd0aCArICIp
LCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9CisKIAlpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0JCQotCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHks
IDApOwogCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCAwKSk7IC8vIGNhcmV0IGFm
dGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBlbmQgb2YgbGlu
ZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
NiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEpKTsgLy8gbGFzdCBj
aGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2KSk7IC8vIGZpcnN0IGxpbmUK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAs
IDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5NDk2NzI5NSkpOyAvLyBmaXJz
dCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkpOyAvLyBvdXQgb2YgYm91bmRz
LCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMSkpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDQyOTQ5
NjcyOTUpKTsgLy8gLSItCisJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9j
dW1lbnQuYm9keSwgMCk7CiAKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBiZWdpbm5pbmciLCAw
LCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCAw
KTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYsIDApOworCQkJbG9n
UmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAwKTsKKwkJCWxvZ1JlY3QoImZp
cnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAx
KTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7CisJCQlsb2dSZWN0KCJsYXN0
IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNik7CisJ
CQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwg
MCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0
IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywg
Y2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBj
bGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMs
IGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywg
Y2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJCX0gY2F0Y2ggKGV4KSB7CiAJ
CQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKIAkJfQotCQkKKwogCQl2YXIg
Y29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKIAkJY29uc29sZS5hcHBlbmRD
aGlsZChjb25zb2xlX21lc3NhZ2VzKTsKIAkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25z
b2xlKTsKLQkJCiAJfSBlbHNlIHsKIAkJZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVy
YWN0aXZlbHkpIik7CiAJfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5w
dXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxl
ZC1leHBlY3RlZC50eHQKaW5kZXggYWNmZDUyZjBiOTQ4YTY1M2ZjMDZmMjhjNTNmZDI3MjE2NDBh
OGFkNC4uYmIwMmM3YmUxMjBlODA3MGYyMDQ1ZGEzNjVkMmQwOWQzNDY2YjNiZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2Utc3R5bGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDI0
ICsxLDE3IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEg
b2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAz
IG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogMTIzNDU2
Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAotMTAs
NTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTEwLDU3Miw0
OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3Miw0MCwxOAotMCwwLDAsMAot
MCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhlIGJlZ2lubmluZzogKDAsMCks
ICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDApLCAo
MTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDApLCAoNTgsNTcyLDAs
MTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCksICg1OCw1NzIsMCwxOCkKK2Zp
cnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwx
KSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIpLCAoNTAsNTcyLDgsMTgpCits
YXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQorZmlyc3QgbGluZTogKDAsNiks
ICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0
IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZSB3aXRob3V0
IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAoMTgsNTcyLDQwLDE4KQorb3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwgKDU4LDU3MiwwLDE4KQorb3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCwwKSwgKDU4LDU3MiwwLDE4KQor
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywxKSwgKDU4LDU3MiwwLDE4KQor
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0Mjk0OTY3Mjk1KSwgKDU4LDU3
MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbAppbmRleCBmZGNm
YzZkNGIzNzc5YjliZDM5ZDg3NzFjZDJmYjBkYmE2MzBmMjFlLi5lNWJmMjg2NjBjYzM3OGI2YWVl
YmJjMzZkM2JlOWY5Mjk5ZGVmYTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbApAQCAtMSwxMCArMSw1IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgdGVzdFJ1bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNrcygp
OwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4KIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0K
IDwvc3R5bGU+CkBAIC0yMSwzMyArMTYsMzYgQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6
IDAgfQogCQlpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
KTsKIAkJY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKIAl9Ci0JCisKKyAgICBm
dW5jdGlvbiBsb2dSZWN0KGNvbW1lbnQsIHN0YXJ0LCBsZW5ndGgpCisgICAgeworICAgICAgICBs
b2coY29tbWVudCArICI6ICgiICsgc3RhcnQgKyAiLCIgKyBsZW5ndGggKyAiKSwgKCIKKyAgICAg
ICAgICAgICsgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShz
dGFydCwgbGVuZ3RoKSArICIpIik7CisgICAgfQorCiAJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0JCQogCQl0cnkgewotCQkKIAkJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCQkKKwogCQkJ
d2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDQpOwogICAg
ICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCI1NiIsIDAsIDEpOwog
Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgw
LCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCAwKSk7IC8vIGNhcmV0IGFmdGVyIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZQotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMTAw
KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEpKTsgLy8gbGFzdCBjaGFyYWN0
ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2KSk7IC8vIGZpcnN0IGxpbmUKLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDcpKTsg
Ly8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5NDk2NzI5NSkpOyAvLyBmaXJzdCBsaW5l
IHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkpOyAvLyBvdXQgb2YgYm91bmRzLCBzaG91
bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDQyOTQ5NjcyOTUp
KTsgLy8gLSItCi0KKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBiZWdpbm5pbmciLCAwLCAwKTsK
KwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCAwKTsKKwkJ
CWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYsIDApOworCQkJbG9nUmVjdCgi
Y2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGNo
YXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxKTsKKwkJ
CWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJh
Y3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNik7CisJCQlsb2dS
ZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNDI5
NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJh
Y3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBl
ZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1w
ZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBl
ZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJCX0gY2F0Y2ggKGV4KSB7CiAJCQlsb2co
IkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKIAkJfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDliM2Q3MDcyNDI3ZGNlZDA1ZTM2
NjhiODY3ODkyN2JkMmE1MDEzZTAuLmM1NTM3ZTQ3YjZmOTkzNThhZTUxY2U2ZDcwMDI4MWI3YWNk
MDg3N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTg0OSw3ICs4NDksMTAgQEAgd2Via2l0Lm9yZy9iLzIwMzUxNyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2l6aW5nL2R5bmFtaWMtYXZhaWwKICMgU3RhbGUt
d2hpbGUtcmV2YWxpZGF0ZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdLMQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlIFsgU2tpcCBdCiAK
LXdlYmtpdC5vcmcvYi8yMDUzMTQgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCisjIFJlc3VsdHMg
YXJlIGdvb2Qgb24gQ2F0YWxpbmEgYW5kIG5ld2VyLiBEZWxldGUgdGhlc2UgbGluZXMgd2hlbiB3
ZSBzdG9wIHN1cHBvcnRpbmcgdGhlc2Ugb2xkZXIgdmVyc2lvbnMgb2YgbWFjT1MuCitbIFNpZXJy
YSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5o
dG1sIFsgRmFpbHVyZSBdCitbIEhpZ2hTaWVycmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBl
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBb
IEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91
dCBdCiAKQEAgLTk2Myw0ICs5NjYsNCBAQCB3ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRz
L21vdXNlLWN1cnNvci1uby1tb3VzZW1vdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8yMDk1NjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1y
ZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXIt
YmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFm
dGVyLWJhY2stZm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMDFiMTkyM2RjZGE2NzU0NjBj
YWI3YzY5YjcwOGQxNjRmNGMyNTk2Li41ZTczMTM4Yjk2MWVkYTA2OTJhMTFkMmUxNTMxNjAyN2Y0
ZjYyNWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC0yMjMsOSArMjIzLDkgQEAgd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9z
cGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdpbm5pbmctb2YtYXV0b2NvcnJlY3QKIHdlYmtpdC5v
cmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvcmVtb3ZpbmctdW5kZXJsaW5lLWFmdGVy
LWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlvbi5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC1jYW5k
aWRhdGUtYWxsb3dzLWF1dG9jb3JyZWN0LW9uLW5leHQtd29yZC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2Fu
ZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWluY2x1ZGVzLWh5cGhlbi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4t
b3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFw
cGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLWJ0LXRleHQtd2l0aC1z
cGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEw
NTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0aC1zcGVsbGluZy1tYXJr
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC0xMDcyLDQgKzEwNzIsNCBAQCB3ZWJr
aXQub3JnL2IvMjA5NjIyIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtcmVjb25u
ZWN0LWR1cmluZy1uYXZpZ2F0ZQogCiB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDk2NzIgaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
Q3Jhc2ggXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2NzIg
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0
dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAzZjc3NGMyZGU5YWQ2MzhmYzA2NWE3YzczY2IwYTU5YTU0
MGVhNWI4Li4yZTViZTM4MTA2NDc0ODU3YzU3OWNmYThjNDQ2OGMwZjU4NWFkNGI2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg3Miw3ICsxODcyLDcg
QEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5k
ZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGlu
YSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
OS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRh
bGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmls
aXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVk
aXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJh
dWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVk
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRjYzExNTE5MGZm
NzRkNWI4ZmU0Y2MyNmQ0YjJkMjY0YzJlZTVjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi0xMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNjEsNTcyLDAsMTgK
LTYxLDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci01Miw1
NzIsOSwxOAotMTAsNTcyLDUxLDE4Ci0xMCw1NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAotMTgsNTcy
LDQzLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDVhYWNlMDc0MDEwMTA2MGVjY2M0OTIwNTc0ODdiYzZiZDgzMDM3MzkuLjc1ODU4Y2U2NTM4
YTdjNTJkMDhkZjVjM2QzMmM0MTIxZTA0Mjc0NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0
cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC04LDUgKzgs
NSBAQCBUZXN0aW5nIHRleHQgd2l0aCBiciBlbGVtZW50cyAoPGRpdj48YnI+PC9kaXY+aGVsbG88
YnI+KQogKDEsIDEwMCk6IGhlbGxvCiAoNiwgMSk6CiAoNywgMSk6Ci0oMTAwLCAwKTogdW5kZWZp
bmVkCi0oMTAwLCAxMDApOiB1bmRlZmluZWQKKygxMDAsIDApOgorKDEwMCwgMTAwKToKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAppbmRleCAzYTkz
MDMyOGUxMDYwMzlmMTUzMTNmNGRjNDJhMTQ0ZWRkOGViNDViLi45NDMxYTM5ZTRlNDUzYjBiYThl
NjU1MDgxMmI3NzhmMzJiZGY1ZWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLTAwMS5odG1sCkBAIC0zNCw4ICszNCw4IEBAIGJvZHkgeyBtYXJnaW46IDEw
OyBwYWRkaW5nOiAwIH0KICAgICAgICAgICAgIGxvZygiKDEsIDEwMCk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMSwgMTAwKS5zdHJpbmcoKSk7
CiAgICAgICAgICAgICBsb2coIig2LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmli
dXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg2LCAxKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2co
Iig3LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21S
YW5nZSg3LCAxKS5zdHJpbmcoKSk7IC8vIHNob3VsZCBiZSBlbXB0eQotICAgICAgICAgICAgbG9n
KCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9n
KCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAg
IGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJp
bmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9n
KCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICIiOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBkNzk3
ZDIyMzExYzFlM2Y5ZTU2ZTE3ZWExNzM1OGVhMWMyOWRkNmU2Li42ODAxMjc5MDZjMWU4NjdiYmY2
ZTgxMjQxNzZjZTEyMWU0NjgzYmZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTcsOCArNyw4IEBAIFRlc3Rpbmcgc3R5
bGVkIHRleHQgKDEyPGI+MzxpPjQ1NjwvaT48L2I+KQogKDAsIDEwMCk6IDEyMzQ1NgogKDUsIDEp
OiA2CiAoNSwgMik6IDYKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVuZGVmaW5l
ZAorKDEwMCwgMCk6IAorKDEwMCwgMTAwKTogCiAKIFRlc3RpbmcgcHJvcGVyIHNwYWNlIHJ1bnMg
KDEuXzIuX18zLl9fXzRfNSkKIHRvdGFsIGxlbmd0aDogMTUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5n
ZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKaW5kZXggODcxZGM3YjI3YWRlZWE0ZTI1Mzg1ZWJmYjNj
YTQzNGYyMjg5YjBjMy4uY2Y2YzkxMWQ0YjU3NWIyZjc5NjRjNzFlZjU2MDczM2U5NzVkYmY2ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVk
LXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKQEAgLTM0LDgg
KzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAgICAgICAgICAgbG9n
KCIoMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZSgwLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDUsIDEpOiAiICsg
dGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDUsIDEpLnN0
cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDUsIDIpOiAiICsgdGV4dElucHV0Q29udHJvbGxl
ci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDUsIDIpLnN0cmluZygpKTsKLSAgICAgICAg
ICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJz
dHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKLSAgICAgICAg
ICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1
YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCisgICAg
ICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVk
U3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKKyAgICAgICAg
ICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1
YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbG9nKCJcblRlc3RpbmcgcHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIu
X18zLl9fXzRfNSkiKTsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIjEg
Jm5ic3A7MiAmbmJzcDsmbmJzcDszICZuYnNwOyZuYnNwOyZuYnNwOzQmbmJzcDs1IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394767</attachid>
            <date>2020-03-27 16:05:30 -0700</date>
            <delta_ts>2020-03-27 19:27:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200327160529.patch</filename>
            <type>text/plain</type>
            <size>162938</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI4NTg3MzhhMzU4N2Fm
OWQ5MTZhN2VjYzU3YWM1YzRjNDE2OTEyZC4uNDcwZjE2OWYwNTFmMGMxZTBkN2Y3MDIzYTAxNDk5
MmEzMjAyYTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
dG8ga2VlcCBKU1ZhbHVlcyBhbGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWMyYWUzZjNlMmRhMWIzNWY2ODc5
YjExZTcxYmMzMmNjNWE1NTNhLi42OGFkZjY1MDFjNjZhZjJjNjM5NzIwMjEwM2ExZThjZTI4NTNm
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCBzaG91bGQgdmFsaWRhdGUgaXRzIHBhcmFt
ZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiYmQ5ZGJjYWRkNmExYWNlNGFk
ODNlNDM0ZGY4ZGY1NGM3OTAxNzdmLi5jNGQ2MzY4YTY3OWFiODVhZjkwOWI5Y2U3MzIxM2Y4ZDE3
ZmE0NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIw
MjAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDIwLTAzLTI3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIERyYWdEYXRh
Ojpjb250YWluc1VSTCgpIHNob3VsZCBhdm9pZCByZWFkaW5nIFVSTCBzdHJpbmdzIGZyb20gdGhl
IHBhc3RlYm9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDlhZDUzNzg1MzI0YmIzNGMwZGRiOWRj
YzExNzBjOGNkZDRhMzY2YTguLjc5N2QzYzEzOTQ4MzNhZDg4Yjc1MzRkZDI0ZTNkZmU2NzYxOWZl
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDg3LDYgKzQ4Nyw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFJlZ2lzdHJ5LmgKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzLmgKIAorICAgIGVkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaAogICAgIGVkaXRpbmcvQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgK
ICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTNjNGI0ZGYxOTQyOTM5
NGFmMzgzZmYyNTBmNjAyNTk5Njc5NDJiLi5jNTkwZTE1ZWIwZmYwZDcxYzM5NjgzNDZjN2U1N2I2
NGQ3MDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNzM0LDYgKzI3MzQsNyBAQAogCQk5M0YxOUIxNzA4MjQ1RTU5MDAx
RTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vjb3Jl
LmR5bGliICovOyB9OwogCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
MUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKIAkJOTNG
MUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QkYxMkQ1MzM1NjAwODMy
QkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovOyB9OworCQk5M0YyQ0M5MzI0MjdGQjlDMDA1
ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVD
QjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCTkzRjkyNTQzMEY3RUY1QjgwMDdF
MzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9u
R3JvdXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0
IC8qIEpTQ29tbWVudC5oICovOyB9OwpAQCAtMTA5MzQsNiArMTA5MzUsNyBAQAogCQk5M0YxRDVC
OTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTExvc2VDb250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1MzM1NjAwODMyQkVD
IC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYkdMTG9zZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
MkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbnRleHRFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVCMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNzU5LDYgKzIxNzYxLDcgQEAKIAkJCQk5MzMwOUQ4QzA5OUU2NDkxMDA1
NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAogCQkJCUY0RDk4MTdFMjE5NUZC
RjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwICovLAogCQkJCUY0RDk4MTdE
MjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAqLywKKwkJCQk5M0Yy
Q0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLywKIAkJCQk3QzNBOTFF
NTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCiAJCQkJOTMz
MDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCAqLywKIAkJ
CQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLywK
QEAgLTI5NjQyLDYgKzI5NjQ1LDcgQEAKIAkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyog
Q2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTAwOTlERjAy
NzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NTkyRjc4
MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAz
RUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4
MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZDgzMTA3NWNk
MzExZDk1MmMyYjE4NjU5YmZlMzQ4NTRlYTE3Yzc1Yi4uZDU2MjkwOWZmZDIxZDU4NDZhMzc0OGE0
NzRkNmUzOWNlYThhNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KQEAgLTIzMzgsMTEgKzIzMzgsMTAgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZToo
UmFuZ2UgKilsaXZlUmFuZ2UKIAogLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6
KE5TUmFuZ2UpbnNyYW5nZQogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkK
KyAgICBhdXRvIHJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOworICAgIGlmICgh
cmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+
IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCkK
LSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgCisKICAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBv
bmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAvLyBjb25jZW50cmF0ZSBvbiBh
IGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBk
byB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3Ig
dGhvc2UgaXMgbm90CkBAIC0yMzUyLDcgKzIzNTEsOSBAQCAtIChSZWZQdHI8UmFuZ2U+KV9jb252
ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgRWxlbWVudCogc2VsZWN0aW9u
Um9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50KCk7CiAgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2Nh
dGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIGlmICghc2NvcGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdl
KG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCAqcmFuZ2UpKTsKIH0KIAog
Ly8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2Vu
dGluZyBhIFZpc2libGVQb3NpdGlvbiBhbmQgY29udmVydCBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA4NTkyZjA3MDc4M2RmNWFkMTgzODI3OTRlNWFlOWFm
OThjMGVmMmIzLi5hM2Y1M2M4ZTFlYTM2MzRjNGE4ZTViMDkyYWE4ZjM3MjAwYmZiZjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTA5OCw5ICsxMDk4LDkg
QEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlc3VsdHMu
c2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07
Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVz
dWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0
eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQucmFuZ2Uu
bG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkpOwogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVT
LCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxl
bmd0aCkpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5T
TWFrZVJhbmdlKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQu
cmFuZ2UubGVuZ3RoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0z
NjgwLDE5ICszNjgwLDIxIEBAIC0gKGlkKV90ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0
ZXh0SW5kZXgKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRv
Y3VtZW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gdGV4
dFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIHRleHRJbmRleCwgMCk7Ci0gICAgaWYgKCF0ZXh0UmFuZ2Ug
fHwgIXRleHRSYW5nZS0+Ym91bmRhcnlQb2ludHNWYWxpZCgpKQorCisgICAgYXV0byogZG9jdW1l
bnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBD
aGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0
ZXJPZmZzZXRGb3JSYW5nZSh0ZXh0UmFuZ2UsIHRydWUpOwotICAgICAgICByZXR1cm4gW3NlbGYg
dGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwotICAgIH0KLSAg
ICByZXR1cm4gbmlsOworCisgICAgYXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
YXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBhdXRvIGJvdW5kYXJ5ID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgdGV4dEluZGV4KTsKKyAgICBh
dXRvIGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9y
UmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHsgYm91bmRhcnksIGJvdW5kYXJ5IH0pLCB0cnVlKTsKKyAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZz
ZXRdOwogfQogCiAvLyBUaGUgUlRGIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0
ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggZjRlNTE3NTAxMWE3
YWY4MDQyOWQ2MmQ2MTE5YzA4MzkwM2NmYTNkOC4uZTEzZTMzYzhmYTZkODJiNmY4YjZhMjM4NGQ5
NWE4YmY0ODE4MGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OmRldGFjaCgpCiAgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgPSB7IH07
CiB9CiAKLVZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNv
bGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByYW5nZSkKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+
PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gdGV4dFJhbmdlOwog
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcihyYW5nZSk7ICF0ZXh0SXRlcmF0b3Iu
YXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoKSkKQEAgLTY4LDEzICs2OCwxMyBAQCBWZWN0
b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJh
bmdlcyhjb25zdCBSYW5nZSYgcgogICAgIHJldHVybiB0ZXh0UmFuZ2U7CiB9CiAKLXZvaWQgRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQordm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24pCiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJh
bmdlKSkKICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9j
dW1lbnRNYXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVu
ZE9mZnNldCgpLCBkZXNjcmlwdGlvbikpOwogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUg
dHlwZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlKQogewogICAg
IGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAg
IGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKHR5
cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSkpOwpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0
YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiByCiAgICAgfQogfQogCi12
b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKFJh
bmdlJiByYW5nZSwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCit2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCiB7CiAgICAgZm9yIChh
dXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAgYWRkTWFy
a2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIoRG9jdW1lbnRN
YXJrZXI6OkRpY3RhdGlvblJlc3VsdCwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGll
Y2UtPmVuZE9mZnNldCgpLCBTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSwgbWV0YWRhdGEpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2
OWUyNTRkNWU3MmYxNTc2YzMxZGMxN2NlZjhiNmZjNzg4OWE3ZWM0Li4zNjJkNzQ3NDM0OWU0YmNm
OGIzNjM5Y2RmNDEyY2E3OWEzYzhiMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIE5vZGU7CiBjbGFz
cyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI7CiAKK3N0cnVjdCBTaW1wbGVS
YW5nZTsKKwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTQ4LDE1ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgfkRvY3VtZW50
TWFya2VyQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBkZXRhY2goKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1w
bGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAg
IHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6OkRh
dGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3Qg
UmFuZ2UmLCBib29sIGFjdGl2ZU1hdGNoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlv
bnMsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaW50ZXJwcmV0YXRpb25zKTsKLSAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihS
YW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKKyAgICB2b2lkIGFkZERpY3Rh
dGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4m
IG1ldGFkYXRhKTsKICNlbmRpZgogICAgIHZvaWQgYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIoUmFu
Z2UmKTsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IGFkZE1hcmtlcihOb2RlJiwgY29uc3QgRG9jdW1lbnRNYXJrZXImKTsKLSAgICBWZWN0b3I8UmVm
UHRyPFJhbmdlPj4gY29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmKTsKKyAgICBWZWN0b3I8
UmVmUHRyPFJhbmdlPj4gY29sbGVjdFRleHRSYW5nZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXI+IE1hcmtlckxpc3Q7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxp
c3Q+PiBNYXJrZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDk5M2U5NTFmMWE1MGE0ZGJh
OWY5M2MxZTgxZmU1ZTJiMTdhZTdmOTguLmMyOGU3MDZiMTA1NmY2ZWE1ZTkwNDlkMDBhNDYyY2Qz
YTVhMTI3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogLy8gRklYTUU6
IENvbnNpZGVyIHJlbmFtaW5nIHRoaXMgdG8gIm1ha2UiIGluc3RlYWQgb2YgImNyZWF0ZSIgc2lu
Y2Ugd2Ugbm9ybWFsbHkgdXNlICJjcmVhdGUiIGZvciBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBo
ZWFwIG9iamVjdHMuCiBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSos
IHVuc2lnbmVkIG9mZnNldCk7Ci1Qb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Y29uc3QgQm91bmRhcnlQb2ludCYpOworV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRp
b24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggYjRmZTJiODVkM2FmODVj
YjgzMDc4ZDdhOWU1MTIxN2YxNDA1MDM2YS4uYTQzMzhhYjIwZmM1MmYyZmYyN2RjYjViNzAyMDhh
N2Y3YjMwNjI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01Myw0ICs1Mywy
MyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJh
bmdlJiBiKQogICAgIHJldHVybiBhLnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7
CiB9CiAKKy8vIEZJWE1FOiBOb2RlOjppc0NoYXJhY3RlckRhdGEgc2hvdWxkIHVzZSBhbiBhbGdv
cml0aG0gbGlrZSB0aGlzLCBzaW5jZSBJJ20gYXNzdW1pbmcgaXQncyBmYXN0ZXIgdGhhbiB0aGUg
aXNDaGFyYWN0ZXJEYXRhTm9kZSB2aXJ0dWFsIGNhbGwgaW4gbW9zdCBjYXNlcy4KK3N0YXRpYyBi
b29sIGZhc3RJc0NoYXJhY3RlckRhdGEoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4g
IW5vZGUuaXNDb250YWluZXJOb2RlKCkgJiYgKG5vZGUuaXNUZXh0Tm9kZSgpIHx8IG5vZGUuaXND
aGFyYWN0ZXJEYXRhTm9kZSgpKTsKK30KKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIE5vZGU6
Omxlbmd0aCBzaW5jZSB0aGUgRE9NIHNwZWNpZmljYXRpb24gY2FsbHMgdGhpcyBhIG5vZGUncyBs
ZW5ndGguCitzdGF0aWMgdW5zaWduZWQgbGVuZ3RoKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAg
aWYgKGZhc3RJc0NoYXJhY3RlckRhdGEobm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxD
aGFyYWN0ZXJEYXRhPihub2RlKS5sZW5ndGgoKTsKKyAgICByZXR1cm4gbm9kZS5jb3VudENoaWxk
Tm9kZXMoKTsKK30KKworU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIHsgeyBub2RlLCAwIH0sIHsgbm9kZSwgbGVuZ3Ro
KG5vZGUpIH0gfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBs
ZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBhY2Q5ODU1
YTg5MTljMzc2ZTE1N2QxY2VkOWM1ZGVlZDdhMTk1NzI0Li5iZDBlMWM0ZWNkMGEwMTg0MzdmMTk5
MDQ2ZTU1N2RjYTJjYzI3MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNTEsNiAr
NTEsOSBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2UgewogICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxS
YW5nZT4mKTsKIH07CiAKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYp
OworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKE5vZGUmKTsKKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKIAogaW5saW5lIFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBS
ZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGViZDRjYWIzMjZmMmMwOTc1NTQwY2IxZDZm
OWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2ZGQwYjNiNzhkZGJkMzIyYzMxMzM0ZTY4ODA2Zjk4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1OTksMTggQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAog
ICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZS5jbG9uZVJhbmdlKCks
IGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKIAogICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFu
Z2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBt
b2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVn
emlsbGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgodHJlZVNj
b3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBoT2Zmc2V0SW5UcmVlU2NvcGUsIGNvcnJlY3Rpb25PZmZz
ZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKLSAgICBpZiAoIXVwZGF0ZWRQ
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQorICAgIGF1dG8gdXBkYXRlZFBhcmFn
cmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24gPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24o
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHRyZWVTY29wZVJvb3QpLCBwYXJhZ3JhcGhP
ZmZzZXRJblRyZWVTY29wZSk7CisgICAgYXV0byB1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmlu
Z0NvcnJlY3Rpb24gPSBtYWtlQm91bmRhcnlQb2ludChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpOworICAgIGlmICghdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdD
b3JyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpOwotICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBj
b3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBD
aGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSBhbHRlcm5h
dGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiwgKnVw
ZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVjdGlvbiB9LCB7IGNvcnJlY3Rpb25PZmZz
ZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1Y2NlZWRlZC4KLSAgICBpZiAocGxh
aW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpICE9IGFsdGVybmF0aXZlKQorICAgIGlmIChw
bGFpblRleHQocmVwbGFjZW1lbnRSYW5nZSkgIT0gYWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdlLT5vd25lckRvY3VtZW50
KCkubWFya2VycygpOworICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdlLnN0YXJ0
LmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGZvciAoYXV0byBtYXJrZXJUeXBlIDogbWFya2Vy
VHlwZXNUb0FkZCkKICAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZSwg
bWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KGFs
dGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiYjkyYzAyMTIxYTNiN2IzOTJmNTI5ZjhhYjc2
ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhhZDI1MTI5NmI0MzkyYjZhOWJjNjdmNWViMGQ4YTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMjgz
LDEyICsyODMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRp
dGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJh
Z3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAgewotICAgICAg
ICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKHNjb3BlLmdldCgpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgYXV0byBlbmRS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUuZ2V0
KCksIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFu
Z2UpCi0gICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgIH0KKyAgICBhdXRvIHN0YXJ0UG9z
aXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0
aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBzdGFydEluZGV4LCBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOwor
ICAgIGF1dG8gZW5kUG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2
ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUp
LCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMpKTsKKyAgICB1cGRhdGVTdGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
bik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JD
cmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9DaGFyYWN0ZXJSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwMWFlZGJmZjM3MmFiZjliN2ZkMmEy
NmVmMzc3Y2ViY2I1ZDJmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NoYXJhY3RlclJhbmdlLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKKyNpZiBVU0UoRk9VTkRBVElPTikKK3R5cGVkZWYgc3RydWN0IF9OU1Jh
bmdlIE5TUmFuZ2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBDaGFy
YWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OworCitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgeworICAg
IENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9OworICAgIENoYXJhY3RlckNvdW50IGxlbmd0
aCB7IDAgfTsKKworI2lmIFVTRShDRikKKyAgICBvcGVyYXRvciBDRlJhbmdlKCkgY29uc3Q7Cisj
ZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIG9wZXJhdG9yIE5TUmFuZ2UoKSBjb25z
dDsKKyNlbmRpZgorfTsKKworI2lmIFVTRShDRikKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBt
YWtlQ2hhcmFjdGVyUmFuZ2UoQ0ZSYW5nZSk7CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9O
KQorT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlKTsK
KyNlbmRpZgorCisvLyBpbmxpbmVzCisKKyNpZiBVU0UoQ0YpCisKK2lubGluZSBDaGFyYWN0ZXJS
YW5nZTo6b3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENGUmFuZ2VNYWtl
KGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+
IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5nZS5s
b2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCB8fCByYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NF
UlQocmFuZ2UubGVuZ3RoID49IDApOworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA8IDAgfHwgcmFu
Z2UubGVuZ3RoIDwgMCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
Q2hhcmFjdGVyUmFuZ2UgeyBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubG9jYXRp
b24pLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4ocmFuZ2UubGVuZ3RoKSB9OworfQorCisj
ZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorCitpbmxp
bmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKworaW5saW5lIE9wdGlvbmFsPENo
YXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gQ2hhcmFjdGVyUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiwgcmFuZ2Uu
bGVuZ3RoIH07Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDE1NGJi
ODdjMzMxZDQxZDkxNjE2MmU3ZDkxMTBkNDc4ODI3ZDFjNzAuLjQ2YzI1MTcyZWIyYmVkYWYyNWU3
OTMyM2Y1YmYzODIzOWNhMTBhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0
T2ZQYXJhZ3JhcAogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGRlc3RpbmF0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaW50IHN0YXJ0SW5kZXggPSAtMTsKLSAgICBp
bnQgZW5kSW5kZXggPSAtMTsKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gc3RhcnRJbmRl
eDsKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gZW5kSW5kZXg7CiAgICAgYm9vbCBvcmln
aW5hbElzRGlyZWN0aW9uYWwgPSBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCk7CiAg
ICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmICFlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkg
ewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9u
KCkudmlzaWJsZVN0YXJ0KCk7CkBAIC0xNTI4LDE2ICsxNTI4LDE1IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRP
ZlBhcmFncmFwCiAgICAgaWYgKHN0eWxlSW5FbXB0eVBhcmFncmFwaCAmJiBzZWxlY3Rpb25Jc0Vt
cHR5UGFyYWdyYXBoKQogICAgICAgICBhcHBseVN0eWxlKHN0eWxlSW5FbXB0eVBhcmFncmFwaC5n
ZXQoKSk7CiAKLSAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAhPSAtMSkg
eworICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFydEluZGV4ICYmIGVuZEluZGV4KSB7
CiAgICAgICAgIC8vIEZyYWdtZW50IGNyZWF0aW9uICh1c2luZyBjcmVhdGVNYXJrdXApIGluY29y
cmVjdGx5IHVzZXMgcmVndWxhcgogICAgICAgICAvLyBzcGFjZXMgaW5zdGVhZCBvZiBuYnNwcyBm
b3Igc29tZSBzcGFjZXMgdGhhdCB3ZXJlIHJlbmRlcmVkICgxMTQ3NSksIHdoaWNoCiAgICAgICAg
IC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRp
b24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2Yg
dGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJh
bmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRp
dGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7
Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJ
bmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdGFydCAmJiBlbmQpCi0gICAgICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydC0+c3RhcnRQb3NpdGlvbigp
LCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFs
KSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRp
dGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAgICBhdXRv
IGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5h
dGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFy
dCwgZW5kLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwgfSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCA2MDQ3Yjk0NjQzZTNkNWVhNTczYWZi
ZGNmNjc2YjIwMTFhYzg3NWY3Li5kZmJhNzIxZjVlYWQzYTIwM2VkNmY2NGI5YmMwNWVhZDIzOWVj
MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTExMTQsMTIgKzExMTQsMTAg
QEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kKIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7Ci0gICAgYXV0
byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUs
IGluZGV4LCAwLCB0cnVlKTsKLSAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRleC4gQ2Vy
dGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2UgCi0gICAg
Ly8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucy4KLSAgICBpZiAoIXJhbmdlKQorICAgIGlmICghc2NvcGUpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSB9Owor
ICAgIENoYXJhY3RlckNvdW50IGluZGV4QXNDaGFyYWN0ZXJDb3VudCA9IGluZGV4OworICAgIHJl
dHVybiB7IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIGluZGV4QXNDaGFyYWN0
ZXJDb3VudCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpKSB9OwogfQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhV
c2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGludCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA0M2FjMGZjMDEwOTUyYmFjNGYxMDZlMmJiOWQ1MGFlNzRlZjdm
YTI1Li5iNjk0ODlmNzY1NzVkNWZhMjgzYmVjYWQwNGM5MTJlZWQ5MGRjOTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjIzLDE1ICsyMjIzLDE1IEBAIHZvaWQgRWRpdG9yOjph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICBO
b2RlJiBzZWFyY2hFbmROb2RlQWZ0ZXJXcmFwID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+ZW5kQ29u
dGFpbmVyKCk7CiAgICAgaW50IHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmVuZE9mZnNldCgpOwogICAgIAotICAgIGludCBtaXNzcGVsbGluZ09mZnNldCA9
IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOwogICAgIEdyYW1t
YXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IDA7
CisgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IDA7CiAgICAgUmVmUHRy
PFJhbmdlPiBncmFtbWFyU2VhcmNoUmFuZ2U7CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7
CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogCiAgICAgYm9vbCBpc1NwZWxsaW5nID0gdHJ1
ZTsKLSAgICBpbnQgZm91bmRPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IGZvdW5kT2Zm
c2V0ID0gMDsKICAgICBTdHJpbmcgZm91bmRJdGVtOwogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RN
aXNzcGVsbGluZ1JhbmdlOwogICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsK
QEAgLTIzMDcsMTAgKzIzMDcsMTAgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBwYW5lbCwgYW5kIHN0
b3JlIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIGdyZWVuIHNxdWlnZ2xlIGxhdGVyLgogICAgICAg
ICAKICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkgPiAwKTsKLSAgICAg
ICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gIT0gLTEgJiYgZ3JhbW1hckRldGFpbC5s
ZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRSA0ODU5MTkwOiBUaGlzIGdldHMgY29uZnVz
ZWQgd2l0aCBkb3VibGVkIHB1bmN0dWF0aW9uIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGgKLSAg
ICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpncmFt
bWFyU2VhcmNoUmFuZ2UsIGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLmxvY2F0
aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpncmFtbWFyU2VhcmNoUmFuZ2UsIHsgZ3JhbW1hclBo
cmFzZU9mZnNldCArIGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwu
cmFuZ2UubGVuZ3RoIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKGJhZEdyYW1tYXJSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAg
ICAgCkBAIC0yMzIyLDcgKzIzMjIsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIFdlIGZvdW5kIGEg
bWlzc3BlbGxpbmcsIGJ1dCBub3QgYW55IGVhcmxpZXIgYmFkIGdyYW1tYXIuIFNlbGVjdCB0aGUg
bWlzc3BlbGxpbmcsIHVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwsIGFuZCBzdG9yZQogICAgICAg
ICAvLyBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSByZWQgc3F1aWdnbGUgbGF0ZXIuCiAgICAgICAg
IAotICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdl
KHNwZWxsaW5nU2VhcmNoUmFuZ2UsIG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVsbGVkV29yZC5s
ZW5ndGgoKSk7CisgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCB7IG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVs
bGVkV29yZC5sZW5ndGgoKSB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKSk7CiAg
ICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApA
QCAtMjc3Myw3ICsyNzczLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VSYW5nZUZvclNwZWxsQ2hl
Y2tpbmcoUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHIKICAgICBTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2VUb1JlcGxhY2UsIHJlcGxhY2VtZW50KS0+
YXBwbHkoKTsKIH0KIAotc3RhdGljIHZvaWQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5n
VGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmFncmFwaCYgcGFyYWdyYXBoLCBS
YW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGludCByZXN1
bHRMb2NhdGlvbiwgaW50IHJlc3VsdExlbmd0aCkKK3N0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNo
ZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50LCBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiwgQ2hhcmFjdGVyQ291bnQgcmVz
dWx0TGVuZ3RoKQogewogICAgIGF1dG8mIHNjb3BlID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4o
cGFyYWdyYXBoLnBhcmFncmFwaFJhbmdlKCkuc3RhcnRDb250YWluZXIoKS5yb290Tm9kZSgpKTsK
IApAQCAtMjc4NiwxMCArMjc4Niw5IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5n
UHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhCiAgICAgLy8g
VGV4dENoZWNraW5nUGFyYWdyYXBoIG1heSBiZSBvcnBoYW5lZCBhZnRlciBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kIG11dGF0ZWQgRE9NLgogICAgIC8vIFNlZSA8cmRhcjovLzEwMzA1MzE1Piwg
aHR0cDovL3dlYmtpdC5vcmcvYi84OTUyNi4KIAotICAgIFJlZlB0cjxSYW5nZT4gbmV3UGFyYWdy
YXBoUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZzY29w
ZSwgcGFyYWdyYXBoTG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2VtZW50Lmxlbmd0
aCgpIC0gcmVzdWx0TGVuZ3RoKTsKLQotICAgIGF1dG8gc3BlbGxDaGVja2luZ1JhbmdlID0gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqbmV3UGFyYWdyYXBoUmFuZ2UsIHJlc3VsdExvY2F0aW9uLCBy
ZXBsYWNlbWVudC5sZW5ndGgoKSk7Ci0gICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdy
YXBoKHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVmKCksIHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5
UmVmKCksIG5ld1BhcmFncmFwaFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIG5ld1BhcmFncmFwaFJh
bmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhzY29wZSksIHsgcGFyYWdyYXBoTG9jYXRpb24sIHBhcmFncmFwaExlbmd0aCArIHJlcGxhY2Vt
ZW50Lmxlbmd0aCgpIC0gcmVzdWx0TGVuZ3RoIH0pOworICAgIGF1dG8gc3BlbGxDaGVja2luZ1Jh
bmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG5ld1BhcmFncmFwaFJhbmdlLCB7IHJlc3VsdExv
Y2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKKyAgICBwYXJhZ3JhcGggPSBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGgoY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0
ZUxpdmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2UobmV3UGFyYWdy
YXBoUmFuZ2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNw
ZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykKQEAgLTI4MTEsNyArMjgxMCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRl
CiAjZW5kaWYKIAogICAgIC8vIEV4cGFuZCB0aGUgcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBw
YXJhZ3JhcGhzLCBzaW5jZSB0ZXh0IGNoZWNraW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0Lgot
ICAgIGludCBzZWxlY3Rpb25PZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IHNlbGVjdGlv
bk9mZnNldCA9IDA7CiAgICAgYm9vbCB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IGZhbHNl
OwogICAgIGJvb2wgc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOwogICAgIGJvb2wgcmVzdG9yZVNl
bGVjdGlvbkFmdGVyQ2hhbmdlID0gZmFsc2U7CkBAIC0yODIzLDkgKzI4MjIsOSBAQCB2b2lkIEVk
aXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgICAgICBzZWxlY3Rp
b25PZmZzZXQgPSBwYXJhZ3JhcGgub2Zmc2V0VG8oY2FyZXRQb3NpdGlvbikucmVsZWFzZVJldHVy
blZhbHVlKCk7CiAgICAgICAgICAgICByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVl
OwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNl
dCA+IHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0
aW9uT2Zmc2V0IC0gMSkgPT0gbmV3bGluZUNoYXJhY3RlcikpCisgICAgICAgICAgICBpZiAoc2Vs
ZWN0aW9uT2Zmc2V0ID4gMCAmJiAoc2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHQoKS5s
ZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdID09IG5ld2xp
bmVDaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgIGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFw
aEJvdW5kYXJpZXMgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAg
JiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgJiYgaXNBbWJpZ3Vv
dXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgudGV4dENoYXJBdChzZWxlY3Rpb25PZmZzZXQg
LSAxKSkpCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25P
ZmZzZXQgPD0gcGFyYWdyYXBoLnRleHQoKS5sZW5ndGgoKSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5
Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0IC0gMV0pKQogICAgICAg
ICAgICAgICAgIHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI4MzMsMTQgKzI4MzIsMTQgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNl
Rm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAg
ICBpbnQgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewotICAgICAgICBjb25zdCBpbnQgc3BlbGxp
bmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0g
cmVzdWx0c1tpXS50eXBlOwotICAgICAgICBjb25zdCBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1
bHRzW2ldLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3Qg
aW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQg
cmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKLSAgICAg
ICAgY29uc3QgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGgu
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2Vt
ZW50TGVuZ3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJD
b3VudCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5
cGUgPSByZXN1bHRzW2ldLnR5cGU7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0
aW9uID0gcmVzdWx0c1tpXS5yYW5nZS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7
CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdHNbaV0ucmFuZ2Uu
bGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3Vs
dExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0
aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJl
c3VsdHNbaV0ucmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1i
aWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25P
ZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOworICAgICAgICBib29sIHJlc3VsdEVuZHNB
dEFtYmlndW91c0JvdW5kYXJ5ID0gdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0
aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRFbmRMb2NhdGlvbjsKIAogICAgICAgICAvLyBPbmx5IG1h
cmsgbWlzc3BlbGxpbmcgaWY6CiAgICAgICAgIC8vIDEuIEN1cnJlbnQgdGV4dCBjaGVja2luZyBp
c24ndCBkb25lIGZvciBhdXRvY29ycmVjdGlvbiwgaW4gd2hpY2ggY2FzZSBzaG91bGRNYXJrU3Bl
bGxpbmcgaXMgZmFsc2UuCkBAIC0yODUwLDE2ICsyODQ5LDE2IEBAIHZvaWQgRWRpdG9yOjptYXJr
QW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVj
dG9yPFRlCiAgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWwgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZwog
ICAgICAgICAgICAgJiYgcmVzdWx0TG9jYXRpb24gPj0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQo
KSAmJiByZXN1bHRFbmRMb2NhdGlvbiA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1
bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExl
bmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICBhdXRvIG1pc3Nw
ZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExl
bmd0aCk7CisgICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pOwogICAgICAgICAgICAgaWYg
KCFtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1p
c3NwZWxsaW5nUmFuZ2UpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
bWlzc3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCByZXBs
YWNlbWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0
VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRp
b24sIHJlc3VsdExlbmd0aCB9KSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+
IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFp
bCA6IHJlc3VsdHNbaV0uZGV0YWlscykgewotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwu
bGVuZ3RoID4gMCAmJiBkZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLmxv
Y2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGJhZEdy
YW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5s
b2NhdGlvbiwgZGV0YWlsLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5y
YW5nZS5sZW5ndGggPiAwICYmIGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1bHRMb2NhdGlv
biArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZSh7IHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2Uu
bGVuZ3RoIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwg
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC51c2VyRGVzY3JpcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI4NzcsNyArMjg3Niw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAvLyAyLiBUaGUgcmVzdWx0IGRvZXNuJ3QgZW5k
IGF0IGFuIGFtYmlndW91cyBib3VuZGFyeS4KICAgICAgICAgICAgIC8vICAgIChGSVhNRTogdGhp
cyBpcyByZXF1aXJlZCB1bnRpbCA2ODUzMDI3IGlzIGZpeGVkIGFuZCB0ZXh0IGNoZWNraW5nIGNh
biBkbyB0aGlzIGZvciB1cwogICAgICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgPiAwICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeTsKLSAg
ICAgICAgICAgIGF1dG8gcmFuZ2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0
TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBsYWNl
ID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsK
IAogICAgICAgICAgICAgLy8gQWRkaW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9ubHkgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhleSBhcmUgdHlwZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rICYmIHNlbGVjdGlvbk9mZnNldCAhPSByZXN1bHRFbmRM
b2NhdGlvbiArIDEpCkBAIC0yOTIyLDcgKzI5MjEsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFNraXAgYWxsIG90aGVy
IHJlc3VsdHMgZm9yIHRoZSByZXBsYWNlZCB0ZXh0LgotICAgICAgICAgICAgICAgIHdoaWxlIChp
ICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLmxvY2F0aW9uICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKKyAgICAgICAgICAgICAgICB3aGls
ZSAoaSArIDEgPCByZXN1bHRzLnNpemUoKSAmJiByZXN1bHRzW2kgKyAxXS5yYW5nZS5sb2NhdGlv
biArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0gcmVzdWx0TG9jYXRpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGkrKzsKIAogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVl
OwpAQCAtMjkzMSw3ICsyOTMwLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNv
bnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ICs9IHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gcmVz
dWx0TGVuZ3RoOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZTo6Q29ycmVjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2Vt
ZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0g
cGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgp
IH0pOwogICAgICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6QWNjZXB0
ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFJhbmdlLnB0cigpKTsKIAogICAgICAgICAg
ICAgICAgICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5
IGJlIHVuZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgpAQCAtMjk0NSw4ICsyOTQ0LDgg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBo
IGV4dGVuZGVkUGFyYWdyYXBoKFdURk1vdmUocGFyYWdyYXBoKSk7CiAgICAgICAgIC8vIFJlc3Rv
cmUgdGhlIGNhcmV0IHBvc2l0aW9uIGlmIHdlIGhhdmUgbWFkZSBhbnkgcmVwbGFjZW1lbnRzCiAg
ICAgICAgIGV4dGVuZGVkUGFyYWdyYXBoLmV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7Ci0gICAgICAg
IGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0ID49IDAg
JiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJy
YW5nZSgwLCBzZWxlY3Rpb25PZmZzZXQpOworICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFm
dGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxl
bmd0aCgpKSB7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJh
Z3JhcGguc3VicmFuZ2UoeyAwLCBzZWxlY3Rpb25PZmZzZXQgfSk7CiAgICAgICAgICAgICBtX2Zy
YW1lLnNlbGVjdGlvbigpLm1vdmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSwgRE9X
TlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91
bmRhcmllcykKICAgICAgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KTsKQEAgLTI5NzMsNyArMjk3Miw4IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNr
VG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogICAgIG1fYWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRv
Y29ycmVjdGlvblJlc3BvbnNlOjpSZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSk7CiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaCgqc2VsZWN0aW9uKTsK
ICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZWRTdHJpbmcsIFNlbGVjdFJlcGxh
Y2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0KTsKLSAgICBh
dXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdT
dGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgQ2hhcmFjdGVyQ291bnQgcmVw
bGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gcmVwbGFjZWRTdHJpbmcubGVuZ3Ro
KCk7CisgICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyBwYXJhZ3Jh
cGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQg
fSk7CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UsIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwg
U3RyaW5nKCkpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya1JldmVyc2Vk
KGNoYW5nZWRSYW5nZSk7CiAjZWxzZQpAQCAtMzc3NywxMiArMzc3NywxMiBAQCB2b2lkIEVkaXRv
cjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVycyhSYW5nZSYgcmFuZ2UsIGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZwogCiAgICAgICAgIEFTU0VSVChzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2
ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsKIAotICAgICAgICB1bnNpZ25lZCBzdWJyYW5nZU9mZnNl
dCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKLSAgICAgICAgdW5z
aWduZWQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFy
dFBvc2l0aW9uICsgMTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3VicmFuZ2VPZmZzZXQgPSBz
Y2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247CisgICAgICAgIENoYXJhY3Rl
ckNvdW50IHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3Rh
cnRQb3NpdGlvbiArIDE7CiAKLSAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UocmFuZ2UsIHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCk7CisgICAgICAg
IGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgc3VicmFuZ2VP
ZmZzZXQsIHN1YnJhbmdlTGVuZ3RoIH0pOwogCi0gICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQo
c3VicmFuZ2UucHRyKCkpOworICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVS
YW5nZShzdWJyYW5nZSkpOwogICAgICAgICByYW5nZS5vd25lckRvY3VtZW50KCkubWFya2Vycygp
LmFkZE1hcmtlcihzdWJyYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CiAK
ICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJlbGF0aXZlRW5kUG9zaXRpb24gKyAxOwpAQCAt
Mzk5MiwxNCArMzk5MiwxNCBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9y
Q2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0CiAKIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZv
clRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29u
c3QKIHsKLSAgICBpZiAoIXJlc3VsdC5sZW5ndGgpCisgICAgaWYgKCFyZXN1bHQucmFuZ2UubGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4
dFJhbmdlID0gY29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpOwogICAgIGlmICghY29u
dGV4dFJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxl
bmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
KmNvbnRleHRSYW5nZSwgcmVzdWx0LnJhbmdlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpzY2hlZHVs
ZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAppbmRleCBhZDgyNzg4OWNhYjU4NWQzMDE1OTZhNjNhYmRlYzZmZjRiNzVlMzc0
Li5mODMyNzJjMjhmMGEwZDdkNjdjMGU3MTIyNGE3N2FjOTQxZWFmNTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02Myw4ICs2
Myw4IEBAIHN0YXRpYyB2b2lkIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhUZXh0Q2hlY2tlckNsaWVu
dCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IGJhZEdyYW1tYXI7CiAgICAgICAgIGJhZEdyYW1tYXIudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXI7Ci0gICAgICAgIGJhZEdyYW1tYXIubG9jYXRpb24gPSBjaGVja0xvY2F0aW9u
ICsgYmFkR3JhbW1hckxvY2F0aW9uOwotICAgICAgICBiYWRHcmFtbWFyLmxlbmd0aCA9IGJhZEdy
YW1tYXJMZW5ndGg7CisgICAgICAgIGJhZEdyYW1tYXIucmFuZ2UubG9jYXRpb24gPSBjaGVja0xv
Y2F0aW9uICsgYmFkR3JhbW1hckxvY2F0aW9uOworICAgICAgICBiYWRHcmFtbWFyLnJhbmdlLmxl
bmd0aCA9IGJhZEdyYW1tYXJMZW5ndGg7CiAgICAgICAgIGJhZEdyYW1tYXIuZGV0YWlscyA9IFdU
Rk1vdmUoYmFkR3JhbW1hckRldGFpbHMpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChiYWRHcmFt
bWFyKTsKIApAQCAtOTcsOSArOTcsOSBAQCBzdGF0aWMgdm9pZCBmaW5kTWlzc3BlbGxpbmdzKFRl
eHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPAogCiAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgbWlzc3BlbGxpbmc7CiAgICAgICAgICAgICBtaXNz
cGVsbGluZy50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICBt
aXNzcGVsbGluZy5sb2NhdGlvbiA9IHdvcmRTdGFydCArIG1pc3NwZWxsaW5nTG9jYXRpb247Ci0g
ICAgICAgICAgICBtaXNzcGVsbGluZy5sZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKLSAgICAg
ICAgICAgIG1pc3NwZWxsaW5nLnJlcGxhY2VtZW50ID0gY2xpZW50LmdldEF1dG9Db3JyZWN0U3Vn
Z2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nLmxvY2F0
aW9uLCBtaXNzcGVsbGluZy5sZW5ndGgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAg
ICAgICAgICBtaXNzcGVsbGluZy5yYW5nZS5sb2NhdGlvbiA9IHdvcmRTdGFydCArIG1pc3NwZWxs
aW5nTG9jYXRpb247CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yYW5nZS5sZW5ndGggPSBtaXNz
cGVsbGluZ0xlbmd0aDsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJlcGxhY2VtZW50ID0gY2xp
ZW50LmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKHRleHQuc3Vic3Ry
aW5nKG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uLCBtaXNzcGVsbGluZy5yYW5nZS5sZW5ndGgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
aXNzcGVsbGluZyk7CiAgICAgICAgIH0KIApAQCAtMTM5LDE0ICsxMzksMTMgQEAgdm9pZCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmV4cGFuZFJhbmdlVG9OZXh0RW5kKCkKIHZvaWQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VWYWx1ZXMoKQogewogICAgIG1f
Y2hlY2tpbmdTdGFydC5yZXNldCgpOwotICAgIG1fY2hlY2tpbmdFbmQucmVzZXQoKTsKICAgICBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQucmVzZXQoKTsKICAgICBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoLnJlc2V0KCk7CiAgICAgbV9vZmZzZXRBc1JhbmdlID0gbnVsbHB0cjsKICAg
ICBtX3RleHQgPSBTdHJpbmcoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFu
Z2VMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpy
YW5nZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHBhcmFncmFw
aFJhbmdlKCkpOwogfQpAQCAtMTU4LDEyICsxNTcsMTIgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6cGFyYWdyYXBoUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9wYXJhZ3JhcGhS
YW5nZTsKIH0KIAotUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKGlu
dCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCkgY29uc3QKK1JlZjxSYW5nZT4g
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZSgp
LCBjaGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShwYXJhZ3JhcGhSYW5nZSgpLCByYW5nZSkpOwog
fQogCi1FeGNlcHRpb25PcjxpbnQ+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAorRXhjZXB0aW9uT3I8Q2hhcmFjdGVyQ291bnQ+
IFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdAogewogICAgIGF1dG8gc3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhS
YW5nZSgpLnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2lu
dChwb3NpdGlvbik7CkBAIC0xODcsMzUgKzE4NiwzMyBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpvZmZzZXRBc1JhbmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fb2Zmc2V0QXNSYW5n
ZTsKIH0KIAotY29uc3QgU3RyaW5nJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25z
dAorU3RyaW5nVmlldyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25zdAogewotICAg
IGlmIChtX3RleHQuaXNFbXB0eSgpKQorICAgIGlmIChtX3RleHQuaXNOdWxsKCkpCiAgICAgICAg
IG1fdGV4dCA9IHBsYWluVGV4dCgmcGFyYWdyYXBoUmFuZ2UoKSk7CiAgICAgcmV0dXJuIG1fdGV4
dDsgCiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3RhcnQoKSBjb25z
dAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fY2hlY2tpbmdTdGFydCkKICAgICAgICAgbV9jaGVja2luZ1N0
YXJ0ID0gY2hhcmFjdGVyQ291bnQob2Zmc2V0QXNSYW5nZSgpKTsKICAgICByZXR1cm4gKm1fY2hl
Y2tpbmdTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQo
KSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0Vu
ZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NoZWNraW5nRW5kKQotICAgICAgICBtX2NoZWNraW5n
RW5kID0gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdMZW5ndGgoKTsKLSAgICByZXR1cm4gKm1f
Y2hlY2tpbmdFbmQ7CisgICAgcmV0dXJuIGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3Ro
KCk7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29u
c3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5ndGgo
KSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ0xlbmd0aCkKICAgICAgICAgbV9jaGVja2lu
Z0xlbmd0aCA9IGNoYXJhY3RlckNvdW50KG1fY2hlY2tpbmdSYW5nZSk7CiAgICAgcmV0dXJuICpt
X2NoZWNraW5nTGVuZ3RoOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQ7CkBAIC0yMjksNyArMjI2LDcgQEAgaW50IFRleHRDaGVja2luZ1BhcmFn
cmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2F1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRD
aGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAogewog
ICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKQogICAgICAgICByZXR1cm4gKm1f
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CkBAIC0yNDYsMTIgKzI0MywxMiBAQCBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OlRleHRDaGVja2luZ0hlbHBlcihFZGl0b3JDbGllbnQmIGNsaWVudCwgUmFu
Z2UmIHJhbmdlKQogCiBUZXh0Q2hlY2tpbmdIZWxwZXI6On5UZXh0Q2hlY2tpbmdIZWxwZXIoKSA9
IGRlZmF1bHQ7CiAKLVN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxs
aW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFu
Z2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZyhDaGFyYWN0ZXJDb3VudCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCiB7
CiAgICAgZmlyc3RNaXNzcGVsbGluZ09mZnNldCA9IDA7CiAKICAgICBTdHJpbmcgZmlyc3RNaXNz
cGVsbGluZzsKLSAgICBpbnQgY3VycmVudENodW5rT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOwogCiAgICAgZm9yIChXb3JkQXdhcmVJdGVyYXRv
ciBpdChtX3JhbmdlKTsgIWl0LmF0RW5kKCk7IGN1cnJlbnRDaHVua09mZnNldCArPSBpdC50ZXh0
KCkubGVuZ3RoKCksIGl0LmFkdmFuY2UoKSkgewogICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBp
dC50ZXh0KCk7CkBAIC0yNzcsMTcgKzI3NCwxNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwog
CiAgICAgICAgIGlmIChtaXNzcGVsbGluZ0xvY2F0aW9uID49IDAgJiYgbWlzc3BlbGxpbmdMZW5n
dGggPiAwICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gPCB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5n
TGVuZ3RoIDw9IHRleHRMZW5ndGggJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoIDw9IHRleHRMZW5ndGgpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ugb2Yg
bWlzc3BlbGxlZCB3b3JkCi0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxs
aW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3Bl
bGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLCB7IGN1cnJlbnRDaHVu
a09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50
PihtaXNzcGVsbGluZ0xlbmd0aCkgfSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGZpcnN0
LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAgICAgICAgaWYg
KCFmaXJzdE1pc3NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ09m
ZnNldCA9IGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CiAgICAgICAg
ICAgICAgICAgZmlyc3RNaXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nTG9j
YXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIGZp
cnN0TWlzc3BlbGxpbmdSYW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7CisgICAgICAgICAg
ICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1pc3NwZWxsaW5n
UmFuZ2UpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBtYXJrZXIgZm9y
IG1pc3NwZWxsZWQgd29yZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2Us
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVsbGluZ1Jhbmdl
LnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiB3
ZSdyZSBtYXJraW5nIG9ubHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFsbCBpbnN0
YW5jZXMuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjk1LDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1p
c3NwZWxsaW5nT2Zmc2V0LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGluZzsKIH0KIAot
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1t
YXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RG
b3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hl
Y2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RG
b3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBpZiAo
IXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CkBAIC0zMTMsOCArMzEwLDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAvLyBJ
bml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmlu
ZCBzb21ldGhpbmcgdG8gcmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAgIG91
dEZpcnN0Rm91bmRPZmZzZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAt
MTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRldGFp
bC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGgg
PSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdyYW1t
YXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAgLTMzNCw4
ICszMzEsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGlu
Z09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIHdoaWxlICh0b3RhbExlbmd0
aFByb2Nlc3NlZCA8IHRvdGFsUmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0ZSB0aHJv
dWdoIHRoZSBzZWFyY2ggcmFuZ2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBvbmUgZm9y
IHNwZWxsaW5nIGFuZCBncmFtbWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBjaGFy
YWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRPZmZz
ZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBpbnQg
Y3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50
IGN1cnJlbnRTdGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6
IDA7CisgICAgICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRFbmRPZmZzZXQgPSBjdXJyZW50TGVu
Z3RoOwogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRl
cm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBz
ZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8g
c2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KQEAgLTM0
Niw5ICszNDMsOSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgU3RyaW5n
IHBhcmFncmFwaFN0cmluZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAgICAg
ICAgICAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAg
ICAgIGJvb2wgZm91bmRHcmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IHNwZWxs
aW5nTG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlTG9jYXRp
b24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOwor
ICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOworICAg
ICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7Cisg
ICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7CkBAIC0zNjEsNDIgKzM1OCw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAg
ICAgICAgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigp
LCBwYXJhZ3JhcGhTdHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rp
b24pOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyAmJiByZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3Vs
dC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5n
KHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQucmFu
Z2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlv
biArIHJlc3VsdC5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0
aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhT
dHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0
aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1cnJlbnRF
bmRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJlbnRTdGFy
dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGgg
PiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0g
MCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gPCBj
dXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5nZS5s
ZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNl
IHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGlu
IGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LmRl
dGFpbHNbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVu
Z3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9j
YXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5s
b2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJyZW50RW5k
T2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9j
YXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+
cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0aCA8PSBj
dXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5sb2NhdGlv
biArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9IGo7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJl
c3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiAr
IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kR3JhbW1hciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
R3JhbW1hcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFt
bWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dyYW1tYXJE
ZXRhaWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFz
ZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gcGFy
YWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5n
ZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFy
UGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9u
KSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xv
Y2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0
ZXJDb3VudCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtl
Qm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9p
bnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwpAQCAtNDA1LDcgKzQwMiw3IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hl
Y2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhyYXNl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNl
dCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAgICAg
ICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1tYXJQ
aHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJh
c2VPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5nZS0+
c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFs
c2U7CkBAIC00MjgsMTggKzQyNSwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogCiAjaWYg
VVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWls
cywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRl
dGFpbHMsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hhcmFjdGVy
Q291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxs
KSBjb25zdAogewogICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhlIGVhcmxp
ZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChpZiBhbnkp
LgogICAgIC8vIE9wdGlvbmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2ggZGV0YWls
IGluIHRoZSByYW5nZS4KLSAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gLTE7
CisgICAgQ2hhcmFjdGVyQ291bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gMDsKICAg
ICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9IC0xOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBncmFtbWFyRGV0YWlscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBHcmFtbWFy
RGV0YWlsKiBkZXRhaWwgPSAmZ3JhbW1hckRldGFpbHNbaV07Ci0gICAgICAgIEFTU0VSVChkZXRh
aWwtPmxlbmd0aCA+IDApOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VS
VChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAKLSAgICAgICAgaW50IGRl
dGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBk
ZXRhaWwtPmxvY2F0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBkZXRhaWxTdGFydE9mZnNl
dEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5s
b2NhdGlvbjsKICAgICAgICAgCiAgICAgICAgIC8vIFNraXAgdGhpcyBkZXRhaWwgaWYgaXQgc3Rh
cnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlCiAgICAgICAgIGlmIChkZXRhaWxT
dGFydE9mZnNldEluUGFyYWdyYXBoIDwgc3RhcnRPZmZzZXQpCkBAIC00NTAsMzAgKzQ0NywzMCBA
QCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZl
Y3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwot
ICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFt
bWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBhdXRvIGJhZEdyYW1t
YXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLmdldCgpLCB7IGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiwg
ZGV0YWlsLT5yYW5nZS5sZW5ndGggfSk7CisgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2Uuc3Rh
cnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBkZXRhaWwgb25seSBpZiBpdCdzIGVh
cmxpZXIgdGhhbiBvdXIgY3VycmVudCBjYW5kaWRhdGUgKHRoZSBkZXRhaWxzIGFyZW4ndCBpbiBh
IGd1YXJhbnRlZWQgb3JkZXIpCi0gICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8
fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPmxvY2F0aW9uKSB7CisgICAg
ICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9u
U29GYXIgPiBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICBlYXJsaWVzdERl
dGFpbEluZGV4ID0gaTsKLSAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9
IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29G
YXIgPSBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IHJldHVybiBlYXJsaWVzdERldGFpbEluZGV4OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWws
IGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAorU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBv
dXRHcmFtbWFyRGV0YWlsLCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwg
Ym9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7
IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCi0g
ICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwu
bGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAg
ICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFp
bC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24g
PSBlbXB0eVN0cmluZygpOwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIAot
ICAgIFN0cmluZyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBmaXJzdEJh
ZEdyYW1tYXJQaHJhc2U7CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNv
bXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVlZHMgdGhh
dCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZy
b20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5h
bCBzZWFyY2ggcmFuZ2UsCkBAIC00ODEsMTEgKzQ3OCwxMSBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRh
aWwsCiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNvcHlSZWYo
KSk7CiAgICAgCiAgICAgLy8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2YgcGFyYWdy
YXBoLCBidXQgc2tpcCBwYXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0YXJ0IG9m
IHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZzZXQgPSAw
OyBzdGFydE9mZnNldCA8IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBmb3IgKENo
YXJhY3RlckNvdW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hl
Y2tpbmdFbmQoKTsgKSB7CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFtbWFyRGV0
YWlsczsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwogICAgICAg
ICBpbnQgYmFkR3JhbW1hclBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50LnRleHRD
aGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBoLnRleHQo
KSkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQu
dGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQoKS5zdWJz
dHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFi
YWRHcmFtbWFyUGhyYXNlTGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uID09IC0xKTsKQEAgLTUwNiw3ICs1MDMsNyBAQCBTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsCiAgICAgICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5zdGFu
Y2VzKS4KICAgICAgICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQg
PSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpOwot
ICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJp
bmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAg
ICAgICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3Ry
aW5nKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3csIHVu
bGVzcyB3ZSdyZSBtYXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1hcmtB
bGwpCkBAIC01MTgsNyArNTE1LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBz
dGFydE9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJhc2VM
ZW5ndGg7CiAgICAgfQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7Cisg
ICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29sIFRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3ICs1MjYs
NyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAg
ICAvLyBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVz
cG9uZHMgdG8gYSBiYWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCiAg
ICAgLy8gdG8gaXNTZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBmb3Ig
dGhlcmUgdG8gYmUgc29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAogICAg
IC8vIG9yIG92ZXJsYXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkgbWF0
Y2guCi0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgZ3Jh
bW1hclBocmFzZU9mZnNldDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7
CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1t
YXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSArNTM5LDE1
IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAogICAg
IGlmIChncmFtbWFyUGhyYXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdyYW1t
YXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9j
YXRpb24gPj0gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7
CiAKICAgICAvLyBCYWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1t
YXRpY2FsIHdvcmQpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1h
ckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1tYXJE
ZXRhaWwucmFuZ2UubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1
dCBlbmQgb2YgYmFkIGdyYW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQotICAg
IGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IGNoYXJh
Y3RlckNvdW50KG1fcmFuZ2UpKQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCAh
PSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIC8vIFVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVy
cm9yICh3aGV0aGVyIG9yIG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KQEAg
LTU5NCw4ICs1OTEsOCBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNz
ZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4dE9m
UGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBjaGVj
a2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0byYg
cmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3Vs
dC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNzcGVs
bGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAocmVz
dWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNr
aW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBtaXNz
cGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7CiAg
ICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAg
bV9jbGllbnQudGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQs
IFN0cmluZygpLCBjdXJyZW50U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1fY2xp
ZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQpOwpA
QCAtNjA4LDEyICs2MDUsMTIgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpn
dWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0
dXJuIGd1ZXNzZXM7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAg
ICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdy
YXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5n
dGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFt
bWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdlKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyYWdy
YXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2NhdGlv
biwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1t
YXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsgcmVz
dWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2Uu
bGVuZ3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNl
ID0gcGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1
bHQucmFuZ2UubGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgZ3Vlc3MgOiBkZXRhaWwuZ3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNz
ZXMuYXBwZW5kKGd1ZXNzKTsKQEAgLTYzMSw3ICs2MjgsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hl
bHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5n
UmFuZwogewogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlz
c3BlbGxpbmcuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIi
OwogICAgIC8vIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0gICAg
aW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAg
ICBmaW5kRmlyc3RNaXNzcGVsbGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3NwZWxs
aW5nUmFuZ2UpOwogfQogCkBAIC02NDEsNyArNjM4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJl
IG9mIG9maW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgIm91
dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5IGlu
c3RhbmNlLgogICAgIEdyYW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAgaW50
IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBm
aW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0LCB0
cnVlKTsKIH0KICNlbmRpZgpAQCAtNjY4LDcgKzY2NSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25T
ZXQ8CiAgICAgaWYgKGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcikpIHsKICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckNoZWNrTGVuZ3RoID0gdGV4dC5sZW5n
dGgoKTsKICAgICAgICAgZm9yIChhdXRvJiBtaXNwZWxsaW5nIDogbWlzcGVsbGluZ3MpCi0gICAg
ICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNo
ZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdyYW1tYXJDaGVj
a0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxp
bmcucmFuZ2UubG9jYXRpb24pOwogICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMoY2xpZW50
LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNhbEVycm9y
cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
aAppbmRleCAzZjM5ZTg2OGQ5OTQxZTViODgxYjA2MTZkZGZjMTZiMzQwMTUxMWQ0Li4zNDZkNWE4
MTkyZWJkY2I3NjNiMGE1ZTA2NWY4MTE4OGNmMGE4OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTM2LDM0ICszNiwyOCBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVGV4dENoZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ0Fu
ZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpOwogICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1Bh
cmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdSYW5nZSwgUmVmPFJhbmdlPiYmIGF1dG9tYXRp
Y1JlcGxhY2VtZW50UmFuZ2UsIFJlZlB0cjxSYW5nZT4mJiBwYXJhZ3JhcGhSYW5nZSk7CiAKLSAg
ICBpbnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsKLSAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKGludCBj
aGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9u
T3I8aW50PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYpIGNvbnN0OworICAgIENoYXJhY3RlckNv
dW50IHJhbmdlTGVuZ3RoKCkgY29uc3Q7CisgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShDaGFyYWN0
ZXJSYW5nZSkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8Q2hhcmFjdGVyQ291bnQ+IG9mZnNldFRv
KGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAgICAgdm9pZCBleHBhbmRSYW5nZVRvTmV4dEVuZCgp
OwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIGNoYW5naW5nIHRoaXMgdG8gcmV0dXJuIGEgU3Ry
aW5nVmlldy4KLSAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdDsKLQotICAgIC8vIEZJWE1F
OiBDb25zaWRlciByZW1vdmluZyB0aGVzZSBhbmQganVzdCBoYXZpbmcgdGhlIGNhbGxlciB1c2Ug
dGV4dCgpIGRpcmVjdGx5LgotICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGV4
dCgpLmxlbmd0aCgpOyB9Ci0gICAgU3RyaW5nIHRleHRTdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1
bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLnN1YnN0cmluZyhw
b3MsIGxlbik7IH0KLSAgICBVQ2hhciB0ZXh0Q2hhckF0KGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gdGV4dCgpW3N0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCldOyB9CisgICAgU3RyaW5nVmll
dyB0ZXh0KCkgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIGludCBj
aGVja2luZ1N0YXJ0KCkgY29uc3Q7Ci0gICAgaW50IGNoZWNraW5nRW5kKCkgY29uc3Q7Ci0gICAg
aW50IGNoZWNraW5nTGVuZ3RoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGNoZWNraW5nU3Vic3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gdGV4dFN1YnN0cmluZyhjaGVja2luZ1N0YXJ0KCksIGNoZWNraW5n
TGVuZ3RoKCkpOyB9CisgICAgQ2hhcmFjdGVyQ291bnQgY2hlY2tpbmdTdGFydCgpIGNvbnN0Owor
ICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nRW5kKCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291
bnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IGNoZWNraW5nU3Vic3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLnN1YnN0cmluZyhjaGVja2luZ1N0YXJ0KCksIGNo
ZWNraW5nTGVuZ3RoKCkpOyB9CiAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSByYW5nZSBpbiB3aGlj
aCB3ZSBhbGxvdyBhdXRvbWF0aWMgdGV4dCByZXBsYWNlbWVudC4gSWYgYW4gYXV0b21hdGljIHJl
cGxhY2VtZW50IHJhbmdlIGlzIG5vdCBwYXNzZWQgdG8gdGhlCiAgICAgLy8gdGV4dCBjaGVja2lu
ZyBwYXJhZ3JhcGgsIHRoaXMgZGVmYXVsdHMgdG8gdGhlIHNwZWxsIGNoZWNraW5nIHJhbmdlLgot
ICAgIGludCBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3Q7Ci0gICAgaW50IGF1dG9t
YXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRj
aGVzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPT0g
Y2hlY2tpbmdTdGFydCgpICYmIGxlbmd0aCA9PSBjaGVja2luZ0xlbmd0aCgpOyB9Ci0gICAgYm9v
bCBpc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbiA8PSBjaGVja2luZ1N0YXJ0KCkgJiYgbG9jYXRpb24gKyBsZW5n
dGggPj0gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgY2hl
Y2tpbmdSYW5nZUNvdmVycyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiBsb2NhdGlvbiArIGxlbmd0aCA+IGNoZWNraW5n
U3RhcnQoKTsgfQorICAgIGJvb2wgY2hlY2tpbmdSYW5nZU1hdGNoZXMoQ2hhcmFjdGVyUmFuZ2Ug
cmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uID09IGNoZWNraW5nU3RhcnQoKSAm
JiByYW5nZS5sZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQorICAgIGJvb2wgaXNDaGVja2lu
Z1JhbmdlQ292ZXJlZEJ5KENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7IHJldHVybiByYW5n
ZS5sb2NhdGlvbiA8PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5s
ZW5ndGggPj0gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdMZW5ndGgoKTsgfQorICAgIGJvb2wg
Y2hlY2tpbmdSYW5nZUNvdmVycyhDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4g
cmFuZ2UubG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2Uu
bGVuZ3RoID4gY2hlY2tpbmdTdGFydCgpOyB9CiAgICAgUmFuZ2UmIHBhcmFncmFwaFJhbmdlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CkBAIC03NSwxMSArNjksMTAgQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBtdXRhYmxlIFJlZlB0cjxS
YW5nZT4gbV9vZmZzZXRBc1JhbmdlOwogICAgIG11dGFibGUgU3RyaW5nIG1fdGV4dDsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ1N0YXJ0OwotICAgIG11dGFibGUgT3B0aW9u
YWw8aW50PiBtX2NoZWNraW5nRW5kOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNr
aW5nTGVuZ3RoOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2Vt
ZW50U3RhcnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fYXV0b21hdGljUmVwbGFjZW1l
bnRMZW5ndGg7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gbV9jaGVja2lu
Z1N0YXJ0OworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdM
ZW5ndGg7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gbV9hdXRvbWF0aWNS
ZXBsYWNlbWVudFN0YXJ0OworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1f
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CiB9OwogCiBjbGFzcyBUZXh0Q2hlY2tpbmdIZWxw
ZXIgewpAQCAtODgsMTEgKzgxLDExIEBAIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdIZWxwZXIo
RWRpdG9yQ2xpZW50JiwgUmFuZ2UmKTsKICAgICB+VGV4dENoZWNraW5nSGVscGVyKCk7CiAKLSAg
ICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0
LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0g
ICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFt
bWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1t
YXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpOworICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVs
bGluZyhDaGFyYWN0ZXJDb3VudCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxs
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFN0cmluZyBmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0
SXNTcGVsbGluZywgQ2hhcmFjdGVyQ291bnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpOwogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5ncyhS
ZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogI2lmIFVTRShHUkFNTUFSX0NI
RUNLSU5HKQotICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91
dEdyYW1tYXJEZXRhaWwsIGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxs
KSBjb25zdDsKKyAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBv
dXRHcmFtbWFyRGV0YWlsLCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwg
Ym9vbCBtYXJrQWxsKSBjb25zdDsKICAgICB2b2lkIG1hcmtBbGxCYWRHcmFtbWFyKCk7CiAgICAg
Ym9vbCBpc1VuZ3JhbW1hdGljYWwoKSBjb25zdDsKICNlbmRpZgpAQCAtMTA0LDcgKzk3LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0Owog
I2lmIFVTRShHUkFNTUFSX0NIRUNLSU5HKQotICAgIGludCBmaW5kRmlyc3RHcmFtbWFyRGV0YWls
KGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRp
b24sIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdDsK
KyAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFp
bD4mLCBDaGFyYWN0ZXJDb3VudCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIENoYXJhY3RlckNv
dW50IHN0YXJ0T2Zmc2V0LCBDaGFyYWN0ZXJDb3VudCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3Q7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cAppbmRleCBiYTFiNzIwYWVmMDM0OGJmYTlmZWRkN2QzZDY2NzAyODQwNDA2N2I1Li4xYWNhNzcz
ZTQxNDVlYTY1NDJiMmFkOTI0ZDU1MWIxNDk3NTdlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yMzUxLDEyICsyMzUxLDYgQEAgQ2hhcmFjdGVyQ291bnQg
Y2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhh
dmlvciBiZWgKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1SZWY8UmFuZ2U+IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQg
Y2hhcmFjdGVyQ291bnQpCi17Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgZW50aXJlUmFuZ2VJdGVy
YXRvcihlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlclN1YnJhbmdlKGVudGlyZVJh
bmdlLm93bmVyRG9jdW1lbnQoKSwgZW50aXJlUmFuZ2VJdGVyYXRvciwgY2hhcmFjdGVyT2Zmc2V0
LCBjaGFyYWN0ZXJDb3VudCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luc2lkZVJlcGxh
Y2VkRWxlbWVudChUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQogewogICAgIEFTU0VSVCghaXRlcmF0
b3IuYXRFbmQoKSk7CkBAIC0yMzY1LDg1ICsyMzU5LDYwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0luc2lkZVJlcGxhY2VkRWxlbWVudChUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQogICAgIHJldHVy
biBub2RlICYmIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQobm9kZS0+cmVuZGVyZXIoKSk7CiB9
CiAKLVJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitCb3VuZGFyeVBvaW50IHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIENoYXJhY3RlckNvdW50
IGxvY2F0aW9uLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICBSZWY8UmFu
Z2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLQotICAg
IGludCBkb2NUZXh0UG9zaXRpb24gPSAwOwotICAgIGludCByYW5nZUVuZCA9IHJhbmdlTG9jYXRp
b24gKyByYW5nZUxlbmd0aDsKLSAgICBib29sIHN0YXJ0UmFuZ2VGb3VuZCA9IGZhbHNlOwotCi0g
ICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKnNjb3BlKTsKKyAg
ICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0sIGJl
aGF2aW9yKS5zdGFydDsKK30KIAotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UsIGZv
clNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAg
ICAKLSAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2Fy
eSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyODk+LgotICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQuYXRF
bmQoKSkgewotICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7Ci0g
ICAgfQorU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2
aW9yKQoreworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHJhbmdlLmxvY2F0
aW9uID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQsIChyYW5nZS5sb2NhdGlvbiB8fCByYW5nZS5s
ZW5ndGgpID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQgfTsKKyAgICBhdXRvIHJhbmdlRW5kID0g
cmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGg7CisgICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRp
b24gPSAwOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHNjb3BlLCBiZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gaXQudGV4
dCgpLmxlbmd0aCgpOworICAgICAgICBhdXRvIHRleHRSdW5SYW5nZSA9IGl0LnJhbmdlKCk7CiAK
LSAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewotICAgICAgICBpbnQgbGVu
Z3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOwotICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBjcmVhdGVM
aXZlUmFuZ2UoaXQucmFuZ2UoKSk7CisgICAgICAgIGF1dG8gZm91bmQgPSBbJl0gKENoYXJhY3Rl
ckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRMb2NhdGlvbiA+PSBsb2NhdGlvbiAmJiB0YXJnZXRMb2NhdGlvbiA8PSBsb2NhdGlvbiArIGxl
bmd0aDsKKyAgICAgICAgfTsKIAotICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0
aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3NpdGlv
biArIGxlbmd0aDsKLSAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1RleHRQ
b3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CisgICAgICAg
IGJvb2wgZm91bmRTdGFydCA9IGZvdW5kKHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgYm9vbCBm
b3VuZEVuZCA9IGZvdW5kKHJhbmdlRW5kKTsKIAogICAgICAgICBpZiAoZm91bmRFbmQpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhh
dCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRoZSB3cm9uZwotICAgICAgICAgICAgLy8g
cG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJy
ZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMg
b2Z0ZW4gYXQgdGhlIHdyb25nIHBvc2l0aW9uIGZvciBlbWl0dGVkICdcbidzIG9yIGlmIHRoZSBy
ZW5kZXJlciBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgcmVwbGFjZWQgZWxlbWVudC4KKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBjb250cm9sbGluZyB0aGlzIHdpdGggVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgaW5zdGVhZCBvZiBkb2luZyBpdCB1bmNvbmRpdGlvbmFsbHkgdG8gaGVscCB1
cyBldmVudHVhbGx5IHBoYXNlIGl0IG91dCBldmVyeXdoZXJlLgogICAgICAgICAgICAgaWYgKGxl
bmd0aCA9PSAxICYmIChpdC50ZXh0KClbMF0gPT0gJ1xuJyB8fCBpc0luc2lkZVJlcGxhY2VkRWxl
bWVudChpdCkpKSB7CiAgICAgICAgICAgICAgICAgaXQuYWR2YW5jZSgpOwotICAgICAgICAgICAg
ICAgIGlmICghaXQuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0ID0g
aXQucmFuZ2UoKS5zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQoV1RGTW92ZShzdGFydC5jb250YWluZXIpLCBzdGFydC5vZmZzZXQpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4
dFJ1blJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIFBvc2l0aW9u
IHJ1bkVuZCA9IFZpc2libGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZCgqcnVuRW5kLmNvbnRhaW5lck5v
ZGUoKSwgcnVuRW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFpdC5hdEVuZCgpKQorICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2Uu
ZW5kID0gaXQucmFuZ2UoKS5zdGFydDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQoVmlzaWJsZVBvc2l0
aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbih0ZXh0UnVuUmFuZ2Uuc3RhcnQpKS5uZXh0
KCkuZGVlcEVxdWl2YWxlbnQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFu
Z2UuZW5kID0gKmVuZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoZm91bmRTdGFydCkgewotICAgICAgICAgICAgc3RhcnRSYW5nZUZv
dW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkuaXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlTG9j
YXRpb24gLSBkb2NUZXh0UG9zaXRpb247Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNl
dFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJh
bmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJhbmdlTG9jYXRpb24gPT0gZG9jVGV4dFBvc2l0aW9uKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigp
LCB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+ZW5k
Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICBhdXRvIGJv
dW5kYXJ5ID0gWyZdIChDaGFyYWN0ZXJDb3VudCB0YXJnZXRMb2NhdGlvbikgLT4gQm91bmRhcnlQ
b2ludCB7CisgICAgICAgICAgICBpZiAoaXM8VGV4dD4odGV4dFJ1blJhbmdlLnN0YXJ0LmNvbnRh
aW5lcikpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlv
biA8PSBkb3duY2FzdDxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmdldCgpKS5s
ZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdGV4dFJ1blJhbmdl
LnN0YXJ0Lm9mZnNldCArIHRhcmdldExvY2F0aW9uIC0gbG9jYXRpb247CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgdGV4dFJ1blJhbmdlLnN0YXJ0LmNvbnRhaW5lci5jb3B5UmVmKCksIG9mZnNl
dCB9OwogICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0
TG9jYXRpb24gPT0gbG9jYXRpb24gPyB0ZXh0UnVuUmFuZ2Uuc3RhcnQgOiB0ZXh0UnVuUmFuZ2Uu
ZW5kOworICAgICAgICB9OwogCisgICAgICAgIGlmIChmb3VuZFN0YXJ0KQorICAgICAgICAgICAg
cmVzdWx0UmFuZ2Uuc3RhcnQgPSBib3VuZGFyeShyYW5nZS5sb2NhdGlvbik7CiAgICAgICAgIGlm
IChmb3VuZEVuZCkgewotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWlu
ZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VF
bmQgLSBkb2NUZXh0UG9zaXRpb247Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVu
ZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS0+
c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChyYW5nZUVuZCA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCB0ZXh0UnVuUmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0
ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRv
Y1RleHRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgICAgICByZXN1bHRSYW5nZS5lbmQgPSBi
b3VuZGFyeShyYW5nZUVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGRvY1RleHRQb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIGxvY2F0aW9uICs9IGxlbmd0
aDsKICAgICB9Ci0gICAgCi0gICAgaWYgKCFzdGFydFJhbmdlRm91bmQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIGlmIChyYW5nZUxlbmd0aCAmJiByYW5nZUVuZCA+IGRvY1Rl
eHRQb3NpdGlvbikgLy8gcmFuZ2VFbmQgaXMgb3V0IG9mIGJvdW5kcwotICAgICAgICByZXN1bHRS
YW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+
ZW5kT2Zmc2V0KCkpOwotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAwOTE0ZjdiY2E2MTUwOWZiNWMzZGVl
YWM5ZDM4Y2U0ZDRjMzg5NjRiLi5mNGU0MDhhMjFhNTU2YTU4Yjg0MjM4YjhlMzJjMTAxYTczNmZk
NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1
ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIlNpbXBsZVJhbmdlLmgiCkBAIC0xMDMsOSArMTA0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25z
dCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQogCiAg
ICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gU2ltcGxlUmFuZ2UsIENoYXJhY3RlclJhbmdlLCBh
bmQgQ2hhcmFjdGVyQ291bnQgYW5kIG1vdmUgb3V0IG9mIHRoaXMgY2xhc3MgdG8gdGhlIHRvcCBs
ZXZlbCAoYm90dG9tIG9mIHRoaXMgZmlsZSkuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2Nv
cGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBz
aXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVy
T2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdCgp
OwpAQCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQg
eyB0cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OwotCi1z
dHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9
OwotICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAgfTsKLX07CiAKIFdFQkNPUkVfRVhQT1JU
IENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9F
WFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxl
UmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFmMzhjNWIxZmJhNGUwODRhYjdjYTYuLmUy
ZjhmNTdiMzk1NTE3N2JjZGVmNzNhYTQyYjczNzhjOGFjOTMwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTk3LDcgKzk3LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJh
bmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0
ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAgICAgICBpZiAoaGl0TG9jYXRpb24gPj0g
cmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0UmFu
Z2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7CiAg
ICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OwotICAgICAgICAgICAgbWFpblJlc3VsdFJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5nZUlu
Q29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKKyAgICAgICAg
ICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoKmNvbnRleHRSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShyZXN1bHRSYW5nZUluQ29udGV4
dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTA4LDkgKzUw
OCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRyPFJh
bmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdl
ID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4IGZy
YWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlmIChm
cmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAgICBm
cmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJhbmdl
LCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlS
YW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFnbWVu
dEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENoYXJh
Y3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxvY2F0
aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdl
Lmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0
OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShyZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpCiAg
ICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAgICAg
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rp
Y3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25h
cnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5MmMyNGU1MTc4OTA0N2NlZjYyNjNmYTUw
OS4uNmJjNWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4OGE0ZTEyNjllOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjg3LDEw
ICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0
aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogCiAgICAgUmVmUHRyPFJhbmdlPiBm
dWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVu
ZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdl
LmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0
ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VU
b1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGln
aHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NSVkl0
ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VU
b1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24s
IGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKm1ha2VDaGFy
YWN0ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmlsIH07CiAKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC0zNTgsMTMgKzM1NywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxS
YW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJl
c3VsdAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkg
cmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsK
IAogICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2Up
OwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3Rh
bmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdl
XSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFu
Z2U7CisgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShhZG9wdE5T
KFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRS
YW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCkuaGlnaGxpZ2h0UmFuZ2UpOwogCi0gICAgaWYgKGhp
Z2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxl
bmd0aCkKKyAgICBpZiAoIWhpZ2hsaWdodFJhbmdlIHx8ICFoaWdobGlnaHRSYW5nZS0+bGVuZ3Ro
KQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICByZXR1cm4geyBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdl
LmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4geyBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2Us
ICpoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGlj
dGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmNwcAppbmRleCBhMmI4MTgyODc3YjI4YWYyOWM4YTA2Mzk1NGQzNzRjZDVh
YTVhNWRhLi5kM2NmMDZjOTNkMTlkODVlZTUxNDVkMDJhMTJkNTJiODNiYzdhMDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApA
QCAtNzIsMTEgKzcyLDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAg
ICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChyb290LCBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCk7Ci0gICAgaWYgKCFy
ZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CisgICAg
YXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zm
c2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtl
cihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBM
ZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVn
YWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVlMThlMDE3NzllYzYxMTQ3NDMxYzc5NWUzOGE1OGUuLjY1
ZDVkZDU2MmU5MzcwY2ViZmNlNTNjMzIyNWUyNzM1YzU1YjVmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAtMTQy
LDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKIAogICAgIE5TUmFuZ2UgcmFu
Z2VUb1Bhc3MgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7ICpmdWxsQ2hhcmFjdGVyU3Rh
cnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0pLCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMg
PSBuaWw7Ci0gICAgTlNSYW5nZSBleHRyYWN0ZWRSYW5nZSA9IHRva2VuUmFuZ2UocGxhaW5UZXh0
KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucyk7CisgICAg
YXV0byBleHRyYWN0ZWRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZSh0b2tlblJhbmdlKHBsYWlu
VGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpKTsK
IAogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJldHVybnMge05TTm90Rm91bmQsIDB9IGlm
IGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcuCiAgICAgLy8gRklYTUUg
KDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvIGxlbmd0aCBoZXJl
LgotICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFleHRy
YWN0ZWRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFleHRyYWN0ZWRSYW5nZSB8fCAhZXh0cmFjdGVk
UmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAKLSAgICBy
ZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5nZS5sZW5ndGgpLCBvcHRpb25zIH07Cisg
ICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENo
YXJhY3RlclJhbmdlLCAqZXh0cmFjdGVkUmFuZ2UpKSwgb3B0aW9ucyB9OwogfQogCiBzdGF0aWMg
dm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMoUERGU2VsZWN0aW9uICpzZWxlY3Rpb24s
IE5TSW50ZWdlciBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCwgTlNJbnRlZ2VyJiBjaGFyYWN0
ZXJzQWRkZWRCZWZvcmVTdGFydCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRBZnRlckVuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM3ZGNjZmYzNWUzYTlmMmI2YTZhNmQwMTkyY2NkOTAyMGE4
NzQ3MWUuLjU3NGNkYmY1NDdhNTQ1MjBjNDNhMjAyNTQ1MGE3NzRmNmY2YmUyYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtODAzLDggKzgwMyw3IEBAIHVuc2lnbmVkIFBhZ2U6OmNvdW50RmluZE1h
dGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAK
IHN0cnVjdCBGaW5kUmVwbGFjZW1lbnRSYW5nZSB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHJvb3Q7Ci0gICAgc2l6ZV90IGxvY2F0aW9uIHsgbm90Rm91bmQgfTsKLSAgICBzaXplX3QgbGVu
Z3RoIHsgMCB9OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogfTsKIAogc3RhdGljIHZvaWQg
cmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFu
Z2U+JiByYW5nZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQpAQCAtODE2LDEwICs4
MTUsMTAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0
b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJhbmdlcyBhcmUgc29ydGVkIGJ5IHRoZWly
IGVuZCBvZmZzZXRzLCBwZXIgZWRpdGluZyBjb250YWluZXIuCi0gICAgICAgIGF1dG8gZW5kT2Zm
c2V0Rm9yUmFuZ2UgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICAgICAgYXV0
byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UucmFuZ2Uu
bGVuZ3RoOwogICAgICAgICBhdXRvIGluc2VydGlvbkluZGV4ID0gcmFuZ2VMaXN0LnNpemUoKTsK
ICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VMaXN0LnJiZWdpbigpOyBpdGVyYXRv
ciAhPSByYW5nZUxpc3QucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIGVu
ZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPmxvY2F0aW9uICsgaXRlcmF0
b3ItPmxlbmd0aDsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5k
ZXggPSBpdGVyYXRvci0+cmFuZ2UubG9jYXRpb24gKyBpdGVyYXRvci0+cmFuZ2UubGVuZ3RoOwog
ICAgICAgICAgICAgaWYgKGVuZE9mZnNldEZvclJhbmdlID49IGVuZE9mZnNldEJlZm9yZUluc2Vy
dGlvbkluZGV4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaW5zZXJ0aW9u
SW5kZXgtLTsKQEAgLTg2MiwxMSArODYxLDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMo
UGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAg
ICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggcmFuZ2VzIHdoZW4gcmVwbGFjaW5n
IHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVwbGFjZW1lbnRzIGRvbid0IGNsb2JiZXIg
cmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAgICAgICBhdXRvJiByYW5nZXMgPSByYW5n
ZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIpLT52YWx1ZTsKICAgICAgICAgZm9yIChh
dXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZXMucmVuZCgp
OyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIuZ2V0KCksIGl0ZXJhdG9yLT5sb2Nh
dGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlIHx8IHJhbmdl
LT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpjb250YWluZXIpLCBpdGVyYXRv
ci0+cmFuZ2UpOworICAgICAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNl
bGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQsIEVkaXRv
cjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vLCBFZGl0
QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC04OTgsNyAr
ODk3LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZlY3Rv
cjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgICAgICBpZiAocmVwbGFjZW1lbnRM
b2NhdGlvbiA9PSBub3RGb3VuZCB8fCAhcmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhp
Z2hlc3RSb290KSwgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSk7Cisg
ICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdURk1vdmUoaGlnaGVzdFJvb3QpLCB7
IHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0gfSk7CiAgICAgfQogCiAg
ICAgcmVwbGFjZVJhbmdlcygqdGhpcywgcmVwbGFjZW1lbnRSYW5nZXMsIHJlcGxhY2VtZW50VGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBk
MGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0NzdkZWIzLi5kMjQ1Y2NkOWVjOTEyMDJl
YzNkMGY0OWVkNTU0YzMwNTBlZTk3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEwICszMSw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsMTYgKzYyLDE0IEBAIGVu
dW0gVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgewogfTsKIAogc3RydWN0IEdyYW1tYXJEZXRhaWwg
ewotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3RoOworICAgIENoYXJhY3RlclJhbmdl
IHJhbmdlOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgU3RyaW5nIHVzZXJEZXNj
cmlwdGlvbjsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewogICAgIFRleHRDaGVj
a2luZ1R5cGUgdHlwZTsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBD
aGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsK
ICAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGFmMjdiOTlmMzg3YzEyOGFmZmI0MzY5YWI0ZWMzYTljMGJmZmMyOTguLjEzNGVh
MzFmY2U4Zjk4ODkxMTJjYzE0YzA3ZmQxNzRkYmU1YmNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIwNDQsOSArMjA0NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElu
dGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
UmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1l
bnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmUHRyPFJh
bmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3Bl
LCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHJh
bmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJl
c29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUp
LCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogdW5zaWduZWQgSW50ZXJu
YWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmIHJhbmdl
KQpAQCAtMjA3NSw5ICsyMDc1LDkgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1RleHRVc2lu
Z0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHBs
YWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhyYW5nZSk7CiB9CiAK
LVJlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIGludCByYW5nZUxv
Y2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitSZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2Uo
UmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0
aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgcmFuZ2VMb2Nh
dGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHJhbmdlLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0K
IAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29u
c3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCkKQEAgLTI0MzIsOCArMjQzMiw3IEBAIHZvaWQgSW50ZXJuYWxzOjpoYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgdW5zaWduZWQgbG9jYXRpCiAK
ICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6Tm9uZTsKLSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICBy
ZXN1bHQubGVuZ3RoID0gbGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9IHsgbG9jYXRpb24sIGxl
bmd0aCB9OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IGNhbmRpZGF0ZTsKICAgICBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUocmVz
dWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGUyMzUyMzQxZGI4YzE1
ZDQyOWY5Y2VmZDI4OWRmNTIyNzBlNWFjN2MuLmNmNzllNTBjN2I4NDczZjZmZTI1MmY4Y2M3Njg1
OWM2ZjkxNTcxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk1LDEyICsy
OTUsMTIgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW52YWxpZGF0ZUNvbnRy
b2xUaW50cygpOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7Cisg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29w
ZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIHVu
c2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYpOwog
ICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2Um
KTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFu
Z2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOwotICAgIFJl
ZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKTsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgdW5zaWduZWQgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSYW5n
ZT4+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsIGludCB5KTsKICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAppbmRleCAxNjJmYWY0OTQ2ZWFhZGQ5ODBlNTc4OWExOGJiZGVjNTU4M2Y2MzIzLi4zNzU3OTA3
NzA0ZjkzMTNlNjg0MTRjMDA1NTkxNzQxZTQ2YTI1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCkBAIC0zMjUsMTIgKzMyNSwxMiBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5
IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVs
ZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAotICAgIFJh
bmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCBsb25nIHJhbmdl
TG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOworICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9jYXRpb24sIHVu
c2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9t
UmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcg
cmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5n
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlKTsKLSAgICBSYW5nZSBzdWJyYW5nZShS
YW5nZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBS
YW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1
bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdl
PyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAg
ICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5n
IHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5n
ZS5jcHAKaW5kZXggYjg5OTMzZmZhMWJmMjg0M2MyNmZkYmQ2NmQyOTI2ZWQwMGM1ZjZhMS4uNzZl
ZjQ3MjJkNzUxY2Y2ZTU5YWFiOWVkZmFiNjY1NmU3MDRmMTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0zMyw0MiArMzMsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKK1JlZlB0cjxXZWJDb3JlOjpS
YW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBiYXNl
KQogewotICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgQVNTRVJU
KGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgV2ViQ29yZTo6Q2hhcmFj
dGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5nZS5sZW5n
dGggfTsKIAotICAgIC8vIFNhbml0aXplIHRoZSBpbnB1dCwgYmVjYXVzZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHRha2VzIHNpZ25lZCBpbnRlZ2Vycy4KLSAgICBp
ZiAocmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBpbnQgbGVuZ3RoOwotICAgIGlmIChyYW5nZS5sZW5ndGggPD0gSU5UX01BWCAmJiByYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYKQotICAgICAgICBsZW5ndGggPSBzdGF0
aWNfY2FzdDxpbnQ+KHJhbmdlLmxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBsZW5ndGggPSBJ
TlRfTUFYIC0gcmFuZ2UubG9jYXRpb247Ci0KLSAgICBpZiAoZWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CisgICAgaWYg
KGJhc2UgPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAg
ICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBj
YWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEg
Z2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIC8vIFdlIGhhdmUg
dG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00g
Zm9yIHRob3NlIGlzIG5vdAogICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9N
LCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAg
ICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBz
dGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0aCBB
cHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGZy
YW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwor
ICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVU
bzo6UGFyYWdyYXBoKTsKLQotICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwotICAgIGlmICghc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChiYXNlID09IEVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtl
Qm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSkp
OworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFy
YWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAg
ICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290
Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFj
dGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9v
dE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyByYW5nZS5sb2NhdGlvbiwgbGVuZ3RoKTsKKyAg
ICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFw
aFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1
cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1v
dmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsKIH0KIAog
RWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFt
ZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaApp
bmRleCA5NDczOGI3Zjg4ZTllMDU4ZGEyZWQyNTRhMTYwNDRlYmM2YjkzMDY5Li5lMDQzZjk3MjQw
ZTQyNWVjZDI1YTQyN2VkZDkyN2FjYjc0NWUzNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5n
UmFuZ2UuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyA6IHVpbnQ4X3QgewogICAgIFBhcmFncmFwaCwKIH07CiAKKy8vIEZJWE1FOiBSZXBsYWNl
IHRoaXMgd2l0aCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4uCiBzdHJ1Y3QgRWRpdGluZ1Jhbmdl
IHsKICAgICBFZGl0aW5nUmFuZ2UoKQogICAgICAgICA6IGxvY2F0aW9uKG5vdEZvdW5kKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjMw
N2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFhOTE4MC4uZmFiNDg0ZGVhYTE4MmI0NmI1
ZGYzYmE5ZDRhYTZkM2NiZDBjY2U5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTgsNiArMTE4LDggQEAKICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhQ29uc3RyYWludHMuaD4KICNlbmRpZgogCisvLyBGSVhNRTogU2VlbXMgbGlrZSB3
ZSBjb3VsZCB1c2Ugc3RkOjp0dXBsZSB0byBjdXQgZG93biB0aGUgY29kZSBiZWxvdyBhIGxvdCEK
KwogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CkBAIC0yNTAsNiArMjUyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDYWNo
ZVF1ZXJ5T3B0aW9ucz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDYWNoZVF1ZXJ5T3B0aW9u
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5n
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDaGFyYWN0ZXJSYW5nZSYgcmFuZ2Up
Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFuZ2UubG9jYXRpb24p
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxlbmd0aCk7Cit9
CisKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxv
Y2F0aW9uOworICAgIGRlY29kZXIgPj4gbG9jYXRpb247CisgICAgaWYgKCFsb2NhdGlvbikKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5n
dGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpsb2NhdGlvbiwgKmxlbmd0aCB9
IH07Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8m
IGluZm8pCiB7CiAgICAgZW5jb2RlciA8PCBpbmZvLmlkZW50aWZpZXI7CkBAIC0yMDUzLDIyICsy
MDc2LDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxH
cmFtbWFyRGV0YWlsPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEdyYW1tYXJEZXRh
aWwmIGRldGFpbCkKIHsKLSAgICBlbmNvZGVyIDw8IGRldGFpbC5sb2NhdGlvbjsKLSAgICBlbmNv
ZGVyIDw8IGRldGFpbC5sZW5ndGg7CisgICAgZW5jb2RlciA8PCBkZXRhaWwucmFuZ2U7CiAgICAg
ZW5jb2RlciA8PCBkZXRhaWwuZ3Vlc3NlczsKICAgICBlbmNvZGVyIDw8IGRldGFpbC51c2VyRGVz
Y3JpcHRpb247CiB9CiAKIE9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3Jh
bW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGlu
dD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxvY2F0aW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50PiBsZW5n
dGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgT3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7CisgICAgaWYg
KCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBndWVzc2VzOwpAQCAtMjA4MSw3ICsyMDk4LDcgQEAgT3B0aW9uYWw8R3Jh
bW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCF1c2VyRGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqbG9jYXRpb24pLCBXVEZNb3ZlKCps
ZW5ndGgpLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9fTsK
KyAgICByZXR1cm4geyB7ICpyYW5nZSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJE
ZXNjcmlwdGlvbikgfSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVx
dWVzdERhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVx
dWVzdERhdGEmIHJlcXVlc3QpCkBAIC0yMTE3LDggKzIxMzQsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4
dENoZWNraQogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkKIHsKICAg
ICBlbmNvZGVyLmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOwotICAgIGVuY29kZXIgPDwgcmVzdWx0
LmxvY2F0aW9uOwotICAgIGVuY29kZXIgPDwgcmVzdWx0Lmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8
IHJlc3VsdC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5kZXRhaWxzOwogICAgIGVuY29k
ZXIgPDwgcmVzdWx0LnJlcGxhY2VtZW50OwogfQpAQCAtMjEyOSwxNCArMjE0NSw5IEBAIE9wdGlv
bmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0eXBlKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxpbnQ+IGxvY2F0
aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2NhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4gbGVuZ3RoOwotICAg
IGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9wdGlvbmFsPENoYXJh
Y3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAgIGlmICghcmFuZ2Up
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8R3Jh
bW1hckRldGFpbD4+IGRldGFpbHM7CkBAIC0yMTQ5LDcgKzIxNjAsNyBAQCBPcHRpb25hbDxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZGVjb2Rl
KERlY29kZXImCiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKCpsb2NhdGlvbiks
IFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmRldGFpbHMpLCBXVEZNb3ZlKCpyZXBsYWNlbWVu
dCkgfX07CisgICAgcmV0dXJuIHsgeyB0eXBlLCAqcmFuZ2UsIFdURk1vdmUoKmRldGFpbHMpLCBX
VEZNb3ZlKCpyZXBsYWNlbWVudCkgfSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8VXNlclN0
eWxlU2hlZXQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVXNlclN0eWxlU2hlZXQm
IHVzZXJTdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCA4ZjQ4NzYwZGY2ZGRhYzBkYzRkNWNlZjE3M2VhNGEyMTZlODRmMDE3Li4x
YWJiNDE2YzE0YmJkNGFlNWI5Yzk3ODhiN2MwMWEwYjViNjI3ZDAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDYgKzY5LDcgQEAgY2xh
c3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNz
IEFic29sdXRlUG9zaXRpb25Db25zdHJhaW50czsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAtMTE2LDYgKzExNyw3IEBAIGNsYXNzIFRy
YW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiAKIHN0cnVjdCBDYWNo
ZVF1ZXJ5T3B0aW9uczsKK3N0cnVjdCBDaGFyYWN0ZXJSYW5nZTsKIHN0cnVjdCBDb21wb3NpdGlv
blVuZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9u
YXJ5UG9wdXBJbmZvOwpAQCAtMTQyLDcgKzE0NCw3IEBAIHN0cnVjdCBWZWxvY2l0eURhdGE7CiBz
dHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogICAgIAot
dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4g
Y2xhc3MgUmVjdEVkZ2VzOwogdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMTYsNiArMjE4LDExIEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM+IHsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJik7
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNoYXJhY3Rl
clJhbmdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpDaGFyYWN0ZXJSYW5nZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDaGFyYWN0
ZXJSYW5nZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBmOWQ3YWJlNzRjNDI2ZmI0NTQyMzAzZDE1ZDMyM2Yw
YzJmMmFkMDU5Li4zODg4NjYyZjkxYjgxMWI4ZDZhMzk0NTU4YWQ1MTkyMWY2MWY0YTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzM2Niwx
MiArMzM2Niw5IEBAIHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBj
b3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRDaGVja2luZ1R5CiAKIHN0YXRpYyBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVz
dWx0KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3Vs
dFJhbmdlID0gW25zUmVzdWx0IHJhbmdlXTsKLQogICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNraW5nVHlwZShuc1Jl
c3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgIHJlc3Vs
dC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQucmFuZ2UpOwogICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFy
RGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3Bw
CmluZGV4IDZlZTQ0MWIxMWEyMzkwNWUzM2MzOWQ4YTllMDBkMzk3Zjk2ZjUyYjEuLjA2ZDVjZWNj
NGU4NTBhNTJiNGM3OTRjZTIxNjA1NjU0MGY5NTBlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCkBAIC00NCw4ICs0NCw4IEBAIFJlZjxXZWJHcmFt
bWFyRGV0YWlsPiBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1h
ckRldGFpbCYgZ3JhCiAKIFdlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRhaWwoaW50IGxv
Y2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVz
ZXJEZXNjcmlwdGlvbikKIHsKLSAgICBtX2dyYW1tYXJEZXRhaWwubG9jYXRpb24gPSBsb2NhdGlv
bjsKLSAgICBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoID0gbGVuZ3RoOworICAgIG1fZ3JhbW1hckRl
dGFpbC5yYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5n
ZS5sZW5ndGggPSBsZW5ndGg7CiAKICAgICBzaXplX3QgbnVtR3Vlc3NlcyA9IGd1ZXNzZXMtPnNp
emUoKTsKICAgICBtX2dyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5yZXNlcnZlQ2FwYWNpdHkobnVtR3Vl
c3Nlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0
YWlsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKaW5kZXgg
YzliNzU1M2NkN2IwOGVlYWM3ZDgyMzM4YjExMGY0YWVkZDllZjZhYy4uMzkwYjRhNWY3YjllYWM2
MzFmZDczMjQxNjU3ZTIyMWRhNWMxOTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkdyYW1tYXJEZXRhaWwuaApAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6
OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbik7CiAgICAgc3Rh
dGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCYpOwogCi0gICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0
YWlsLmxvY2F0aW9uOyB9Ci0gICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1h
ckRldGFpbC5sZW5ndGg7IH0KKyAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dy
YW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aDsgfQogICAgIFJlZjxBUEk6OkFycmF5
PiBndWVzc2VzKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQppbmRleCA5MjAwZWI2
MDhiM2ExNTFmNzZjMDg2OGRjNDg4MzBhZmZkYzQ3MWZlLi5mNjA4YzhkYjVjNjA2NTMwY2FhNTk2
ZWQ2YWI1ZTk1ZDZjZWRlNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvVGV4dENoZWNrZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Rl
eHRDaGVja2VySU9TLm1tCkBAIC0yMTIsOCArMjEyLDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcg
c3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRp
b24gPSBtaXNzcGVsbGVkUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSBt
aXNzcGVsbGVkUmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJh
Y3RlclJhbmdlKG1pc3NwZWxsZWRSYW5nZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdURk1v
dmUocmVzdWx0KSk7CiAKICAgICAgICAgb2Zmc2V0U29GYXIgPSBtaXNzcGVsbGVkUmFuZ2UubG9j
YXRpb24gKyBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4IDBjYTEzM2EyYWRjZTQxYTdjZmNmM2EwZDQx
NGFiNGZmYjg0ZWU2MzQuLmFjM2JlZTAwYjE2NTkzYWNmNDU3MWVhOTljMTEwMTZjYzE0ZjQ1MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAg
LTMzNCwyMiArMzM0LDIwIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2Vy
OjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9y
dGhvZ3JhcGh5Ok5VTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkQ291bnQ6TlVMTF07CiAgICAgZm9yIChO
U1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7
Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwog
ICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCBy
ZXN1bHRUeXBlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90
Rm91bmQpOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAg
IEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAg
ICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBh
dXRvIHJlc3VsdFJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5n
ZSk7CiAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7
CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVz
dWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJl
c3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hl
Y2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAg
ICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRl
dGFpbHMgPSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVz
dWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0
LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVu
Z3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVz
dWx0UmFuZ2U7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwg
aW4gZGV0YWlscykgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAg
ICAgICAgICAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC0zNTgsOCArMzU2LDcgQEAg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5T
UmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAg
ICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAg
ICAgICBkZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgZGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAg
ICAgICAgICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9i
amVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5T
QXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNv
cnJlY3Rpb25zXTsKICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVz
c2VzKQpAQCAtMzcwLDM2ICszNjcsMzEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4
dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hl
Y2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29s
dXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAg
IH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVj
a2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAg
ICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVu
dFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9
IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2lu
Z1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNr
aW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3Vs
dFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0
IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7
CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAg
ICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAg
IHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQu
cmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtp
bmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICB9CkBAIC00NDMsMTcgKzQzNSwyMCBAQCB2b2lkIFRleHRD
aGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKFNwZWxsRG9jdW1lbnRU
YWcsIGNvbnN0IFN0cgogCiB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhy
YXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewotICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwu
Z3Vlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBOU1N0cmluZyAqZ3Vlc3MgPSBncmFtbWFy
RGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3Nd
OworICAgIGF1dG8gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7
CisgICAgICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3Jy
ZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQogCi0gICAgTlNSYW5nZSBn
cmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFy
RGV0YWlsLmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcgKmdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBn
cmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PiBncmFtbWFyRGV0YWlsRGljdCA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwg
TlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNj
cmlwdGlvbiwgY29ycmVjdGlvbnMuZ2V0KCksIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdKTsK
KyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRl
c2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGV0YWlsID0gQHsKKyAgICAgICAgTlNHcmFt
bWFyUmFuZ2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwK
KyAgICAgICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywK
KyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucy5nZXQoKSwKKyAgICB9
OwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxs
aW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFy
RGV0YWlsRGljdC5nZXQoKV07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNr
ZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNl
IGRldGFpbDpkZXRhaWxdOwogfQogCiB2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29y
ZChTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3Ry
aW5nPiYgZ3Vlc3NlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCA5Y2U1ZGJhYzExNGE0OTVmZWE0YTllOTUzZDliZmZjODFlYmQ3
NmNkLi41MmJiN2M3NjNkMDBiMDAzZDgxY2QwZThiMTlmOTg5ZmNhYjFiYTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcApAQCAtNjUsOCArNjUsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCmluZGV4IGYxOGNhYTcyY2Jk
OTY1MzE3NTVlOTJlY2ZiMjBlZjRkYjhjYTUzYWYuLjcwYTM5MDM1ZDU4YzgxMmMyY2IwMTMxOWY1
YTE2YzZmYTU5ZjVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHku
bW0KQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3gKICAgICBUZXh0SXRl
cmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdldCgpLCBz
ZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKICAgICBzZWxlY3Rpb25Mb2NhdGlv
biArPSBvZmZzZXQ7CiAKLSAgICByZXR1cm4ge3sgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChyb290LCBzZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9u
TG9jYXRpb24gfX07CisgICAgcmV0dXJuIHt7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyb290LCBz
ZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07CiB9CiAKIHZv
aWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlv
bihBdHRyaWJ1dGVkU3RyaW5nIGFubm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25PZmZz
ZXQsIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9u
LCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKQpAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVj
dGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFuCiAKICAgICAgICAgICAgICAgICBzaXplX3Qgc2VsZWN0
aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9mZnNldDsK
ICAgICAgICAgICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Mb2NhdGlv
blRvUmVzdG9yZSA+IGxvY2F0aW9uSW5Sb290ICsgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9u
ICsgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
IHNlbGVjdGlvblRvUmVzdG9yZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgocm9vdCwgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDApOworICAgICAgICAgICAg
ICAgICAgICBhdXRvIHNlbGVjdGlvblRvUmVzdG9yZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShy
b290LCBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSwgMCk7CiAgICAgICAgICAgICAgICAgICAg
IGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb25Ub1Jlc3RvcmUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmli
dXRlZFN0cmluZyBhbgogICAgIH0KIAogICAgIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGVudW1l
cmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIFthbm5vdGF0ZWRTdHJpbmcuc3Ry
aW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5PE5TQXR0cmli
dXRlZFN0cmluZ0tleSwgaWQ+ICphdHRycywgTlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwgQk9PTCAq
c3RvcCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRyaWJ1
dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgYXV0byBh
dHRyaWJ1dGVDb3JlUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgbG9jYXRpb25J
blJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsK
ICAgICAgICAgaWYgKCFhdHRyaWJ1dGVDb3JlUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTE5OSw3ICsxOTksNyBAQCBBdHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q2hlY2tpbmdEYXRhID0gV1RG
OjpnZXQ8RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFya2VyLT5k
YXRhKCkpOwotICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOworICAgICAg
ICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjcmVhdGVMaXZlUmFu
Z2UoY3VycmVudFRleHRSYW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRP
ZmZzZXQoKSAtIG1hcmtlci0+c3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgICAgIHNpemVfdCBz
dWJyYW5nZUxvY2F0aW9uOwogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNzVlZjUy
YTEzYjRhZmFhOGUwOWRjNTEzZDQyOGQzMTIyZTFmMDM2Li5iOTkwZjZiMzIyOTZmMDNjYmJkMDA4
YmE1NDFhY2Q3ZmRjMmUwYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNTQyOCw3ICs1NDI4LDcgQEAgdm9pZCBXZWJQYWdlOjpkZWxldGVT
dXJyb3VuZGluZyhpbnQ2NF90IG9mZnNldCwgdW5zaWduZWQgY2hhcmFjdGVyQ291bnQpCiAgICAg
YXV0byBzdXJyb3VuZGluZ1JhbmdlID0gbWFrZVJhbmdlKHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQo
c2VsZWN0aW9uU3RhcnQpLCBzZWxlY3Rpb25TdGFydCk7CiAgICAgYXV0byBjdXJzb3JQb3NpdGlv
biA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKTsKICAgICBhdXRv
JiByb290Tm9kZSA9IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3Bl
KCkucm9vdE5vZGUoKTsKLSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9uICsgb2Zm
c2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZSgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0LCBjaGFyYWN0
ZXJDb3VudCk7CiAgICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IGE4N2RiZWY1NDcyMDcxNTE3NWNlNzI1NjRjNmE4ZjVhYWMxNDFjN2IuLmY5NTJkMTY1
YmI1ODU2MmMyZjhiZjI0MjZkOWM3OWEwZDZkZTNiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MDY2LDE4ICs0MDY2
LDIwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9j
YXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAgc2l6ZV90IHNlbGVjdGlvbkxlbmd0
aDsKICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3Qs
IHJhbmdlLmdldCgpLCBzZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKIAotICAg
IENoZWNrZWRJbnQ2NCBuZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNlbGVjdGlvbkxvY2F0aW9uIH07
Ci0gICAgQ2hlY2tlZEludDY0IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9
OwotICAgIG5ld1NlbGVjdGlvbkxvY2F0aW9uICs9IGxvY2F0aW9uRGVsdGE7Ci0gICAgbmV3U2Vs
ZWN0aW9uTGVuZ3RoICs9IGxlbmd0aERlbHRhOworICAgIGF1dG8gbmV3U2VsZWN0aW9uTG9jYXRp
b24gPSBjaGVja2VkU3VtPENoYXJhY3RlckNvdW50PihzZWxlY3Rpb25Mb2NhdGlvbiwgbG9jYXRp
b25EZWx0YSk7CisgICAgYXV0byBuZXdTZWxlY3Rpb25MZW5ndGggPSBjaGVja2VkU3VtPENoYXJh
Y3RlckNvdW50PihzZWxlY3Rpb25MZW5ndGgsIGxlbmd0aERlbHRhKTsKIAogICAgIGlmIChuZXdT
ZWxlY3Rpb25Mb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3U2VsZWN0aW9uTGVuZ3RoLmhh
c092ZXJmbG93ZWQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdl
dCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpKQotICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OworICAgIENoYXJhY3RlclJhbmdlIG5ld1NlbGVjdGlvblJhbmdlOworICAgIG5ld1NlbGVjdGlv
blJhbmdlLmxvY2F0aW9uID0gbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCk7CisgICAg
bmV3U2VsZWN0aW9uUmFuZ2UubGVuZ3RoID0gbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgp
OworCisgICAgYXV0byByZXNvbHZlZFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlvblJhbmdlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmVz
b2x2ZWRSYW5nZSkucHRyKCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CkBAIC00MTkyLDE2ICs0MTk0LDE1IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVz
dERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVx
dWVzCiAgICAgICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiByb290Q29udGFpbmVyTm9kZSA9IHJv
b3ROb2RlLT5pc0NvbnRhaW5lck5vZGUoKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHJvb3RO
b2RlLmdldCgpKSA6IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9vdENvbnRhaW5lck5vZGUuZ2V0KCks
IHJhbmdlT2ZJbnRlcmVzdC5nZXQoKSwgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24sIHJhbmdlT2ZJ
bnRlcmVzdExlbmd0aCk7CiAKLSAgICAgICAgQ2hlY2tlZFNpemUgbWlkcG9pbnRMb2NhdGlvbiB7
IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CisgICAgICAgIENoZWNrZWQ8Q2hhcmFjdGVyQ291
bnQsIFJlY29yZE92ZXJmbG93PiBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9j
YXRpb24gfTsKICAgICAgICAgbWlkcG9pbnRMb2NhdGlvbiArPSByYW5nZU9mSW50ZXJlc3RMZW5n
dGggLyAyOwogICAgICAgICBpZiAobWlkcG9pbnRMb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pZHBvaW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCBtaWRw
b2ludExvY2F0aW9uLnVuc2FmZUdldCgpLCAwKTsKKyAgICAgICAgYXV0byBtaWRwb2ludCA9IGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290Q29udGFpbmVyTm9kZSksIG1pZHBvaW50TG9j
YXRpb24udW5zYWZlR2V0KCkpKTsKIAotICAgICAgICBhdXRvIG1pZHBvaW50ID0gbWlkcG9pbnRS
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5T
ZWxlY3Rpb24gPSBzdGFydE9mV29yZChtaWRwb2ludCk7CiAgICAgICAgIGlmIChzdGFydE9mUmFu
Z2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPCByYW5nZU9mSW50ZXJlc3RTdGFydCkgewogICAgICAg
ICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gZW5kT2ZXb3JkKG1pZHBv
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjYTQ3OTMxMDU0YjgwMjYyNjg3M2UzZjUzZmI1
ZWUzMDU0ZTk4NTEzLi4zYjk0NjMwNGRmYjc1MjExNDEzZTlmOGQxMTA3ZjZmODc2NTk5ZDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC04NjUsMTIgKzg2NSwxMSBAQCBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1Zp
ZXcgc3RyaQogCiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1ttX3dlYlZpZXcgX1VJ
S2l0RGVsZWdhdGVGb3J3YXJkZXJdIGNoZWNrU3BlbGxpbmdPZlN0cmluZzpzdHJpbmcuY3JlYXRl
TlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKICAgICBmb3IgKE5TVmFsdWUgKmluY29t
aW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJh
bmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NFUlQocmVzdWx0
UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiByZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsK
KyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxlbmd0
aCA+IDApOwogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1
bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJS
YW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICB9CiAKQEAgLTkzOSwxMSArOTM4LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJE
ZXRhaWwKICAgICAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgICAgICBOU1Zh
bHVlICpkZXRhaWxSYW5nZUFzTlNWYWx1ZSA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1h
clJhbmdlXTsKICAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlKTsKLSAgICAgICAg
TlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVd
OwotICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsK
LSAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgIGdyYW1t
YXJEZXRhaWwubG9jYXRpb24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICBncmFt
bWFyRGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICBBU1NFUlQo
ZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsK
KyAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubGVuZ3RoID4g
MCk7CisgICAgICAgIGdyYW1tYXJEZXRhaWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRl
dGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUpOwogICAgICAgICBncmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbiA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlw
dGlvbl07CiAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbZGV0YWlsIG9iamVjdEZvcktleTpO
U0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1
ZXNzZXMpCkBAIC05NTcsMjIgKzk1NCwyMCBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAg
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKICAgICBmb3IgKE5TVGV4dENo
ZWNraW5nUmVzdWx0ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAg
ICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAg
IE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5
cGVdOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7
Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJU
KGluY29taW5nUmVzdWx0LnJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBB
U1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVz
dWx0UmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAg
ICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hl
Y2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9
IFtpbmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRp
b24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBy
ZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5n
ZTsKICAgICAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRh
aWxzKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAg
ICAgICAgICBHcmFtbWFyRGV0YWlsIGRldGFpbDsKQEAgLTk4MSw4ICs5NzYsNyBAQCBzdGF0aWMg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMs
IE9wdGlvblNldDxUZXh0QwogICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9
IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRh
aWwubG9jYXRpb24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRl
dGFpbC5sZW5ndGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRh
aWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAg
ICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9y
S2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAq
Z3Vlc3NlcyA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlv
bnNdOwogICAgICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBA
IC05OTMsMzYgKzk4NywzMSBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29y
ZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgICAgICB9IGVs
c2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlOjpMaW5rOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAg
ICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlw
ZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlOjpRdW90ZTsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5n
XTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMu
Y29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVj
a2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6OkRhc2g7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBl
cy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7
CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24g
JiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9
IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5n
UmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJl
c3VsdCk7CiAgICAgICAgIH0KQEAgLTEwNDksMTYgKzEwMzgsMTggQEAgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdW
aWV3IHN0cmkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmIGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGNvcnJlY3Rpb25z
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Z3JhbW1hckRldGFpbC5ndWVzc2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBn
dWVzcyA9IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAgICAgICAgW2NvcnJlY3Rpb25zIGFk
ZE9iamVjdDpndWVzc107CisgICAgTlNNdXRhYmxlQXJyYXkgKmNvcnJlY3Rpb25zID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5n
dWVzc2VzKSB7CisgICAgICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAg
ICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQotICAgIE5T
UmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwg
Z3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5nKiBncmFtbWFyVXNlckRlc2NyaXB0
aW9uID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgTlNEaWN0aW9uYXJ5KiBn
cmFtbWFyRGV0YWlsRGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5n
ZSwgZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3Jy
ZWN0aW9ucywgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF07Ci0gICAgCi0gICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1h
clN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07CisgICAg
TlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbjsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeworICAgICAgICBOU0dyYW1t
YXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAor
ICAgICAgICBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAor
ICAgICAgICBOU0dyYW1tYXJDb3JyZWN0aW9ucyA6IGNvcnJlY3Rpb25zLAorICAgIH07CisgICAg
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxX
aXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkaWN0aW9uYXJ5XTsKIH0K
IAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdv
cmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKQEAgLTExOTQsNyArMTE4NSw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2Vz
KFRleHRDaGVja2luZ1Jlc3VsdCBhCiAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhU
TUxWaWV3IGNsYXNzXV0pIHsKICAgICAgICAgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGggPSBh
Y2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5sZW5ndGgoKTsKICAgICAgICAgaWYgKHJlcGxh
Y2VtZW50TGVuZ3RoID4gMCkgewotICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0g
TlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3Ro
KTsKKyAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2Vw
dGVkQ2FuZGlkYXRlLnJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgICAg
ICAgICBOU1JhbmdlIHNvZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShyZXBs
YWNlZFJhbmdlKSAtIDEsIDEpOwogICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJl
cGxhY2VtZW50LmVuZHNXaXRoKCIgIikpCiAgICAgICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAq
KXZpZXcgX3NldFNvZnRTcGFjZVJhbmdlOnNvZnRTcGFjZVJhbmdlXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGVkNWVkMjA0MDI5NTU3OGViZTk5
ZWI4MDc3NDJkN2UwNmIwNDllMzAuLmRkODdhZDQ5YTM1YTgyZTMyZGYyYmNlY2Y1ZGUyZmU3NWZi
Njg0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtODIxLDEwICs4MjEsOSBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiAKIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2Nv
bnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJh
bmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9j
YXRpb24gPiBJTlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjptYWtlQ2hhcmFjdGVy
UmFuZ2UobnNyYW5nZSk7CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgaWYgKG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsg
bnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9N
QVggLSBuc3JhbmdlLmxvY2F0aW9uOwogCiAgICAgaWYgKHJhbmdlSXNSZWxhdGl2ZVRvID09IFdl
YlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRp
Y2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBvbmx5IGNhbGxlZCBieSBp
bnB1dCBtZXRob2RzIHRoYXQKQEAgLTgzNiw3ICs4MzUsNyBAQCAtIChSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2
ZVRvOgogICAgICAgICBhdXRvKiBlbGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0
aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlm
ICghZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50
LCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqZWxlbWVudCksICpyYW5nZSkpOwogICAgIH0KIAogICAgIEFTU0VSVChyYW5nZUlz
UmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKQEAgLTg0NCwx
MCArODQzLDkgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6
KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICBhdXRvIHBhcmFncmFwaFN0
YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChfcHJpdmF0ZS0+Y29yZUZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICgh
cGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHJvb3RO
b2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsK
IAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50
KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBw
YXJhZ3JhcGhTdGFydEluZGV4ICsgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwor
ICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocGFyYWdy
YXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOworICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgqcGFy
YWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCAqcmFuZ2UpKTsKIH0KIAogLSAoRE9N
UmFuZ2UgKilfY29udmVydE5TUmFuZ2VUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZGRmMjNlY2YzY2Jh
NWI5YmM5ZWE5ZjI2ZWVkY2YwMzc5OTU2ODhjLi42ZjkxZWZiOWE5MDFhZTFjY2JhZTU2YzliMmZk
OTljMTQwOTk1MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC03Mjc4LDEyICs3Mjc4LDkgQEAgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeXBlIHR5cGUKIAogc3Rh
dGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAg
IE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBuc1Jlc3VsdC5yYW5nZTsKLQogICAgIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNr
aW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgIHJlc3VsdC5yYW5nZSA9ICpXZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1
bHQucmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50
U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGQ3MDUzZWMzMjA0Y2FhZWUwZTQ5YTgxZTE1YmUxMTI4MzQ5OGNkYzQuLjE3NWEw
NGI5ZGJjZTA4MzAxMzA1ZmEzOWY0NTkwNzE1MThkZDZkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCkBAIC03NzYxLDIzICs3NzYxLDIxIEBAIEhSRVNVTFQgV2ViVmlldzo6Zmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VGb3JUZXN0aW5nKFVJTlQgbG9jYXRpb24sIFVJTlQgbGVu
Z3RoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBJbnRS
ZWN0IHJlc3VsdEludFJlY3Q7Ci0gICAgcmVzdWx0SW50UmVjdC5zZXRMb2NhdGlvbihJbnRQb2lu
dCgwLCAwKSk7Ci0gICAgcmVzdWx0SW50UmVjdC5zZXRTaXplKEludFNpemUoMCwgMCkpOwotICAg
IAotICAgIGlmIChsb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0g
ICAgaWYgKGxlbmd0aCA+IElOVF9NQVggfHwgbG9jYXRpb24gKyBsZW5ndGggPiBJTlRfTUFYKQot
ICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gbG9jYXRpb247Ci0gICAgICAgIAotICAgIEZyYW1l
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1l
bnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXV0cm4gRV9GQUlMOworCisgICAg
Q2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2U7CisgICAgY2hhcmFjdGVyUmFuZ2UubG9jYXRp
b24gPSBsb2NhdGlvbjsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sZW5ndGggPSBsZW5ndGg7CisgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKmVsZW1lbnQpLCBjaGFyYWN0ZXJSYW5nZSk7CiAKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICAKKwogICAgIEludFJlY3QgcmVjdCA9IGZy
YW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICByZXN1bHRJ
bnRSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOworICAgIEludFJl
Y3QgcmVzdWx0SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsK
IAogICAgIHJlc3VsdEludFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA4N2JhYmExM2E2OTJjYWY0MzY0ZjE5NTE1MTMxYzc1NmU1MjNjOWFmLi5lNmU4ZWIwYTIyZWE3
YzZmZjUzZGExNWE5N2Q5OTJmNmQ3MWE4MTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjAt
MDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDIwLTAzLTI3ICBKYXNv
biBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIERlYnVn
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxheS5odG1sIGlzIGZs
YWt5IGNyYXNoaW5nLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9m
LWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3
YjljNTg3MmVmZTFkZTcyYy4uMjM0ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYx
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1m
b3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRo
aXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdp
dmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2Vy
Rm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAy
XjMxCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1h
cmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNl
CitQQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5
OTk5OTk5OTk5OSkpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC5odG1sCmluZGV4IDBhYjJmMTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEu
LjZhYzdmOWY2NzJjYjY4NTE1ZTA3YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1i
b3VuZHMtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwx
MiBAQCB0ZXh0CiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0
aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXgg
b3V0IG9mIGJvdW5kcyIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4
dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVy
IHRoYW4gMl4zMSIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAg
ICAgICB2YXIgaXRlbTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
LSAgICAgICAgc2hvdWxkQmVGYWxzZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4
dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5
OTk5OTk5OTk5KSkiKTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hh
cmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2Qz
Y2M2NDQ5NzQzYmRiNTZlMDM5YTIuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2
NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3Rl
ZC50eHQKQEAgLTEsMjAgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDIgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgs
NTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4
LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwx
OAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJl
dCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhl
IGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQg
b2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTog
KDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4
LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rl
cjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcy
LDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgw
LDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIs
NDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2
NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2UtcGxhaW4uaHRtbAppbmRleCA3OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2
MGRlLi42MmNkYzliODI2Zjk2NWY4NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1wbGFpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIu
ZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFy
Z2luOiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBt
YXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1Ngog
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQpAQCAtMjEsNDAgKzE1LDQyIEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJ
aXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNv
bnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24g
bG9nUmVjdChjb21tZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1l
bnQgKyAiOiAoIiArIHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICAr
IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxl
bmd0aCkgKyAiKSIpOworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJ
dHJ5IHsKLQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2Fy
ZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJh
Y3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAx
KSk7IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAt
Ii0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5
NjcyOTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUg
Zmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJl
Y3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDEwMDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJ
CXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAor
CQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgi
Y2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2Fy
ZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUg
ZW5kIG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwg
MSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFz
dCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAw
KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxp
bmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJ
CWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5
NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQi
LCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIs
IDEwMDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5k
IiwgNywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQi
LCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAi
ICsgZXguZGVzY3JpcHRpb24pOwogCQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgicCIpOwogCQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2Fn
ZXMpOwogCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2Ug
ewogCQlkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRl
eCBhY2ZkNTJmMGI5NDhhNjUzZmMwNmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4
MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+
IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQg
PiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1
NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgs
MTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgK
LTEwLDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0w
LDAsMCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2Fy
ZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0
IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwx
KSwgKDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCits
YXN0IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwx
MDApLCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2Zp
cnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5
NSksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3Rl
cjogKDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1zdHlsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3
MWNkMmZiMGRiYTYzMGYyMWUuLmU1YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZh
OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFj
L2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsx
LDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0
eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMz
ICsxNiwzNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3Nh
Z2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29t
bWVudCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIg
KyBzdGFydCArICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIiki
KTsKKyAgICB9CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQog
CQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLnNldE1hcmtlZFRleHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQg
dGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYs
IDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8v
IGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1
dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEw
MCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUp
KTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3Qg
Y2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAs
IDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9n
UmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQg
YWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQg
dGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9m
IGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJ
CQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFy
YWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJ
CWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAw
LCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1Jl
Y3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5
NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAw
KTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAs
IDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywg
MSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0
Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXgu
ZGVzY3JpcHRpb24pOwogCQl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggOWIzZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNl
MC4uYzU1MzdlNDdiNmY5OTM1OGFlNTFjZTZkNzAwMjgxYjdhY2QwODc3YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODQ5LDcgKzg0OSwx
MCBAQCB3ZWJraXQub3JnL2IvMjAzNTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1zaXppbmcvZHluYW1pYy1hdmFpbAogIyBTdGFsZS13aGlsZS1yZXZhbGlkYXRlIGlz
IG5vdCBzdXBwb3J0ZWQgb24gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzIwNTMx
NCBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KKyMgUmVzdWx0cyBhcmUgZ29vZCBvbiBDYXRhbGlu
YSBhbmQgbmV3ZXIuIERlbGV0ZSB0aGVzZSBsaW5lcyB3aGVuIHdlIHN0b3Agc3VwcG9ydGluZyB0
aGVzZSBvbGRlciB2ZXJzaW9ucyBvZiBtYWNPUy4KK1sgU2llcnJhIF0gZWRpdGluZy9tYWMvaW5w
dXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KK1sg
SGlnaFNpZXJyYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdl
LXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIE1vamF2ZSBdIGVkaXRpbmcvbWFjL2lucHV0L2Zp
cnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9y
ZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIApAQCAtOTYzLDQgKzk2
Niw0IEBAIHdlYmtpdC5vcmcvYi8yMDk0OTQgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLW5vLW1v
dXNlbW92ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwOTU2MCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVu
dC1wcm9ncmVzcy5odG0gWyBQYXNzIENyYXNoIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA5
NjIxIGZhc3QvbG9hZGVyL2NoaWxkLWZyYW1lLWFkZC1hZnRlci1iYWNrLWZvcndhcmQuaHRtbCBb
IFBhc3MgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9i
LzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGMwMWIxOTIzZGNkYTY3NTQ2MGNhYjdjNjliNzA4ZDE2NGY0YzI1
OTYuLjVlNzMxMzhiOTYxZWRhMDY5MmExMWQyZTE1MzE2MDI3ZjRmNjI1ZTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIyMyw5ICsyMjMs
OSBAQCB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL21vdmUtY3Vyc29y
LXRvLWJlZ2lubmluZy1vZi1hdXRvY29ycmVjdAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L21hYy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3Jy
ZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LWNhbmRpZGF0ZS1hbGxvd3MtYXV0b2Nv
cnJlY3Qtb24tbmV4dC13b3JkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYg
ZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2Nl
cHRhbmNlLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJr
ZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJs
YXBwaW5nLWxpbmVzLWxhcmdlLWZvbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1o
eXBoZW4uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLWxhcmdlLWZv
bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGZh
c3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gtYnQtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGZhc3Qvd3JpdGluZy1t
b2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKQEAgLTEwNzIsNCArMTA3Miw0IEBAIHdlYmtpdC5vcmcvYi8yMDk2MjIgaHR0
cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1yZWNvbm5lY3QtZHVyaW5nLW5hdmlnYXRl
CiAKIHdlYmtpdC5vcmcvYi8yMDk2MjQgWyBSZWxlYXNlIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvZml4ZWQvZm91ci1iYXJzLXpvb21lZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzIwOTY3MiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctZmV0Y2guaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIwOTY3MiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbCBbIFBhc3MgRmFp
bHVyZSBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGMzNzA2YzE5NWMyNGZlOTA2OTNhMmJhY2I4MjczYTI1Y2RmYjU2YTAuLjVlOTZiNzk5Zjk5
NDIzYzAzZjExYmE4OGY0OTA1Zjc2ZTNhNjkxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcyLDcgKzE4NzIsNyBAQCB3ZWJraXQub3JnL2IvMjA0
ODIwIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci02Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA0ODIw
IFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci05Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMv
c2VsZWN0aW9uL2NvbnRleHQtbWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIEZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2VsZWN0aW9u
L2NvbnRleHQtbWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8yMDQyNDcgWyBDYXRhbGluYSBdIHdlYmF1ZGlvL3NpbGVuY2UtYWZ0ZXIt
cGxheWJhY2suaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9p
bnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRjYzI2ZDRiMmQy
NjRjMmVlNWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjQg
KzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpX
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9m
ICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBv
ZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLTEyMzQ1Ngot
MTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTEwLDU3
Miw4LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0xMCw1NzIsNTEs
MTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAsMCwwLDAKLTAs
MCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2UwNzQwMTAxMDYw
ZWNjYzQ5MjA1NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRmNWMzZDMyYzQx
MjFlMDQyNzQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3RpbmcgdGV4dCB3
aXRoIGJyIGVsZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwgMTAwKTogaGVs
bG8KICg2LCAxKToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVu
ZGVmaW5lZAorKDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAzOWYxNTMxM2Y0
ZGM0MmExNDRlZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3OGYzMmJkZjVl
ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0
bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAg
ICAgICAgICAgbG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRl
ZFN1YnN0cmluZ0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygi
KDYsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDYsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAiICsgdGV4dElu
cHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEpLnN0cmluZygp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAv
LyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDAp
KTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiAr
IHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDAp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDAp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUzZjllNTZlMTdl
YTE3MzU4ZWExYzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNlMTIxZTQ2ODNi
ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4
cGVjdGVkLnR4dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAoMTI8Yj4zPGk+
NDU2PC9pPjwvYj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAyKTogNgotKDEw
MCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKTogCisoMTAw
LCAxMDApOiAKIAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KQog
dG90YWwgbGVuZ3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2Uu
aHRtbAppbmRleCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODliMGMzLi5jZjZj
OTExZDRiNTc1YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFu
Z2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0
ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5IHsgbWFy
Z2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAsIDEwMCkuc3Ry
aW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwogICAgICAgICAg
ICAgbG9nKCIoNSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJp
bmdGcm9tUmFuZ2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTog
IiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAs
IDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEw
MCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwg
MCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2Uo
MTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEw
MCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBs
b2coIlxuVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KSIpOwogICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZuYnNwOyZuYnNw
OzMgJm5ic3A7Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394782</attachid>
            <date>2020-03-27 19:27:19 -0700</date>
            <delta_ts>2020-03-28 09:24:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200327192718.patch</filename>
            <type>text/plain</type>
            <size>166763</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdiZmZkNjliNzczM2Yy
YTExNzU2Mzk1ZmY2ZThkY2QwZWM0YTNmYi4uNDZmNzY5OGI2MjFjZDI3ZmU0MGQ0ODhhODhkMWQ3
YjczYmE1ZTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTY1NzcpOiBQcmV2aW91
cyBwYWdlIGNvbnRpbnVlcyB0byBkaXNwbGF5IGFmdGVyIG5hdmlnYXRpbmcgdG8gbWVkaWEgZG9j
dW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNTQ3MDQwYTJlYjkyOWEyMjRlMGE5YzcyYzE1YTczZDZhNDQ2NTk3
Yi4uMTZjZmRlMDUxNTlhNmZjYjM1NTQyOWM4ZDMxYjc0OWFjNThlOWRiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
IG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKIDIwMjAtMDMtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBEZWxheSBwcm9jZXNzIHN1c3BlbnNpb24gZm9yIGEgd2hpbGUgYWZ0ZXIgbG9hZGlu
ZyBhbiBhcHAgbGluawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiZDlkYmNhZGQ2
YTFhY2U0YWQ4M2U0MzRkZjhkZjU0Yzc5MDE3N2YuLmM0ZDYzNjhhNjc5YWI4NWFmOTA5YjljZTcz
MjEzZjhkMTdmYTQ1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBs
aXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMjAt
MDMtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgc2hvdWxkIGF2b2lkIHJlYWRpbmcgVVJMIHN0cmluZ3Mg
ZnJvbSB0aGUgcGFzdGVib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWFkNTM3ODUzMjRiYjM0
YzBkZGI5ZGNjMTE3MGM4Y2RkNGEzNjZhOC4uNzk3ZDNjMTM5NDgzM2FkODhiNzUzNGRkMjRlM2Rm
ZTY3NjE5ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00ODcsNiArNDg3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMuaAogCisgICAgZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCiAgICAgZWRp
dGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25IaWdo
bGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxpbmUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhM2M0YjRk
ZjE5NDI5Mzk0YWYzODNmZjI1MGY2MDI1OTk2Nzk0MmIuLmM1OTBlMTVlYjBmZjBkNzFjMzk2ODM0
NmM3ZTU3YjY0ZDcwNTcyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzQsNiArMjczNCw3IEBACiAJCTkzRjE5QjE3MDgy
NDVFNTkwMDFFOUFCQyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxp
YmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJH
TExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oICovOyB9
OwogCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDVCRjEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi87IH07CisJCTkzRjJDQzkzMjQy
N0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJh
Y3RlclJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2RjFFQjEyN0Y3
MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJOTNGOTI1NDMwRjdF
RjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcy
MDA4NTQwNjQgLyogSlNDb21tZW50LmggKi87IH07CkBAIC0xMDkzNCw2ICsxMDkzNSw3IEBACiAJ
CTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHTExvc2VDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRjEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4
dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29u
dGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUIxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTksNiArMjE3NjEsNyBAQAogCQkJCTkzMzA5RDhDMDk5
RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi8sCiAJCQkJRjREOTgx
N0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8sCiAJCQkJ
RjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovLAor
CQkJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovLAogCQkJ
CTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywK
IAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
ICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjk2NDIsNiArMjk2NDUsNyBAQAogCQkJCUZEMzE2MDAyMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
MDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ODMxMDc1Y2QzMTFkOTUyYzJiMTg2NTliZmUzNDg1NGVhMTdjNzViLi5kNTYyOTA5ZmZkMjFkNTg0
NmEzNzQ4YTQ3NGQ2ZTM5Y2VhOGE0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjMzOCwxMSArMjMzOCwxMCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKWxpdmVSYW5nZQogCiAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJ
TlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFuZ2Uu
bGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJ
TlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0
aW9uOwotICAgICAgICAKKwogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
d2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNlbnRy
YXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KICAgICAvLyBXZSBo
YXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUg
RE9NIGZvciB0aG9zZSBpcyBub3QKQEAgLTIzNTIsNyArMjM1MSw5IEBAIC0gKFJlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50KiBz
ZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksICpyYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5lMTNlMzNjOGZhNmQ4MmI2Zjhi
NmEyMzg0ZDk1YThiZjQ4MTgwYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQuLjM2MmQ3NDc0
MzQ5ZTRiY2Y4YjM2MzljZGY0MTJjYTc5YTNjOGIwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsKIAorc3RydWN0
IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAgICB+
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNv
bnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1h
cmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVy
cHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAgIHZvaWQgYWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOworICAgIHZvaWQg
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2VkQ29udGVudE1h
cmtlcihSYW5nZSYpOwogCkBAIC0xMDcsNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgYWRkTWFya2VyKE5vZGUmLCBjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYpOworICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcj4gTWFya2Vy
TGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8
TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOTkzZTk1MWYx
YTUwYTRkYmE5ZjkzYzFlODFmZTVlMmIxN2FlN2Y5OC4uYzI4ZTcwNmIxMDU2ZjZlYTVlOTA0OWQw
MGE0NjJjZDNhNWExMjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIyNiw3ICsyMjYsNyBA
QCBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiAv
LyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0byAibWFrZSIgaW5zdGVhZCBvZiAiY3Jl
YXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0IGFs
bG9jYXRlIGhlYXAgb2JqZWN0cy4KIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKLVBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CitXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25z
dCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBiNGZlMmI4
NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhLi5hNDMzOGFiMjBmYzUyZjJmZjI3ZGNi
NWI3MDIwOGE3ZjdiMzA2MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTUz
LDQgKzUzLDIzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3Qg
U2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9
PSBiLmVuZDsKIH0KIAorLy8gRklYTUU6IE5vZGU6OmlzQ2hhcmFjdGVyRGF0YSBzaG91bGQgdXNl
IGFuIGFsZ29yaXRobSBsaWtlIHRoaXMsIHNpbmNlIEknbSBhc3N1bWluZyBpdCdzIGZhc3RlciB0
aGFuIHRoZSBpc0NoYXJhY3RlckRhdGFOb2RlIHZpcnR1YWwgY2FsbCBpbiBtb3N0IGNhc2VzLgor
c3RhdGljIGJvb2wgZmFzdElzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKQoreworICAg
IHJldHVybiAhbm9kZS5pc0NvbnRhaW5lck5vZGUoKSAmJiAobm9kZS5pc1RleHROb2RlKCkgfHwg
bm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgTm9kZTo6bGVuZ3RoIHNpbmNlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBjYWxscyB0aGlzIGEg
bm9kZSdzIGxlbmd0aC4KK3N0YXRpYyB1bnNpZ25lZCBsZW5ndGgoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICBpZiAoZmFzdElzQ2hhcmFjdGVyRGF0YShub2RlKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PENoYXJhY3RlckRhdGE+KG5vZGUpLmxlbmd0aCgpOworICAgIHJldHVybiBub2RlLmNv
dW50Q2hpbGROb2RlcygpOworfQorCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4geyB7IG5vZGUsIDAgfSwgeyBub2Rl
LCBsZW5ndGgobm9kZSkgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4
IGFjZDk4NTVhODkxOWMzNzZlMTU3ZDFjZWQ5YzVkZWVkN2ExOTU3MjQuLmJkMGUxYzRlY2QwYTAx
ODQzN2YxOTkwNDZlNTU3ZGNhMmNjMjcxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC01MSw2ICs1MSw5IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgU2ltcGxlUmFuZ2UoY29u
c3QgUmVmPFJhbmdlPiYpOwogfTsKIAorU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoTm9kZSYpOworCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2Um
LCBjb25zdCBTaW1wbGVSYW5nZSYpOwogCiBpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdl
KGNvbnN0IFJlZjxSYW5nZT4mIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZWJkNGNhYjMyNmYyYzA5NzU1
NDBjYjFkNmY5ZTdhMTIyNzliMjk4OC4uMTI2ODEzYzZkZDBiM2I3OGRkYmQzMjJjMzEzMzRlNjg4
MDZmOThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC01OTksMTcgKzU5OSwxOCBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYg
cmFuZ2UsCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlLmNsb25l
UmFuZ2UoKSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgpOwogCiAgICAgLy8gUmVjYWxjdWxhdGUgcHJh
Z3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kIG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMw
NTMxNSBCdWd6aWxsYTogODk1MjYKLSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCh0cmVlU2NvcGVSb290LnB0cigpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSwgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwotICAgIGlmICgh
dXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAgYXV0byB1cGRh
dGVkUGFyYWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiA9IHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHModHJlZVNjb3BlUm9vdCksIHBh
cmFncmFwaE9mZnNldEluVHJlZVNjb3BlKTsKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhFbmRD
b250YWluaW5nQ29ycmVjdGlvbiA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoRW5kQ29u
dGFpbmluZ0NvcnJlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRFbmQodXBkYXRlZFBh
cmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24sIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkp
OworICAgIENoYXJhY3RlckNvdW50IGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCA9
IGFsdGVybmF0aXZlLmxlbmd0aCgpOworICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSh7IHVwZGF0ZWRQYXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3JyZWN0
aW9uLCAqdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uIH0sIHsgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hhcmFjdGVyQ291bnQg
fSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVwbGFjZW1lbnQgc3VjY2VlZGVkLgotICAg
IGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkgIT0gYWx0ZXJuYXRpdmUpCisg
ICAgaWYgKHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlKSAhPSBhbHRlcm5hdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5tYXJrZXJzKCk7CisgICAgYXV0byYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFu
Z2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgZm9yIChhdXRvIG1hcmtlclR5cGUg
OiBtYXJrZXJUeXBlc1RvQWRkKQogICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcihyZXBsYWNlbWVu
dFJhbmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2
ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGJiOTJjMDIxMjFhM2I3YjM5MmY1
MjlmOGFiNzZlNWJlNDYwYjIzNDkuLjA4NGVhNzJjOGFkMjUxMjk2YjQzOTJiNmE5YmM2N2Y1ZWIw
ZDhhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CkBAIC0yODMsMTIgKzI4Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBl
bmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICB7
Ci0gICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBh
dXRvIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZS5nZXQoKSwgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAgICBpZiAoc3RhcnRSYW5nZSAm
JiBlbmRSYW5nZSkKLSAgICAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgfQorICAgIGF1dG8g
c3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFj
dGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHN0YXJ0
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgYXV0byBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpzY29wZSksIGVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucykpOworICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKTsKIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5
U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxYWVkYmZmMzcyYWJm
OWI3ZmQyYTI2ZWYzNzdjZWJjYjVkMmYxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1
Y3QgX05TUmFuZ2UgTlNSYW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXplX3Q7CisKK3N0cnVjdCBDaGFyYWN0ZXJSYW5n
ZSB7CisgICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRpb24geyAwIH07CisgICAgQ2hhcmFjdGVyQ291
bnQgbGVuZ3RoIHsgMCB9OworCisjaWYgVVNFKENGKQorICAgIG9wZXJhdG9yIENGUmFuZ2UoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgb3BlcmF0b3IgTlNSYW5n
ZSgpIGNvbnN0OworI2VuZGlmCit9OworCisjaWYgVVNFKENGKQorT3B0aW9uYWw8Q2hhcmFjdGVy
UmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyNlbmRpZgorCisjaWYgVVNFKEZP
VU5EQVRJT04pCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKE5T
UmFuZ2UpOworI2VuZGlmCisKKy8vIGlubGluZXMKKworI2lmIFVTRShDRikKKworaW5saW5lIENo
YXJhY3RlclJhbmdlOjpvcGVyYXRvciBDRlJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0ZS
YW5nZU1ha2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0
ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFuZ2UgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kIHx8IHJhbmdlLmxvY2F0aW9uID49IDApOwor
ICAgIEFTU0VSVChyYW5nZS5sZW5ndGggPj0gMCk7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uIDwg
MCB8fCByYW5nZS5sZW5ndGggPCAwKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5n
ZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5nZS5sZW5ndGgpIH07
Cit9CisKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pICYmIGRlZmluZWQoX19PQkpDX18p
CisKK2lubGluZSBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgTlNSYW5nZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0
aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlIHJhbmdlKQor
eworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxvY2F0aW9u
LCByYW5nZS5sZW5ndGggfTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5k
ZXggMTU0YmI4N2MzMzFkNDFkOTE2MTYyZTdkOTExMGQ0Nzg4MjdkMWM3MC4uNDZjMjUxNzJlYjJi
ZWRhZjI1ZTc5MzIzZjViZjM4MjM5Y2ExMGFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE0MTUsOCArMTQxNSw4IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgc3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZGVz
dGluYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbnQgc3RhcnRJbmRleCA9IC0x
OwotICAgIGludCBlbmRJbmRleCA9IC0xOworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBz
dGFydEluZGV4OworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBlbmRJbmRleDsKICAgICBi
b29sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCA9IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9u
YWwoKTsKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgIWVuZGluZ1NlbGVjdGlvbigpLmlz
Tm9uZSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1MjgsMTYgKzE1MjgsMTUgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3R5bGVJbkVtcHR5UGFyYWdyYXBoICYmIHNlbGVj
dGlvbklzRW1wdHlQYXJhZ3JhcGgpCiAgICAgICAgIGFwcGx5U3R5bGUoc3R5bGVJbkVtcHR5UGFy
YWdyYXBoLmdldCgpKTsKIAotICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFydEluZGV4
ICE9IC0xKSB7CisgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggJiYgZW5k
SW5kZXgpIHsKICAgICAgICAgLy8gRnJhZ21lbnQgY3JlYXRpb24gKHVzaW5nIGNyZWF0ZU1hcmt1
cCkgaW5jb3JyZWN0bHkgdXNlcyByZWd1bGFyCiAgICAgICAgIC8vIHNwYWNlcyBpbnN0ZWFkIG9m
IG5ic3BzIGZvciBzb21lIHNwYWNlcyB0aGF0IHdlcmUgcmVuZGVyZWQgKDExNDc1KSwgd2hpY2gK
ICAgICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3Zl
IG9wZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAg
ICAvLyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAw
LCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRl
eCArIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkKLSAgICAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LT5zdGFydFBv
c2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGly
ZWN0aW9uYWwpKTsKKyAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJ
dGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAg
ICAgIGF1dG8gZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCks
IGRlc3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bih7IHN0YXJ0LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDYwNDdiOTQ2NDNlM2Q1
ZWE1NzNhZmJkY2Y2NzZiMjAxMWFjODc1ZjcuLmRmYmE3MjFmNWVhZDNhMjAzZWQ2ZjY0YjliYzA1
ZWFkMjM5ZWMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNCwxMiAr
MTExNCwxMCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRo
T2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsK
LSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGlu
ZGV4LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlkYXRlIGluZGljZXMgYmVjYXVz
ZSAKLSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFuZ2UpCisgICAgaWYgKCFzY29w
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyByYW5nZS0+c3RhcnRQb3NpdGlv
bigpIH07CisgICAgQ2hhcmFjdGVyQ291bnQgaW5kZXhBc0NoYXJhY3RlckNvdW50ID0gaW5kZXg7
CisgICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXhB
c0NoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucykpIH07CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQzYWMwZmMwMTA5NTJiYWM0ZjEwNmUyYmI5ZDUw
YWU3NGVmN2ZhMjUuLmI2OTQ4OWY3NjU3NWQ1ZmEyODNiZWNhZDA0YzkxMmVlZDkwZGM5NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyMjMsMTUgKzIyMjMsMTUgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgIE5vZGUmIHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdl
LT5lbmRDb250YWluZXIoKTsKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwID0gc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgCi0gICAgaW50IG1pc3NwZWxsaW5n
T2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBtaXNzcGVsbGluZ09mZnNldCA9IDA7CiAg
ICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwotICAgIGludCBncmFtbWFyUGhyYXNlT2Zm
c2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAg
ICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKICAgICBTdHJpbmcgYmFkR3JhbW1h
clBocmFzZTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAKICAgICBib29sIGlzU3BlbGxp
bmcgPSB0cnVlOwotICAgIGludCBmb3VuZE9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQg
Zm91bmRPZmZzZXQgPSAwOwogICAgIFN0cmluZyBmb3VuZEl0ZW07CiAgICAgUmVmUHRyPFJhbmdl
PiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoKSkgewpAQCAtMjMwNywxMCArMjMwNywxMCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIHBhbmVs
LCBhbmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUgbGF0ZXIu
CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSA+IDAp
OwotICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAtMSAmJiBncmFtbWFy
RGV0YWlsLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5s
ZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRoaXMgZ2V0
cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBhIHBhcmFn
cmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1tYXJEZXRh
aWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgYXV0byBiYWRHcmFt
bWFyUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgeyBn
cmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZ3JhbW1h
ckRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigp
OwogICAgICAgICAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gV2Ug
Zm91bmQgYSBtaXNzcGVsbGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2Vs
ZWN0IHRoZSBtaXNzcGVsbGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3Jl
CiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4K
ICAgICAgICAgCi0gICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxs
ZWRXb3JkLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKHNwZWxsaW5nU2VhcmNoUmFuZ2UsIHsgbWlzc3BlbGxpbmdPZmZzZXQs
IG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJF
QU0pKTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAg
ICAgICAgCkBAIC0yNzczLDcgKzI3NzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVJhbmdlRm9y
U3BlbGxDaGVja2luZyhSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYgcgogICAg
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVwbGFj
ZW1lbnQpLT5hcHBseSgpOwogfQogCi1zdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1By
ZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJh
Z3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwg
aW50IHJlc3VsdExvY2F0aW9uLCBpbnQgcmVzdWx0TGVuZ3RoKQorc3RhdGljIHZvaWQgY29ycmVj
dFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2lu
Z1BhcmFncmFwaCYgcGFyYWdyYXBoLCBSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQsIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0aW9uLCBDaGFyYWN0ZXJD
b3VudCByZXN1bHRMZW5ndGgpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBkb3duY2FzdDxDb250YWlu
ZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLnJvb3RO
b2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZvaWQgY29ycmVjdFNwZWxs
Y2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmEK
ICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVyIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFyOi8vMTAz
MDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJhbmdlPiBu
ZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1l
bnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBzcGVsbENoZWNraW5nUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0TG9j
YXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1Jh
bmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gbmV3UGFy
YWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsg
cmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGggfSk7CisgICAgYXV0byBzcGVsbENo
ZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobmV3UGFyYWdyYXBoUmFuZ2UsIHsg
cmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpIH0pOworICAgIHBhcmFncmFwaCA9
IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1Jhbmdl
KSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0ZUxpdmVSYW5nZShu
ZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
Y29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3ICsyODEwLDcgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBW
ZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNvbXBhc3Mg
ZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNv
bnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQg
c2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0
ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAgICAgYm9vbCBy
ZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKQEAgLTI4MjMsOSArMjgyMiw5IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0
aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAgICAgICAg
IHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9uKS5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5n
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiAoc2VsZWN0
aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4dENoYXJB
dChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKKyAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgu
dGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0IC0gMV0g
PT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0aW9uRm9y
UGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zm
c2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAmJiBp
c0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlv
bk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNl
bGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpICYmIGlzQW1iaWd1b3Vz
Qm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSkp
CiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3Rv
cjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGlu
dCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZz
ZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlIHJlc3Vs
dFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMb2NhdGlv
biA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAg
ICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7Ci0gICAgICAgIGNv
bnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3Ro
OwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiA9IHBh
cmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0b21hdGlj
UmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIENo
YXJhY3RlckNvdW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdF
bmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIFRleHRDaGVja2luZ1R5cGUg
cmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVz
dWx0TG9jYXRpb24gPSByZXN1bHRzW2ldLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBs
YWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tp
XS5yYW5nZS5sZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdEVuZExvY2F0aW9u
ID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50
IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGguYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkg
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgYm9vbCByZXN1bHRF
bmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNl
bGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CisgICAgICAgIGJvb2wgcmVz
dWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAm
JiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCiAgICAgICAgIC8v
IE9ubHkgbWFyayBtaXNzcGVsbGluZyBpZjoKICAgICAgICAgLy8gMS4gQ3VycmVudCB0ZXh0IGNo
ZWNraW5nIGlzbid0IGRvbmUgZm9yIGF1dG9jb3JyZWN0aW9uLCBpbiB3aGljaCBjYXNlIHNob3Vs
ZE1hcmtTcGVsbGluZyBpcyBmYWxzZS4KQEAgLTI4NTAsMTYgKzI4NDksMTYgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBWZWN0b3I8VGUKICAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiAhc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNw
ZWxsaW5nCiAgICAgICAgICAgICAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpICYmIHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
JiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgIGF1
dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwg
cmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFn
cmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAgICAgICAg
ICAgICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+aXNTcGVsbGluZ01hcmtlckFs
bG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxp
bmcsIHJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAm
JiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNo
ZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHRUeXBlID09IFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1
bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAoYXV0
byYgZGV0YWlsIDogcmVzdWx0c1tpXS5kZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGRldGFpbC5sZW5ndGggPiAwICYmIGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAg
ICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24gKyBk
ZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uICsg
ZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAgJiYgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOwor
ICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3Vs
dExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0p
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBo
LnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFp
bC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1h
clJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjg3Nyw3ICsyODc2LDcgQEAg
dm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgZG9l
c24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8gICAgKEZJ
WE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRleHQgY2hl
Y2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFjZW1lbnQg
PSByZXBsYWNlbWVudC5sZW5ndGgoKSA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5k
YXJ5OwotICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VU
b1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVu
Z3RoIH0pOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUgb25s
eSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZC4KICAgICAgICAgICAgIGlmIChyZXN1
bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0ICE9IHJl
c3VsdEVuZExvY2F0aW9uICsgMSkKQEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCBh
bGwgb3RoZXIgcmVzdWx0cyBmb3IgdGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAgICAgICAg
d2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9jYXRpb24g
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAgICAgICAg
ICAgIHdoaWxlIChpICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLnJhbmdl
LmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgaSsrOwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdl
ZCA9IHRydWU7CkBAIC0yOTMxLDcgKzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxh
Y2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQog
ICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQubGVuZ3Ro
KCkgLSByZXN1bHRMZW5ndGg7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
cmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVw
bGFjZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50
UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
OjpBY2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNh
biBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0yOTQ1LDgg
KzI5NDQsOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVj
a1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGggZXh0ZW5kZWRQYXJhZ3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAgICAgICAg
Ly8gUmVzdG9yZSB0aGUgY2FyZXQgcG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSByZXBsYWNl
bWVudHMKICAgICAgICAgZXh0ZW5kZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsK
LSAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZz
ZXQgPj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdy
YXBoLnN1YnJhbmdlKDAsIHNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0b3JlU2Vs
ZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBo
LnJhbmdlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRl
bmRlZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAg
ICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlv
bigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJh
Z3JhcGhCb3VuZGFyaWVzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwpAQCAtMjk3Myw3ICsyOTcyLDggQEAgdm9pZCBFZGl0b3I6OmNo
YW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmluZywgc2Vs
ZWN0aW9uLmdldCgpKTsKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKCpzZWxl
Y3Rpb24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmluZywgU2Vs
ZWN0UmVwbGFjZW1lbnQ6Ok5vLCBTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnQp
OwotICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5j
aGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJD
b3VudCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSByZXBsYWNlZFN0cmlu
Zy5sZW5ndGgoKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7
IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFyYWN0
ZXJDb3VudCB9KTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KS5tYXJrZXJzKCkuYWRkTWFya2VyKGNoYW5nZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50LCBTdHJpbmcoKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5tYXJr
UmV2ZXJzZWQoY2hhbmdlZFJhbmdlKTsKICNlbHNlCkBAIC0zNzc3LDEyICszNzc3LDEyIEBAIHZv
aWQgRWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiByYW5nZSwgY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nCiAKICAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiAr
IHJlbGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgpOwogCi0gICAgICAgIHVuc2lnbmVkIHN1YnJh
bmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOwotICAg
ICAgICB1bnNpZ25lZCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxh
dGl2ZVN0YXJ0UG9zaXRpb24gKyAxOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZU9m
ZnNldCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKKyAgICAgICAg
Q2hhcmFjdGVyQ291bnQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVs
YXRpdmVTdGFydFBvc2l0aW9uICsgMTsKIAotICAgICAgICBhdXRvIHN1YnJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVuZ3RoKTsK
KyAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyBz
dWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGggfSk7CiAKLSAgICAgICAgbWFya2VkUmFuZ2Vz
LmFwcGVuZChzdWJyYW5nZS5wdHIoKSk7CisgICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQoY3Jl
YXRlTGl2ZVJhbmdlKHN1YnJhbmdlKSk7CiAgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKHN1YnJhbmdlLCBEb2N1bWVudE1hcmtlcjo6VGVsZXBob25lTnVt
YmVyKTsKIAogICAgICAgICBzY2FubmVyUG9zaXRpb24gKz0gcmVsYXRpdmVFbmRQb3NpdGlvbiAr
IDE7CkBAIC0zOTkyLDE0ICszOTkyLDE0IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb250ZXh0
UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIAogUmVmUHRyPFJhbmdlPiBFZGl0b3I6
OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVz
dWx0KSBjb25zdAogewotICAgIGlmICghcmVzdWx0Lmxlbmd0aCkKKyAgICBpZiAoIXJlc3VsdC5y
YW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFJhbmdl
PiBjb250ZXh0UmFuZ2UgPSBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAg
aWYgKCFjb250ZXh0UmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0
ZXJSYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQucmFuZ2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6
OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGFkODI3ODg5Y2FiNTg1ZDMwMTU5NmE2M2FiZGVjNmZm
NGI3NWUzNzQuLmY4MzI3MmMyOGYwYTBkN2Q2N2MwZTcxMjI0YTc3YWM5NDFlYWY1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTYzLDggKzYzLDggQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVj
a2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgYmFkR3JhbW1hcjsKICAgICAgICAgYmFkR3JhbW1hci50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgYmFkR3JhbW1hci5sb2NhdGlvbiA9IGNoZWNr
TG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247Ci0gICAgICAgIGJhZEdyYW1tYXIubGVuZ3Ro
ID0gYmFkR3JhbW1hckxlbmd0aDsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sb2NhdGlvbiA9
IGNoZWNrTG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247CisgICAgICAgIGJhZEdyYW1tYXIu
cmFuZ2UubGVuZ3RoID0gYmFkR3JhbW1hckxlbmd0aDsKICAgICAgICAgYmFkR3JhbW1hci5kZXRh
aWxzID0gV1RGTW92ZShiYWRHcmFtbWFyRGV0YWlscyk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KGJhZEdyYW1tYXIpOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHN0YXRpYyB2b2lkIGZpbmRNaXNzcGVs
bGluZ3MoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8
CiAKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZzsKICAgICAgICAg
ICAgIG1pc3NwZWxsaW5nLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAg
ICAgICAgIG1pc3NwZWxsaW5nLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlzc3BlbGxpbmdMb2Nh
dGlvbjsKLSAgICAgICAgICAgIG1pc3NwZWxsaW5nLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3Ro
OwotICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0Nv
cnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxp
bmcubG9jYXRpb24sIG1pc3NwZWxsaW5nLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsg
bWlzc3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxlbmd0
aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1l
bnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4
dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24sIG1pc3NwZWxsaW5nLnJhbmdl
Lmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1pc3NwZWxsaW5nKTsKICAgICAgICAgfQogCkBAIC0xMzksMTQgKzEzOSwxMyBAQCB2
b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VUb05leHRFbmQoKQogdm9pZCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVlcygpCiB7
CiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9jaGVja2luZ0VuZC5yZXNldCgp
OwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNldCgpOwogICAgIG1fYXV0b21h
dGljUmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29mZnNldEFzUmFuZ2UgPSBudWxs
cHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpyYW5nZUxlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQo
cGFyYWdyYXBoUmFuZ2UoKSk7CiB9CkBAIC0xNTgsMTIgKzE1NywxMiBAQCBSYW5nZSYgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX3Bh
cmFncmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6c3Vi
cmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdAorUmVm
PFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKENoYXJhY3RlclJhbmdlIHJh
bmdlKSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFw
aFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAgIHJldHVybiBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBhcmFncmFwaFJhbmdlKCksIHJh
bmdlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZz
ZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitFeGNlcHRpb25PcjxDaGFyYWN0
ZXJDb3VudD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHBh
cmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKICAgICBhdXRvIGVuZCA9IG1ha2VCb3Vu
ZGFyeVBvaW50KHBvc2l0aW9uKTsKQEAgLTE4NywzNSArMTg2LDMzIEBAIFJhbmdlJiBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6Om9mZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9vZmZz
ZXRBc1JhbmdlOwogfQogCi1jb25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4
dCgpIGNvbnN0CitTdHJpbmdWaWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051bGwoKSkK
ICAgICAgICAgbV90ZXh0ID0gcGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAgICByZXR1
cm4gbV90ZXh0OyAKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFy
dCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5n
U3RhcnQoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQogICAgICAgICBtX2No
ZWNraW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAgIHJldHVy
biAqbV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVj
a2luZ0VuZCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNo
ZWNraW5nRW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAgICAgIG1f
Y2hlY2tpbmdFbmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwotICAgIHJl
dHVybiAqbV9jaGVja2luZ0VuZDsKKyAgICByZXR1cm4gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tp
bmdMZW5ndGgoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5n
dGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0xlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nTGVuZ3RoKQogICAgICAgICBt
X2NoZWNraW5nTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobV9jaGVja2luZ1JhbmdlKTsKICAgICBy
ZXR1cm4gKm1fY2hlY2tpbmdMZW5ndGg7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKIHsKICAg
ICBpZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KQogICAgICAgICByZXR1cm4gKm1fYXV0
b21hdGljUmVwbGFjZW1lbnRTdGFydDsKQEAgLTIyOSw3ICsyMjYsNyBAQCBpbnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKICAgICByZXR1
cm4gKm1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291
bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgIHJl
dHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKQEAgLTI0NiwxMiArMjQzLDEyIEBA
IFRleHRDaGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYgY2xp
ZW50LCBSYW5nZSYgcmFuZ2UpCiAKIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hl
bHBlcigpID0gZGVmYXVsdDsKIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJl
ZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxs
aW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSkKIHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKIAogICAgIFN0cmluZyBm
aXJzdE1pc3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOworICAgIENo
YXJhY3RlckNvdW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAKICAgICBmb3IgKFdvcmRBd2Fy
ZUl0ZXJhdG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3VycmVudENodW5rT2Zmc2V0ICs9
IGl0LnRleHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFN0cmluZ1ZpZXcg
dGV4dCA9IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjc0LDE3IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vCiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBtaXNzcGVs
bGluZ0xlbmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGggJiYgbWlz
c3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlz
c3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSBy
YW5nZSBvZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zmc2V0ICsg
bWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgYXV0
byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UsIHsgY3Vy
cmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Q2hhcmFj
dGVyQ291bnQ+KG1pc3NwZWxsaW5nTGVuZ3RoKSB9KTsKIAogICAgICAgICAgICAgLy8gUmVtZW1i
ZXIgZmlyc3QtZW5jb3VudGVyZWQgbWlzc3BlbGxpbmcgYW5kIGl0cyBvZmZzZXQuCiAgICAgICAg
ICAgICBpZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsKICAgICAgICAgICAgICAgICBmaXJzdE1pc3Nw
ZWxsaW5nT2Zmc2V0ID0gY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsK
ICAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nID0gdGV4dC5zdWJzdHJpbmcobWlzc3Bl
bGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gbWlzc3BlbGxpbmdSYW5nZS5wdHIoKTsKKyAg
ICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UobWlz
c3BlbGxpbmdSYW5nZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFN0b3JlIG1h
cmtlciBmb3IgbWlzc3BlbGxlZCB3b3JkLgotICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxp
bmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKKyAgICAgICAgICAgIG1pc3NwZWxs
aW5nUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5n
UmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAKICAgICAgICAgICAgIC8vIEJhaWwg
b3V0IGlmIHdlJ3JlIG1hcmtpbmcgb25seSB0aGUgZmlyc3QgbWlzc3BlbGxpbmcsIGFuZCBub3Qg
YWxsIGluc3RhbmNlcy4KICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTI5OCw3ICsyOTUs
NyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQm
IGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogICAgIHJldHVybiBmaXJzdE1pc3NwZWxsaW5n
OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQorU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewog
ICAgIGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKQEAgLTMxMyw4ICszMTAsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBp
ZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7
CiAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IDA7Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sb2Nh
dGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFt
bWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdl
Lmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAg
b3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIApA
QCAtMzM0LDggKzMzMSw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgd2hpbGUgKHRv
dGFsTGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxSYW5nZUxlbmd0aCkgewogICAgICAgICAvLyBJdGVy
YXRlIHRocm91Z2ggdGhlIHNlYXJjaCByYW5nZSBieSBwYXJhZ3JhcGhzLCBjaGVja2luZyBlYWNo
IG9uZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIuCiAgICAgICAgIGF1dG8gY3VycmVudExlbmd0
aCA9IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgaW50IGN1cnJlbnRT
dGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7Ci0gICAg
ICAgIGludCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKKyAgICAgICAgQ2hhcmFj
dGVyQ291bnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0
T2Zmc2V0IDogMDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudEVuZE9mZnNldCA9IGN1
cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAg
IC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9y
aWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAg
ICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVh
LgpAQCAtMzQ2LDkgKzM0Myw5IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAg
ICBTdHJpbmcgcGFyYWdyYXBoU3RyaW5nID0gcGxhaW5UZXh0KHBhcmFncmFwaFJhbmdlLnB0cigp
KTsKICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCkgPiAwKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBmb3VuZEdyYW1tYXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBp
bnQgc3BlbGxpbmdMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJh
c2VMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJEZXRhaWxMb2NhdGlv
biA9IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdMb2NhdGlvbiA9
IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZUxvY2F0aW9u
ID0gMDsKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyRGV0YWlsTG9jYXRp
b24gPSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gcmVzdWx0czsKQEAgLTM2MSw0MiArMzU4LDQyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFy
LCBiCiAgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRD
aGVja2VyKCksIHBhcmFncmFwaFN0cmluZywgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywgY3VycmVu
dFNlbGVjdGlvbik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3Vs
dHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQg
JiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCA+IDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlvbiA+PSAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQubG9jYXRpb247Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHJl
c3VsdC5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdl
LmxvY2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSAw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQucmFu
Z2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBh
cmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFu
Z2UubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29y
ZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3Vs
dC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LmxvY2F0aW9uIDwg
Y3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyByZXN1bHQubGVuZ3RoID4gY3Vy
cmVudFN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2Nh
dGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1
bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0
LnJhbmdlLmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3Vs
dCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBk
ZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIg
cmVzdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuZGV0YWlscy5zaXplKCk7IGorKykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZy
ZXN1bHQuZGV0YWlsc1tqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsLT5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsLT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYg
cmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGN1
cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LmxvY2F0aW9uICsgZGV0
YWlsLT5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsg
ZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJh
bmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubGVu
Z3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LnJhbmdl
LmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlv
bikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbEluZGV4
ID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0
aW9uID0gcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRHcmFtbWFyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZm91bmRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBo
cmFzZUxvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gcmVzdWx0LmRldGFpbHNb
Z3JhbW1hckRldGFpbEluZGV4XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFt
bWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJl
c3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJh
c2UgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVz
dWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJh
ZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFkR3Jh
bW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0YWls
TG9jYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9IHNw
ZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAg
IENoYXJhY3RlckNvdW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJl
bnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IGNoYXJhY3RlckNvdW50
KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICptYWtlQm91
bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAgICAgICAg
ICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CkBAIC00MDUsNyArNDAyLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1t
YXJQaHJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0Owor
ICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
Z3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgZ3Jh
bW1hclBocmFzZU9mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludCht
X3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxp
bmcgPSBmYWxzZTsKQEAgLTQyOCwxOCArNDI1LDE4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIAotaW50IFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1t
YXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK2ludCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBn
cmFtbWFyRGV0YWlscywgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBD
aGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29s
IG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4gRmluZCB0
aGUgZWFybGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2ggcmFuZ2Ug
KGlmIGFueSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBmb3IgZWFj
aCBkZXRhaWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29G
YXIgPSAtMTsKKyAgICBDaGFyYWN0ZXJDb3VudCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIg
PSAwOwogICAgIGludCBlYXJsaWVzdERldGFpbEluZGV4ID0gLTE7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0
IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZncmFtbWFyRGV0YWlsc1tpXTsKLSAgICAgICAgQVNT
RVJUKGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9u
ID49IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAg
ICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgIAotICAgICAg
ICBpbnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgIENoYXJhY3RlckNvdW50IGRldGFpbFN0
YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwt
PnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAKICAgICAgICAgLy8gU2tpcCB0aGlzIGRldGFpbCBp
ZiBpdCBzdGFydHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UKICAgICAgICAgaWYg
KGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPCBzdGFydE9mZnNldCkKQEAgLTQ1MCwzMCAr
NDQ3LDMwIEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwo
Y29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChtYXJrQWxsKSB7Ci0gICAgICAgICAgICBhdXRvIGJhZEdy
YW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxl
bmd0aCk7Ci0gICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJr
ZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8g
YmFkR3JhbW1hclJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UuZ2V0KCksIHsg
YmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPnJhbmdlLmxv
Y2F0aW9uLCBkZXRhaWwtPnJhbmdlLmxlbmd0aCB9KTsKKyAgICAgICAgICAgIGJhZEdyYW1tYXJS
YW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdl
LCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBvbmx5IGlm
IGl0J3MgZWFybGllciB0aGFuIG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFpbHMgYXJl
bid0IGluIGEgZ3VhcmFudGVlZCBvcmRlcikKLSAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5k
ZXggPCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+bG9jYXRpb24p
IHsKKyAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0RGV0YWls
TG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+cmFuZ2UubG9jYXRpb24pIHsKICAgICAgICAgICAgIGVh
cmxpZXN0RGV0YWlsSW5kZXggPSBpOwotICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlv
blNvRmFyID0gZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9j
YXRpb25Tb0ZhciA9IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIGVhcmxpZXN0RGV0YWlsSW5kZXg7CiB9CiAKLVN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1h
ckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0
CitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNl
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFy
YW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJl
dHVybi4KLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1h
ckRldGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24g
PSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRHcmFt
bWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNj
cmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgb3V0R3JhbW1hclBocmFzZU9mZnNldCA9IDA7
CiAgICAgCi0gICAgU3RyaW5nIGZpcnN0QmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJpbmdWaWV3
IGZpcnN0QmFkR3JhbW1hclBocmFzZTsKIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNoIHJhbmdl
IHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgZ3JhbW1hciBjaGVja2luZyBu
ZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBv
ZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgdGhl
IG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ4MSwxMSArNDc4LDExIEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKG1fcmFuZ2Uu
Y29weVJlZigpKTsKICAgICAKICAgICAvLyBTdGFydCBjaGVja2luZyBmcm9tIGJlZ2lubmluZyBv
ZiBwYXJhZ3JhcGgsIGJ1dCBza2lwIHBhc3QgcmVzdWx0cyB0aGF0IG9jY3VyIGJlZm9yZSB0aGUg
c3RhcnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZS4KLSAgICBmb3IgKGludCBzdGFydE9m
ZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgeworICAg
IGZvciAoQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8IHBhcmFn
cmFwaC5jaGVja2luZ0VuZCgpOyApIHsKICAgICAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGdy
YW1tYXJEZXRhaWxzOwogICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uID0gLTE7
CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKLSAgICAgICAgbV9jbGll
bnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyhwYXJhZ3Jh
cGgudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdy
YW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOworICAgICAgICBt
X2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGgudGV4
dCgpLnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VSVChiYWRH
cmFtbWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwpAQCAtNTA2LDcgKzUwMyw3IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0
R3JhbW1hckRldGFpbCwKICAgICAgICAgLy8ga2VwdCBnb2luZyBzbyB3ZSBjb3VsZCBtYXJrIGFs
bCBpbnN0YW5jZXMpLgogICAgICAgICBpZiAoYmFkR3JhbW1hckluZGV4ID49IDAgJiYgZmlyc3RC
YWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb3V0R3JhbW1hclBocmFz
ZU9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHBhcmFncmFwaC5jaGVja2luZ1N0
YXJ0KCk7Ci0gICAgICAgICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4
dFN1YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5n
dGgpOworICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHQo
KS5zdWJzdHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVu
Z3RoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRm91bmQgb25lLiBXZSdyZSBkb25l
IG5vdywgdW5sZXNzIHdlJ3JlIG1hcmtpbmcgZWFjaCBpbnN0YW5jZS4KICAgICAgICAgICAgIGlm
ICghbWFya0FsbCkKQEAgLTUxOCw3ICs1MTUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgYmFkR3JhbW1h
clBocmFzZUxlbmd0aDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBo
cmFzZTsKKyAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlLnRvU3RyaW5nKCk7CiB9CiAK
IGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdApAQCAtNTI5
LDcgKzUyNiw3IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBj
b25zdAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBwYXNzZWQgcmFuZ2UgZXhhY3Rs
eSBjb3JyZXNwb25kcyB0byBhIGJhZCBncmFtbWFyIGRldGFpbCByYW5nZS4gVGhpcyBpcyBhbmFs
b2dvdXMKICAgICAvLyB0byBpc1NlbGVjdGlvbk1pc3NwZWxsZWQuIEl0J3Mgbm90IGdvb2QgZW5v
dWdoIGZvciB0aGVyZSB0byBiZSBzb21lIGJhZCBncmFtbWFyIHNvbWV3aGVyZSBpbiB0aGUgcmFu
Z2UsCiAgICAgLy8gb3Igb3ZlcmxhcHBpbmcgdGhlIHJhbmdlOyB0aGUgcmFuZ2VzIG11c3QgZXhh
Y3RseSBtYXRjaC4KLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0OwogICAgIAogICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1h
ckRldGFpbDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IGZpbmRGaXJzdEJhZEdyYW1t
YXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwpAQCAtNTQyLDE1
ICs1MzksMTUgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNv
bnN0CiAgICAgaWYgKGdyYW1tYXJQaHJhc2VPZmZzZXQgPiAwKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICBBU1NF
UlQoZ3JhbW1hckRldGFpbC5sZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5y
YW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5n
dGggPiAwKTsKIAogICAgIC8vIEJhZCBncmFtbWFyLCBidXQgc3RhcnQgb2YgZGV0YWlsIChlLmcu
IHVuZ3JhbW1hdGljYWwgd29yZCkgZG9lc24ndCBtYXRjaCBzdGFydCBvZiByYW5nZQotICAgIGlm
IChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKKyAgICBpZiAo
Z3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFydCBvZiBy
YW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5kIG9mIHJh
bmdlCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihncmFtbWFyRGV0YWlsLmxlbmd0aCkg
IT0gY2hhcmFjdGVyQ291bnQobV9yYW5nZSkpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2Uu
bGVuZ3RoICE9IGNoYXJhY3RlckNvdW50KG1fcmFuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCB0byBiZSBkaXNwbGF5aW5n
IHRoaXMgZXJyb3IgKHdoZXRoZXIgb3Igbm90IHRoZSBzcGVsbGluZyBwYW5lbCBpcyBvbiBzY3Jl
ZW4pLgpAQCAtNTk0LDggKzU5MSw4IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBl
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVja2VyKCksIHBhcmFncmFwaC50ZXh0
KCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAgICAgZm9y
IChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgewotICAgICAgICAgICAgU3RyaW5n
IG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCk7CisgICAgICAg
IGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LnJhbmdlKSkgeworICAgICAgICAgICAgU3Ry
aW5nIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCkudG9TdHJp
bmcoKTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVs
bGVkV29yZCwgU3RyaW5nKCksIGN1cnJlbnRTZWxlY3Rpb24sIGd1ZXNzZXMpOwogICAgICAgICAg
ICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVk
V29yZCk7CkBAIC02MDgsMTIgKzYwNSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdI
ZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAg
ICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykg
ewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAm
JiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQu
cmFuZ2UpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdC5kZXRhaWxz
KSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sZW5ndGggPiAwKTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlm
IChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LmxvY2F0aW9uICsgZGV0YWls
LmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5s
ZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxvY2F0aW9u
ID49IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMoeyByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFp
bC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1t
YXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRp
b24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChhdXRvJiBndWVzcyA6IGRldGFpbC5ndWVzc2VzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZ3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOwpAQCAtNjMxLDcgKzYyOCw3IEBAIHZvaWQgVGV4dENo
ZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlz
c3BlbGxpbmdSYW5nCiB7CiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBmaW5k
Rmlyc3RNaXNzcGVsbGluZy4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kIHRoZSAib3V0IHBh
cmFtZXRlciI7CiAgICAgLy8gYWxsIHdlIG5lZWQgdG8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5j
ZS4KLSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zm
c2V0OwogICAgIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGlnbm9yZWRPZmZzZXQsIHRydWUsIGZpcnN0
TWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTY0MSw3ICs2MzgsNyBAQCB2b2lkIFRleHRDaGVj
a2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwi
IGZlYXR1cmUgb2Ygb2ZpbmRGaXJzdEJhZEdyYW1tYXIuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVl
IGFuZCAib3V0IHBhcmFtZXRlcnMiOyBhbGwgd2UgbmVlZCB0bwogICAgIC8vIGRvIGlzIG1hcmsg
ZXZlcnkgaW5zdGFuY2UuCiAgICAgR3JhbW1hckRldGFpbCBpZ25vcmVkR3JhbW1hckRldGFpbDsK
LSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zmc2V0
OwogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGlnbm9yZWRP
ZmZzZXQsIHRydWUpOwogfQogI2VuZGlmCkBAIC02NjgsNyArNjY1LDcgQEAgdm9pZCBjaGVja1Rl
eHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQs
IE9wdGlvblNldDwKICAgICBpZiAoY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyKSkgewogICAgICAgICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5ndGggPSB0
ZXh0Lmxlbmd0aCgpOwogICAgICAgICBmb3IgKGF1dG8mIG1pc3BlbGxpbmcgOiBtaXNwZWxsaW5n
cykKLSAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihn
cmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcubG9jYXRpb24pOworICAgICAgICAgICAgZ3Jh
bW1hckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwg
bWlzcGVsbGluZy5yYW5nZS5sb2NhdGlvbik7CiAgICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9y
cyhjbGllbnQsIHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRp
Y2FsRXJyb3JzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5oCmluZGV4IDNmMzllODY4ZDk5NDFlNWI4ODFiMDYxNmRkZmMxNmIzNDAxNTExZDQu
LjM0NmQ1YTgxOTJlYmRjYjc2M2IwYTVlMDY1ZjgxMTg4Y2YwYTg5ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaApAQCAtMzYsMzQgKzM2LDI4IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNo
ZWNraW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgZXhwbGljaXQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYg
YXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdl
KTsKIAotICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwotICAgIFJlZjxSYW5nZT4gc3VicmFu
Z2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsKLSAgICBF
eGNlcHRpb25PcjxpbnQ+IG9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CisgICAgQ2hh
cmFjdGVyQ291bnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdl
KENoYXJhY3RlclJhbmdlKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxDaGFyYWN0ZXJDb3VudD4g
b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICB2b2lkIGV4cGFuZFJhbmdlVG9O
ZXh0RW5kKCk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0byByZXR1
cm4gYSBTdHJpbmdWaWV3LgotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0OwotCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGFuZCBqdXN0IGhhdmluZyB0aGUgY2Fs
bGVyIHVzZSB0ZXh0KCkgZGlyZWN0bHkuCi0gICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KLSAgICBTdHJpbmcgdGV4dFN1YnN0cmluZyh1bnNpZ25l
ZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vi
c3RyaW5nKHBvcywgbGVuKTsgfQotICAgIFVDaGFyIHRleHRDaGFyQXQoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiB0ZXh0KClbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KV07IH0KKyAgICBT
dHJpbmdWaWV3IHRleHQoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0g
ICAgaW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdFbmQoKSBjb25z
dDsKLSAgICBpbnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcgY2hlY2tpbmdT
dWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNraW5nU3RhcnQoKSwg
Y2hlY2tpbmdMZW5ndGgoKSk7IH0KKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ1N0YXJ0KCkg
Y29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgY2hlY2tpbmdFbmQoKSBjb25zdDsKKyAgICBDaGFy
YWN0ZXJDb3VudCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgY2hlY2tp
bmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3RyaW5nKGNoZWNraW5nU3Rh
cnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KIAogICAgIC8vIERldGVybWluZXMgdGhlIHJhbmdl
IGluIHdoaWNoIHdlIGFsbG93IGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBhbiBhdXRv
bWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgbm90IHBhc3NlZCB0byB0aGUKICAgICAvLyB0ZXh0
IGNoZWNraW5nIHBhcmFncmFwaCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hlY2tpbmcg
cmFuZ2UuCi0gICAgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKLSAgICBp
bnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQg
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tpbmdS
YW5nZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2Nh
dGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0K
LSAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiBsb2NhdGlv
biArIGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9Ci0gICAg
Ym9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3Qg
eyByZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID4g
Y2hlY2tpbmdTdGFydCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhDaGFyYWN0
ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPT0gY2hlY2tpbmdT
dGFydCgpICYmIHJhbmdlLmxlbmd0aCA9PSBjaGVja2luZ0xlbmd0aCgpOyB9CisgICAgYm9vbCBp
c0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0
dXJuIHJhbmdlLmxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiByYW5nZS5sb2NhdGlvbiAr
IHJhbmdlLmxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9Cisg
ICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7
IHJldHVybiByYW5nZS5sb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdyYXBo
UmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTc1LDExICs2OSwxMCBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwogICAgIG11dGFibGUg
UmVmUHRyPFJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0
OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdFbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+
IG1fY2hlY2tpbmdMZW5ndGg7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNS
ZXBsYWNlbWVudExlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBt
X2NoZWNraW5nU3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gbV9j
aGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJD
b3VudD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CkBAIC04OCwxMSArODEsMTEgQEAgcHVibGljOgogICAgIFRleHRDaGVja2lu
Z0hlbHBlcihFZGl0b3JDbGllbnQmLCBSYW5nZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdIZWxwZXIo
KTsKIAotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxp
bmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKTsKLSAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBj
aGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNl
dCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CisgICAgU3RyaW5nIGZpbmRGaXJz
dE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29s
IG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgU3Ry
aW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
b29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwg
R3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CiAgICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAjaWYgVVNFKEdS
QU1NQVJfQ0hFQ0tJTkcpCi0gICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRl
dGFpbCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29s
IG1hcmtBbGwpIGNvbnN0OworICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNl
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogICAgIHZvaWQgbWFya0FsbEJhZEdyYW1tYXIo
KTsKICAgICBib29sIGlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMDQsNyAr
OTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkg
Y29uc3Q7CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgaW50IGZpbmRGaXJzdEdyYW1t
YXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50IGJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwp
IGNvbnN0OworICAgIGludCBmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFt
bWFyRGV0YWlsPiYsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hh
cmFjdGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBt
YXJrQWxsKSBjb25zdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCmluZGV4IGJhMWI3MjBhZWYwMzQ4YmZhOWZlZGQ3ZDNkNjY3MDI4NDA0MDY3YjUu
LjFhY2E3NzNlNDE0NWVhNjU0MmIyYWQ5MjRkNTUxYjE0OTc1N2UyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIzNTEsMTIgKzIzNTEsNiBAQCBDaGFyYWN0
ZXJDb3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGJlaAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLVJlZjxSYW5nZT4gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZz
ZXQsIGludCBjaGFyYWN0ZXJDb3VudCkKLXsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBlbnRpcmVS
YW5nZUl0ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2Uo
ZW50aXJlUmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBjaGFyYWN0
ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGlzSW5z
aWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiB7CiAgICAgQVNTRVJU
KCFpdGVyYXRvci5hdEVuZCgpKTsKQEAgLTIzNjUsODUgKzIzNTksNjAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiAg
ICAgcmV0dXJuIG5vZGUgJiYgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChub2RlLT5yZW5kZXJl
cigpKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJh
bmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK0JvdW5kYXJ5UG9pbnQg
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFj
dGVyQ291bnQgbG9jYXRpb24sIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogewotICAg
IFJlZjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgp
OwotCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5kID0gcmFu
Z2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5kID0gZmFs
c2U7Ci0KLSAgICBSZWY8UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2Nv
cGUpOworICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIHsgbG9jYXRpb24s
IDAgfSwgYmVoYXZpb3IpLnN0YXJ0OworfQogCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5S
YW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IpOwotICAgIAotICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUg
bmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAm
JiBpdC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRl
eHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiByZXN1bHRS
YW5nZTsKLSAgICB9CitTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgYmVoYXZpb3IpCit7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IFNpbXBsZVJhbmdlIHsgcmFu
Z2UubG9jYXRpb24gPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCwgKHJhbmdlLmxvY2F0aW9uIHx8
IHJhbmdlLmxlbmd0aCkgPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCB9OworICAgIGF1dG8gcmFu
Z2VFbmQgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUsIGJlaGF2aW9y
KTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQucmFu
Z2UoKTsKIAotICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAg
IGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIHRleHRSdW5SYW5nZSA9
IGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgpKTsKKyAgICAgICAgYXV0byBmb3VuZCA9IFsmXSAo
Q2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0
dXJuIHRhcmdldExvY2F0aW9uID49IGxvY2F0aW9uICYmIHRhcmdldExvY2F0aW9uIDw9IGxvY2F0
aW9uICsgbGVuZ3RoOworICAgICAgICB9OwogCi0gICAgICAgIGJvb2wgZm91bmRTdGFydCA9IHJh
bmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRpb24gPD0gZG9jVGV4
dFBvc2l0aW9uICsgbGVuZ3RoOwotICAgICAgICBib29sIGZvdW5kRW5kID0gcmFuZ2VFbmQgPj0g
ZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlRW5kIDw9IGRvY1RleHRQb3NpdGlvbiArIGxlbmd0aDsK
KyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOworICAgICAg
ICBib29sIGZvdW5kRW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChmb3VuZEVu
ZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUg
ZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0gICAgICAg
ICAgICAvLyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2Yg
dGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBh
IHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3Ig
aWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50
LgorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBU
ZXh0SXRlcmF0b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9uYWxseSB0
byBoZWxwIHVzIGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAg
ICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVw
bGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
c3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFu
Z2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3Rh
cnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAg
UG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29u
dGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRS
dW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNp
YmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFy
dCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFy
dFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRD
b250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRS
YW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0
ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJh
bmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAg
IGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBC
b3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3Rh
cnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAt
IGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIu
Z2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0
UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAg
ICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYo
KSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRS
dW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAg
ICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAg
ICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQg
PSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5n
ZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1
blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRl
eHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFp
bmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdl
LmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24g
Kz0gbGVuZ3RoOwogICAgIH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5k
ID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1
blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDA5MTRmN2JjYTYxNTA5
ZmI1YzNkZWVhYzlkMzhjZTRkNGMzODk2NGIuLmY0ZTQwOGEyMWE1NTZhNThiODQyMzhiOGUzMmMx
MDFhNzM2ZmQ1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgi
CiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTEwMyw5ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIpIGNvbnN0IHsgY29weWFibGVUZXh0KCkuYXBwZW5kVG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIp
OyB9CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hhcmFjdGVy
UmFuZ2UsIGFuZCBDaGFyYWN0ZXJDb3VudCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFzcyB0byB0
aGUgdG9wIGxldmVsIChib3R0b20gb2YgdGhpcyBmaWxlKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJO
b2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFj
ZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBS
YW5nZSosIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBj
aGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0KCk7CkBAIC0yODksMTMgKzI4OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZExv
b2tBaGVhZCB7IHRydWUgfTsKIH07CiAKLXVzaW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXpl
X3Q7Ci0KLXN0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7Ci0gICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRp
b24geyAwIH07Ci0gICAgQ2hhcmFjdGVyQ291bnQgbGVuZ3RoIHsgMCB9OwotfTsKIAogV0VCQ09S
RV9FWFBPUlQgQ2hhcmFjdGVyQ291bnQgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2Um
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitX
RUJDT1JFX0VYUE9SVCBCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25z
dCBTaW1wbGVSYW5nZSYsIENoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRl
eHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJSYW5nZSwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggMmI5MzE3YjE3MTNmMjYwYTJkYWYzOGM1YjFmYmE0ZTA4NGFi
N2NhNi4uZTJmOGY1N2IzOTU1MTc3YmNkZWY3M2FhNDJiNzM3OGM4YWM5MzAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtOTcsNyArOTcs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0UG9zaXRp
b25XaXRoUmFuZ2UoVmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIENGUmFuZ2UgcmVzdWx0UmFuZ2VJ
bkNvbnRleHQgPSBERFJlc3VsdEdldFJhbmdlKHJlc3VsdCk7CiAgICAgICAgIGlmIChoaXRMb2Nh
dGlvbiA+PSByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiAmJiAoaGl0TG9jYXRpb24gLSBy
ZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbikgPCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5n
dGgpIHsKICAgICAgICAgICAgIG1haW5SZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBtYWlu
UmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3Vs
dFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpOwor
ICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFy
YWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCAqbWFrZUNoYXJhY3RlclJhbmdlKHJlc3VsdFJhbmdl
SW5Db250ZXh0KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC01
MDgsOSArNTA4LDEyIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJh
bmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBmcmFnbWVudFJhbmdlczsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjdXJy
ZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2UoKSk7CiAgICAgICAgIENG
SW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uuc3RhcnQucXVlcnlJbmRleDsKLSAgICAg
ICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkKLSAgICAg
ICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjdXJy
ZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVyeVJhbmdlLmVuZC5vZmZzZXQg
LSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYg
KGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgeworICAgICAgICAg
ICAgQ2hhcmFjdGVyUmFuZ2UgZnJhZ21lbnRSYW5nZTsKKyAgICAgICAgICAgIGZyYWdtZW50UmFu
Z2UubG9jYXRpb24gPSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAgICAgICAgICAgIGZyYWdt
ZW50UmFuZ2UubGVuZ3RoID0gcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFy
dC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY3VycmVudFJhbmdlLCBmcmFnbWVudFJhbmdlKSkp
OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFxdWVyeVJhbmdlLnN0YXJ0Lm9m
ZnNldCkKICAgICAgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3VycmVudFJhbmdl
KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkNjQ4ZmQ3MGZjMzhmYzkyYzI0ZTUxNzg5MDQ3Y2Vm
NjI2M2ZhNTA5Li42YmM1YmUxZmU3NGUwNTFhM2E2Y2IwYmM2MWZmMjg4YTRlMTI2OWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCkBA
IC0yODcsMTAgKzI4Nyw5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5
ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvCiAKICAgICBSZWZQdHI8
UmFuZ2U+IGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcGFy
YWdyYXBoRW5kKTsKICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxsQ2hhcmFj
dGVyUmFuZ2UuZ2V0KCkpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFth
bGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5n
ZTpyYW5nZVRvUGFzc10pOwotICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgp
LmhpZ2hsaWdodFJhbmdlOworICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBhZG9wdE5TKFth
bGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5n
ZTpyYW5nZVRvUGFzc10pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCi0gICAgcmV0dXJuIHsgVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5s
b2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3Jl
YXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAq
bWFrZUNoYXJhY3RlclJhbmdlKGhpZ2hsaWdodFJhbmdlKSkpLCBuaWwgfTsKIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTM1OCwxMyArMzU3LDEyIEBAIHN0ZDo6dHVwbGU8
UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRI
aXRUZXN0UmVzdWx0CiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0aW9u
Q2xhc3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVjdGlv
bjpuaWxdOwogCiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJ
dGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVj
dGVkUmFuZ2VdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdo
bGlnaHRSYW5nZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdl
KGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBz
ZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRSYW5nZSk7CiAKLSAg
ICBpZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGlnaGxpZ2h0
UmFuZ2UubGVuZ3RoKQorICAgIGlmICghaGlnaGxpZ2h0UmFuZ2UgfHwgIWhpZ2hsaWdodFJhbmdl
LT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAgIAotICAgIHJl
dHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxp
Z2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJl
dHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgKmhpZ2hsaWdodFJhbmdlKSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IGEyYjgxODI4NzdiMjhhZjI5YzhhMDYzOTU0
ZDM3NGNkNWFhNWE1ZGEuLmQzY2YwNmM5M2QxOWQ4NWVlNTE0NWQwMmExMmQ1MmI4M2JjN2EwMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCkBAIC03MiwxMSArNzIsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBw
bHkoKQogICAgIGlmIChlbmRPZmZzZXQgPCByZXN1bHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHJvb3QsIGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0KTsKLSAg
ICBpZiAoIXJlc3VsdFJhbmdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb2N1bWVudCgpLm1h
cmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBtX21ldGFkYXRh
KTsKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIHsgZW5kT2Zmc2V0IC0gcmVzdWx0TGVuZ3Ro
LCBlbmRPZmZzZXQgfSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVz
dWx0TWFya2VyKHJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlM
b29rdXBMZWdhY3kubW0KaW5kZXggNTEzNWI5MDZkZWUxOGUwMTc3OWVjNjExNDc0MzFjNzk1ZTM4
YTU4ZS4uNjVkNWRkNTYyZTkzNzBjZWJmY2U1M2MzMjI1ZTI3MzVjNTViNWYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1t
CkBAIC0xNDIsMTQgKzE0MiwxNCBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlv
bmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogCiAgICAgTlNS
YW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgKmZ1bGxDaGFy
YWN0ZXJTdGFydCwgKnBvc2l0aW9uQm91bmRhcnkgfSksIDApOwogICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IG5pbDsKLSAgICBOU1JhbmdlIGV4dHJhY3RlZFJhbmdlID0gdG9rZW5SYW5nZShw
bGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRpb25z
KTsKKyAgICBhdXRvIGV4dHJhY3RlZFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKHRva2VuUmFu
Z2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0
aW9ucykpOwogCiAgICAgLy8gdG9rZW5SYW5nZSBzb21ldGltZXMgcmV0dXJucyB7TlNOb3RGb3Vu
ZCwgMH0gaWYgaXQgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSBnb29kIHN0cmluZy4KICAgICAv
LyBGSVhNRSAoMTU5MDYzKTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgZm9yIHplcm8gbGVu
Z3RoIGhlcmUuCi0gICAgaWYgKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQg
fHwgIWV4dHJhY3RlZFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWV4dHJhY3RlZFJhbmdlIHx8ICFl
eHRyYWN0ZWRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsK
IAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5n
ZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCksIG9wdGlv
bnMgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdl
KCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICpleHRyYWN0ZWRSYW5nZSkpLCBvcHRpb25zIH07CiB9CiAK
IHN0YXRpYyB2b2lkIGV4cGFuZFNlbGVjdGlvbkJ5Q2hhcmFjdGVycyhQREZTZWxlY3Rpb24gKnNl
bGVjdGlvbiwgTlNJbnRlZ2VyIG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBOU0ludGVnZXIm
IGNoYXJhY3RlcnNBZGRlZEJlZm9yZVN0YXJ0LCBOU0ludGVnZXImIGNoYXJhY3RlcnNBZGRlZEFm
dGVyRW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzdkY2NmZjM1ZTNhOWYyYjZhNmE2ZDAxOTJj
Y2Q5MDIwYTg3NDcxZS4uNTc0Y2RiZjU0N2E1NDUyMGM0M2EyMDI1NDUwYTc3NGY2ZjZiZTJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04MDMsOCArODAzLDcgQEAgdW5zaWduZWQgUGFnZTo6Y291
bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWcKIAogc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gcm9vdDsKLSAgICBzaXplX3QgbG9jYXRpb24geyBub3RGb3VuZCB9OwotICAgIHNp
emVfdCBsZW5ndGggeyAwIH07CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiB9OwogCiBzdGF0
aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mIHJhbmdlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpCkBAIC04
MTYsMTAgKzgxNSwxMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNv
bnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmFuZ2VzIGFyZSBzb3J0ZWQg
YnkgdGhlaXIgZW5kIG9mZnNldHMsIHBlciBlZGl0aW5nIGNvbnRhaW5lci4KLSAgICAgICAgYXV0
byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOworICAg
ICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UucmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5yYW5nZS5sZW5ndGg7CiAgICAgICAgIGF1dG8gaW5zZXJ0aW9uSW5kZXggPSByYW5nZUxpc3Qu
c2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZUxpc3QucmJlZ2luKCk7
IGl0ZXJhdG9yICE9IHJhbmdlTGlzdC5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAg
IGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+bG9jYXRpb24g
KyBpdGVyYXRvci0+bGVuZ3RoOworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNl
cnRpb25JbmRleCA9IGl0ZXJhdG9yLT5yYW5nZS5sb2NhdGlvbiArIGl0ZXJhdG9yLT5yYW5nZS5s
ZW5ndGg7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0Rm9yUmFuZ2UgPj0gZW5kT2Zmc2V0QmVm
b3JlSW5zZXJ0aW9uSW5kZXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBp
bnNlcnRpb25JbmRleC0tOwpAQCAtODYyLDExICs4NjEsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiBy
YW5nZXMKICAgICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMgd2hlbiBy
ZXBsYWNpbmcgdGV4dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMgZG9uJ3Qg
Y2xvYmJlciByZXBsYWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8mIHJhbmdl
cyA9IHJhbmdlc0J5Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwogICAgICAg
ICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9IHJhbmdl
cy5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0
b3ItPmxvY2F0aW9uLCBpdGVyYXRvci0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghcmFuZ2Ug
fHwgcmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgICAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmNvbnRhaW5lciks
IGl0ZXJhdG9yLT5yYW5nZSk7CisgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBET1dOU1RS
RUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4
dCwgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVwbGFjZTo6
Tm8sIEVkaXRBY3Rpb246Okluc2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTg5OCw3ICs4OTcsNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQoY29u
c3QgVmVjdG9yPFJlZjxSYW5nZT4+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAgICAgIGlmIChyZXBs
YWNlbWVudExvY2F0aW9uID09IG5vdEZvdW5kIHx8ICFyZXBsYWNlbWVudExlbmd0aCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdU
Rk1vdmUoaGlnaGVzdFJvb3QpLCByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0
aCB9KTsKKyAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0
Um9vdCksIHsgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSB9KTsKICAg
ICB9CiAKICAgICByZXBsYWNlUmFuZ2VzKCp0aGlzLCByZXBsYWNlbWVudFJhbmdlcywgcmVwbGFj
ZW1lbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
CmluZGV4IGQwZDAwYzZiZDU3MzI3NzNjMGEzN2U4YmI1MzY1N2ViMzQ3N2RlYjMuLmQyNDVjY2Q5
ZWM5MTIwMmVjM2QwZjQ5ZWQ1NTRjMzA1MGVlOTdjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMTAgKzMxLDkgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02MywxNiArNjIs
MTQgQEAgZW51bSBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB7CiB9OwogCiBzdHJ1Y3QgR3JhbW1h
ckRldGFpbCB7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAgQ2hhcmFj
dGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBTdHJpbmcg
dXNlckRlc2NyaXB0aW9uOwogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7CiAgICAg
VGV4dENoZWNraW5nVHlwZSB0eXBlOwotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3Ro
OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBk
ZXRhaWxzOwogICAgIFN0cmluZyByZXBsYWNlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggYWYyN2I5OWYzODdjMTI4YWZmYjQzNjlhYjRlYzNhOWMwYmZmYzI5
OC4uMTM0ZWEzMWZjZThmOTg4OTExMmNjMTRjMDdmZDE3NGRiZTViY2U1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA0NCw5ICsyMDQ0LDkgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxzOjppbnZhbGlkYXRlQ29udHJvbFRpbnRzKCkKICAgICByZXR1cm4geyB9
OwogfQogCi1SZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitS
ZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVu
dCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKQog
ewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZz
Y29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhzY29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCiB1bnNpZ25l
ZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5n
ZSYgcmFuZ2UpCkBAIC0yMDc1LDkgKzIwNzUsOSBAQCBTdHJpbmcgSW50ZXJuYWxzOjpyYW5nZUFz
VGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKHJhbmdl
KTsKIH0KIAotUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgaW50
IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZjxSYW5nZT4gSW50ZXJuYWxzOjpz
dWJyYW5nZShSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJh
bmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBy
YW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgg
fSkpOwogfQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VPZlN0cmluZ05lYXJMb2Nh
dGlvbihjb25zdCBSYW5nZSYgc2VhcmNoUmFuZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWdu
ZWQgdGFyZ2V0T2Zmc2V0KQpAQCAtMjQzMiw4ICsyNDMyLDcgQEAgdm9pZCBJbnRlcm5hbHM6Omhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBs
b2NhdGkKIAogICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpOb25lOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IGxvY2F0aW9u
OwotICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0geyBsb2Nh
dGlvbiwgbGVuZ3RoIH07CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gY2FuZGlkYXRlOwogICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5oYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZTIzNTIz
NDFkYjhjMTVkNDI5ZjljZWZkMjg5ZGY1MjI3MGU1YWM3Yy4uY2Y3OWU1MGM3Yjg0NzNmNmZlMjUy
ZjhjYzc2ODU5YzZmOTE1NzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
OTUsMTIgKzI5NSwxMiBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnZhbGlk
YXRlQ29udHJvbFRpbnRzKCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1l
bnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7
CiAgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJh
bmdlJik7CiAgICAgdW5zaWduZWQgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25z
dCBSYW5nZSYpOwogICAgIFN0cmluZyByYW5nZUFzVGV4dChjb25zdCBSYW5nZSYpOwogICAgIFN0
cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJik7
Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIGludCByYW5nZUxvY2F0aW9uLCBpbnQg
cmFuZ2VMZW5ndGgpOworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNpZ25lZCBy
YW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFJhbmdlPj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50
IHkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBS
YW5nZSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IDE2MmZhZjQ5NDZlYWFkZDk4MGU1Nzg5YTE4YmJkZWM1NTgzZjYzMjMu
LjM3NTc5MDc3MDRmOTMxM2U2ODQxNGMwMDU1OTE3NDFlNDZhMjVkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMyNSwxMiArMzI1LDEyIEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNjcm9sbEVsZW1lbnRU
b1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgpOwog
Ci0gICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIGxv
bmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2U/IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgdW5zaWduZWQg
bG9uZyBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIERP
TVN0cmluZyByYW5nZUFzVGV4dChSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNU
ZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoUmFuZ2UgcmFuZ2UpOwotICAgIFJhbmdlIHN1
YnJhbmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgp
OworICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24obG9uZyB4LCBsb25n
IHkpOwogICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKFJhbmdlIHJhbmdlLCBE
T01TdHJpbmcgdGV4dCwgbG9uZyB0YXJnZXRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcAppbmRleCBiODk5MzNmZmExYmYyODQzYzI2ZmRiZDY2ZDI5MjZlZDAwYzVm
NmExLi43NmVmNDcyMmQ3NTFjZjZlNTlhYWI5ZWRmYWI2NjU2ZTcwNGYxNmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTMzLDQyICszMywzMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFu
Z2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQorUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvIGJhc2UpCiB7Ci0gICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAg
ICBBU1NFUlQoZWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBXZWJDb3Jl
OjpDaGFyYWN0ZXJSYW5nZSByYW5nZSB7IGVkaXRpbmdSYW5nZS5sb2NhdGlvbiwgZWRpdGluZ1Jh
bmdlLmxlbmd0aCB9OwogCi0gICAgLy8gU2FuaXRpemUgdGhlIGlucHV0LCBiZWNhdXNlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGFrZXMgc2lnbmVkIGludGVnZXJz
LgotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGludCBsZW5ndGg7Ci0gICAgaWYgKHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYICYm
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoIDw9IElOVF9NQVgpCi0gICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4ocmFuZ2UubGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIGxl
bmd0aCA9IElOVF9NQVggLSByYW5nZS5sb2NhdGlvbjsKLQotICAgIGlmIChlZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsK
KyAgICBpZiAoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkg
ewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBw
YXRoIGlzIGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAgICAgLy8gY29uY2VudHJh
dGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbi4KICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4g
VGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1
bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBp
cwogICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAgICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUu
c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCByYW5nZSkpOwogICAgIH0K
IAotICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwotCi0gICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgaWYgKCFzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGJhc2UgPT0gRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFy
dCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnZpc2libGVT
dGFydCgpKSk7CisgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0
YXJ0T2ZQYXJhZ3JhcGgoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29w
ZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3Jl
OjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0pOwot
ICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHJhbmdlLmxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
cGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOwor
ICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdl
KHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSkp
OwogfQogCiBFZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJh
bWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdS
YW5nZS5oCmluZGV4IDk0NzM4YjdmODhlOWUwNThkYTJlZDI1NGExNjA0NGViYzZiOTMwNjkuLmUw
NDNmOTcyNDBlNDI1ZWNkMjVhNDI3ZWRkOTI3YWNiNzQ1ZTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRpbmdSYW5nZS5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAorLy8gRklYTUU6
IFJlcGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0
aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCBiMzA3YWEyNTg5ZWY4MTQwZWFmNzU5MDQxOGViZTgxYWJjMWE5MTgwLi5mYWI0ODRkZWFh
MTgyYjQ2YjVkZjNiYTlkNGFhNmQzY2JkMGNjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8vIEZJWE1FOiBTZWVt
cyBsaWtlIHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRoZSBjb2RlIGJlbG93
IGEgbG90IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPENhY2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhY2hlUXVl
cnlPcHRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPENoYXJh
Y3RlclJhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENoYXJhY3RlclJhbmdl
JiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5s
b2NhdGlvbik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFuZ2UubGVu
Z3RoKTsKK30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8Q2hhcmFj
dGVyUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAoIWxvY2F0
aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKmxvY2F0aW9uLCAq
bGVuZ3RoIH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsKQEAgLTIw
NTMsMjIgKzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRV
Ukw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAogdm9pZCBBcmd1bWVu
dENvZGVyPEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgR3Jh
bW1hckRldGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxvY2F0aW9uOwot
ICAgIGVuY29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGRldGFpbC5yYW5n
ZTsKICAgICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29kZXIgPDwgZGV0YWls
LnVzZXJEZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRD
b2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICgh
bG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxp
bnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAg
ICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsK
KyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIwOTgsNyBAQCBPcHRp
b25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpsb2NhdGlvbiksIFdU
Rk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3JpcHRp
b24pIH19OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92
ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBUZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0
KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0gICAgZW5jb2RlciA8
PCByZXN1bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVuZ3RoOworICAgIGVu
Y29kZXIgPDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LmRldGFpbHM7CiAg
ICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5LDE0ICsyMTQ1LDkg
QEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2lu
Z1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5
cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGlu
dD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxvY2F0aW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50PiBsZW5n
dGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgT3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7CisgICAgaWYg
KCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2MCw3IEBAIE9wdGlv
bmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIFdURk1vdmUoKmxv
Y2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1vdmUoKnJl
cGxhY2VtZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92ZSgqZGV0
YWlscyksIFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxVc2VyU3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0YTIxNmU4
NGYwMTcuLjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2MjdkMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjksNiArNjks
NyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
KwogY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYsNiArMTE3LDcgQEAg
Y2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIAogc3Ry
dWN0IENhY2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3RydWN0IENv
bXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0
IERpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IFZlbG9jaXR5
RGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7
CiAgICAgCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RFZGdl
czxmbG9hdD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsyMTgsMTEgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4g
ewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q2hhcmFjdGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkNoYXJhY3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGY5ZDdhYmU3NGM0MjZmYjQ1NDIzMDNk
MTVkMzIzZjBjMmYyYWQwNTkuLjM4ODg2NjJmOTFiODExYjhkNmEzOTQ1NThhZDUxOTIxZjYxZjRh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC0zMzY2LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkKIAogc3RhdGljIFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFu
Z2UgcmVzdWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdU
eXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkdyYW1tYXJEZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRl
dGFpbC5jcHAKaW5kZXggNmVlNDQxYjExYTIzOTA1ZTMzYzM5ZDhhOWUwMGQzOTdmOTZmNTJiMS4u
MDZkNWNlY2M0ZTg1MGE1MmI0Yzc5NGNlMjE2MDU2NTQwZjk1MGVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgUmVm
PFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmEKIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFp
bChpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0
cmluZyYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9
IGxvY2F0aW9uOwotICAgIG1fZ3JhbW1hckRldGFpbC5sZW5ndGggPSBsZW5ndGg7CisgICAgbV9n
cmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgbV9ncmFtbWFyRGV0
YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKIAogICAgIHNpemVfdCBudW1HdWVzc2VzID0gZ3Vl
c3Nlcy0+c2l6ZSgpOwogICAgIG1fZ3JhbW1hckRldGFpbC5ndWVzc2VzLnJlc2VydmVDYXBhY2l0
eShudW1HdWVzc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdy
YW1tYXJEZXRhaWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwu
aAppbmRleCBjOWI3NTUzY2Q3YjA4ZWVhYzdkODIzMzhiMTEwZjRhZWRkOWVmNmFjLi4zOTBiNGE1
ZjdiOWVhYzYzMWZkNzMyNDE2NTdlMjIxZGE1YzE5NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKTsK
ICAgICBzdGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsJik7CiAKLSAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dy
YW1tYXJEZXRhaWwubG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9ncmFtbWFyRGV0YWlsLmxlbmd0aDsgfQorICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbjsgfQorICAgIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoOyB9CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGd1ZXNzZXMoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlw
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKaW5k
ZXggNDEwOGZhZDZkMjY2NTdlYWRlOTA4NmMxNmNmZGYyMTgxMDdjY2IyNS4uMWRhOTBlZWM0ZGI3
MGI1MTBhMTNlYWE3ZGUzZTUwNWJmZDVmNDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yNjksOCArMjY5LDggQEAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxs
RG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgbWlzc3BlbGxpbmdS
ZXN1bHQ7CiAgICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZzsKLSAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQubG9jYXRpb24gPSBvZmZzZXQg
KyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5sZW5ndGgg
PSBtaXNzcGVsbGluZ0xlbmd0aDsKKyAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQucmFuZ2UubG9j
YXRpb24gPSBvZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICBtaXNzcGVsbGlu
Z1Jlc3VsdC5yYW5nZS5sZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAgcGFyYWdy
YXBoQ2hlY2tpbmdSZXN1bHQuYXBwZW5kKG1pc3NwZWxsaW5nUmVzdWx0KTsKICAgICAgICAgb2Zm
c2V0ICs9IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAg
Ly8gR2VuZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9yLCBt
b3ZlIHRvIHRoZSBhZGphY2VudCB3b3JkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1RleHRDaGVja2VySU9TLm1tCmluZGV4IDkyMDBlYjYwOGIzYTE1MWY3NmMwODY4ZGM0ODgzMGFm
ZmRjNDcxZmUuLmY2MDhjOGRiNWM2MDY1MzBjYWE1OTZlZDZhYjVlOTVkNmNlZGU1OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KQEAgLTIxMiw4
ICsyMTIsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogCiAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG1pc3NwZWxsZWRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobWlzc3BlbGxlZFJhbmdl
KTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoV1RGTW92ZShyZXN1bHQpKTsKIAogICAgICAgICBv
ZmZzZXRTb0ZhciA9IG1pc3NwZWxsZWRSYW5nZS5sb2NhdGlvbiArIG1pc3NwZWxsZWRSYW5nZS5s
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0K
aW5kZXggMGNhMTMzYTJhZGNlNDFhN2NmY2YzYTBkNDE0YWI0ZmZiODRlZTYzNC4uYWMzYmVlMDBi
MTY1OTNhY2Y0NTcxZWE5OWMxMTAxNmNjMTRmNDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMzM0LDIyICszMzQsMjAgQEAgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNw
ZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J0aG9ncmFwaHk6TlVMTAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmRDb3VudDpOVUxMXTsKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICppbmNv
bWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRS
YW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlw
ZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAgICBBU1NF
UlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJh
bmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1
bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAqbWFrZUNo
YXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlu
cyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBn
cmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIGZv
ciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFtbWFyRGV0
YWlsIGRldGFpbDsKQEAgLTM1OCw4ICszNTYsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAog
ICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNW
YWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5s
b2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNS
YW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24gPSBkZXRh
aWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGggPSBkZXRh
aWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAqbWFrZUNo
YXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFpbC51c2Vy
RGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJE
ZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtpbmNvbWlu
Z0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAgICAgICAg
ICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC0zNzAsMzYgKzM2NywzMSBA
QCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUg
PT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVz
dWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rOwot
ICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAg
ICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAg
cmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1l
bnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVz
dWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZTsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0
Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hl
Y2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlJl
cGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9j
YXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwor
ICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1
bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0K
QEAgLTQ0MywxNyArNDM1LDIwIEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAKIHZvaWQgVGV4
dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhTcGVsbERvY3VtZW50
VGFnLCBjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwm
IGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjb3JyZWN0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbC5ndWVzc2VzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nICpndWVzcyA9IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAgICAg
ICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CisgICAgYXV0byBjb3JyZWN0aW9ucyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoYXV0byYg
Z3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcgKmd1ZXNz
TlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc05T
U3RyaW5nXTsKICAgICB9CiAKLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5nZSA9IE5TTWFrZVJhbmdl
KGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAgICBOU1N0
cmluZyAqZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0
aW9uOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGdyYW1tYXJEZXRhaWxEaWN0ID0gYWRv
cHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3JhbW1hclVz
ZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9ucy5nZXQo
KSwgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF0pOworICAgIE5TU3RyaW5nICpkZXNjcmlwdGlv
bk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNEaWN0aW9u
YXJ5ICpkZXRhaWwgPSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVl
V2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBOU0dyYW1tYXJVc2VyRGVz
Y3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBOU0dyYW1tYXJDb3JyZWN0
aW9ucyA6IGNvcnJlY3Rpb25zLmdldCgpLAorICAgIH07CiAKLSAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5n
OmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0LmdldCgpXTsKKyAgICBb
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdp
dGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRldGFpbF07CiB9CiAKIHZv
aWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcgc3BlbGxE
b2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIGlu
dDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzLCBib29sIGluaXRp
YWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDljZTVk
YmFjMTE0YTQ5NWZlYTRhOWU5NTNkOWJmZmM4MWViZDc2Y2QuLjUyYmI3Yzc2M2QwMGIwMDNkODFj
ZDBlOGIxOWY5ODlmY2FiMWJhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02NSw4ICs2
NSw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZVRleHRDaGVja2luZ1JlcXVlc3RJRCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250
cm9sbGVyUHJveHkubW0KaW5kZXggZjE4Y2FhNzJjYmQ5NjUzMTc1NWU5MmVjZmIyMGVmNGRiOGNh
NTNhZi4uNzBhMzkwMzVkNThjODEyYzJjYjAxMzE5ZjVhMTZjNmZhNTlmNWQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtODcsNyArODcsNyBAQCBPcHRp
b25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveAogICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2Uocm9vdCwgcmFuZ2UuZ2V0KCksIHNlbGVjdGlvbkxvY2F0aW9uLCBzZWxlY3Rp
b25MZW5ndGgpOwogICAgIHNlbGVjdGlvbkxvY2F0aW9uICs9IG9mZnNldDsKIAotICAgIHJldHVy
biB7eyBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVj
dGlvbkxvY2F0aW9uLCBsZW5ndGgpLCBzZWxlY3Rpb25Mb2NhdGlvbiB9fTsKKyAgICByZXR1cm4g
e3sgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uLCBsZW5ndGgp
LCBzZWxlY3Rpb25Mb2NhdGlvbiB9fTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3Rh
dGVkU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50
NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFj
ZW1lbnRMZW5ndGgpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4K
IAogICAgICAgICAgICAgICAgIHNpemVfdCBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSA9IGxv
Y2F0aW9uSW5Sb290IC0gc2VsZWN0aW9uT2Zmc2V0OwogICAgICAgICAgICAgICAgIGlmIChyZXN0
b3JlU2VsZWN0aW9uICYmIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID4gbG9jYXRpb25JblJv
b3QgKyByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24gKyByZWxhdGl2ZVJlcGxhY2VtZW50TGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9SZXN0b3JlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBzZWxlY3Rpb25Mb2Nh
dGlvblRvUmVzdG9yZSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9S
ZXN0b3JlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9S
ZXN0b3JlLCAwKTsKICAgICAgICAgICAgICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHNl
bGVjdGlvblRvUmVzdG9yZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojpy
ZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFuCiAgICAgfQogCiAg
ICAgW2Fubm90YXRlZFN0cmluZy5zdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW2Fubm90YXRlZFN0cmluZy5zdHJpbmcgbGVuZ3RoXSkgb3B0aW9uczowIHVz
aW5nQmxvY2s6XihOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nS2V5LCBpZD4gKmF0dHJz
LCBOU1JhbmdlIGF0dHJpYnV0ZVJhbmdlLCBCT09MICpzdG9wKSB7Ci0gICAgICAgIGF1dG8gYXR0
cmlidXRlQ29yZVJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChyb290LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9uLCBhdHRyaWJ1
dGVSYW5nZS5sZW5ndGgpOworICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShyb290LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxv
Y2F0aW9uLCBhdHRyaWJ1dGVSYW5nZS5sZW5ndGgpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZUNv
cmVSYW5nZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk5LDcgKzE5OSw3IEBAIEF0dHJp
YnV0ZWRTdHJpbmcgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJp
bmdCZXR3ZWVuUG9zaXRpb25zCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIGF1dG8mIHRleHRDaGVja2luZ0RhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6UGxh
dGZvcm1UZXh0Q2hlY2tpbmdEYXRhPihtYXJrZXItPmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRv
IHN1YnJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjcmVhdGVMaXZlUmFuZ2UoY3VycmVu
dFRleHRSYW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRPZmZzZXQoKSAt
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9m
ZnNldCgpKTsKIAogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTG9jYXRpb247CiAgICAgICAg
ICAgICBzaXplX3Qgc3VicmFuZ2VMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY3NWVmNTJhMTNiNGFmYWE4ZTA5ZGM1MTNkNDI4ZDMx
MjJlMWYwMzYuLjU4YzU0ZjMwZWIyNTU3Nzg2M2QyNjMyMjQ2OTM0YzUwOGQyNDgyMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01NDIwLDIw
ICs1NDIwLDIzIEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRfdCBvZmZz
ZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IHRh
cmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24g
PSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlv
bi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9
IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHN1cnJvdW5kaW5nUmFuZ2UgPSBt
YWtlUmFuZ2Uoc3RhcnRPZkVkaXRhYmxlQ29udGVudChzZWxlY3Rpb25TdGFydCksIHNlbGVjdGlv
blN0YXJ0KTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291
bnQoKnN1cnJvdW5kaW5nUmFuZ2UpOwotICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdS
YW5nZS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGF1dG8g
c2VsZWN0aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KCZyb290Tm9kZSwgY3Vyc29yUG9zaXRpb24gKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLSAg
ICBpZiAoIXNlbGVjdGlvblJhbmdlKQorICAgIGlmICghc3Vycm91bmRpbmdSYW5nZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byYgcm9vdE5vZGUgPSBzdXJyb3VuZGluZ1JhbmdlLT5zdGFy
dENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisgICAgQ2hhcmFjdGVyUmFuZ2Ug
Y2hhcmFjdGVyUmFuZ2U7CisgICAgY2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBXZWJDb3JlOjpj
aGFyYWN0ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSkgKyBvZmZzZXQ7CisgICAgY2hhcmFjdGVy
UmFuZ2UubGVuZ3RoID0gY2hhcmFjdGVyQ291bnQ7CisgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocm9v
dE5vZGUpLCBjaGFyYWN0ZXJSYW5nZSk7CisKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0
SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnNlbGVjdGlvblJhbmdlLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOworICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVs
ZXRlKGZhbHNlKTsKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9u
Q2hhbmdlcyhmYWxzZSk7CiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE4
N2RiZWY1NDcyMDcxNTE3NWNlNzI1NjRjNmE4ZjVhYWMxNDFjN2IuLmY5NTJkMTY1YmI1ODU2MmMy
ZjhiZjI0MjZkOWM3OWEwZDZkZTNiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MDY2LDE4ICs0MDY2LDIwIEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0
YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAgc2l6ZV90IHNlbGVjdGlvbkxlbmd0aDsKICAgICBU
ZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdl
dCgpLCBzZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKIAotICAgIENoZWNrZWRJ
bnQ2NCBuZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNlbGVjdGlvbkxvY2F0aW9uIH07Ci0gICAgQ2hl
Y2tlZEludDY0IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9OwotICAgIG5l
d1NlbGVjdGlvbkxvY2F0aW9uICs9IGxvY2F0aW9uRGVsdGE7Ci0gICAgbmV3U2VsZWN0aW9uTGVu
Z3RoICs9IGxlbmd0aERlbHRhOworICAgIGF1dG8gbmV3U2VsZWN0aW9uTG9jYXRpb24gPSBjaGVj
a2VkU3VtPENoYXJhY3RlckNvdW50PihzZWxlY3Rpb25Mb2NhdGlvbiwgbG9jYXRpb25EZWx0YSk7
CisgICAgYXV0byBuZXdTZWxlY3Rpb25MZW5ndGggPSBjaGVja2VkU3VtPENoYXJhY3RlckNvdW50
PihzZWxlY3Rpb25MZW5ndGgsIGxlbmd0aERlbHRhKTsKIAogICAgIGlmIChuZXdTZWxlY3Rpb25M
b2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3U2VsZWN0aW9uTGVuZ3RoLmhhc092ZXJmbG93
ZWQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpLCBuZXdT
ZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpKQotICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIENo
YXJhY3RlclJhbmdlIG5ld1NlbGVjdGlvblJhbmdlOworICAgIG5ld1NlbGVjdGlvblJhbmdlLmxv
Y2F0aW9uID0gbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCk7CisgICAgbmV3U2VsZWN0
aW9uUmFuZ2UubGVuZ3RoID0gbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgpOworCisgICAg
YXV0byByZXNvbHZlZFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlvblJhbmdlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZWRSYW5n
ZSkucHRyKCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CkBAIC00MTkyLDE2ICs0MTk0LDE1IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAg
ICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiByb290Q29udGFpbmVyTm9kZSA9IHJvb3ROb2RlLT5p
c0NvbnRhaW5lck5vZGUoKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHJvb3ROb2RlLmdldCgp
KSA6IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9vdENvbnRhaW5lck5vZGUuZ2V0KCksIHJhbmdlT2ZJ
bnRlcmVzdC5nZXQoKSwgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24sIHJhbmdlT2ZJbnRlcmVzdExl
bmd0aCk7CiAKLSAgICAgICAgQ2hlY2tlZFNpemUgbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJ
bnRlcmVzdExvY2F0aW9uIH07CisgICAgICAgIENoZWNrZWQ8Q2hhcmFjdGVyQ291bnQsIFJlY29y
ZE92ZXJmbG93PiBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsK
ICAgICAgICAgbWlkcG9pbnRMb2NhdGlvbiArPSByYW5nZU9mSW50ZXJlc3RMZW5ndGggLyAyOwog
ICAgICAgICBpZiAobWlkcG9pbnRMb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIG1pZHBvaW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCBtaWRwb2ludExvY2F0
aW9uLnVuc2FmZUdldCgpLCAwKTsKKyAgICAgICAgYXV0byBtaWRwb2ludCA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpyb290Q29udGFpbmVyTm9kZSksIG1pZHBvaW50TG9jYXRpb24udW5z
YWZlR2V0KCkpKTsKIAotICAgICAgICBhdXRvIG1pZHBvaW50ID0gbWlkcG9pbnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpOwogICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24g
PSBzdGFydE9mV29yZChtaWRwb2ludCk7CiAgICAgICAgIGlmIChzdGFydE9mUmFuZ2VPZkludGVy
ZXN0SW5TZWxlY3Rpb24gPCByYW5nZU9mSW50ZXJlc3RTdGFydCkgewogICAgICAgICAgICAgc3Rh
cnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gZW5kT2ZXb3JkKG1pZHBvaW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQppbmRleCBjYTQ3OTMxMDU0YjgwMjYyNjg3M2UzZjUzZmI1ZWUzMDU0ZTk4
NTEzLi4zYjk0NjMwNGRmYjc1MjExNDEzZTlmOGQxMTA3ZjZmODc2NTk5ZDI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCkBAIC04NjUsMTIgKzg2NSwxMSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQog
CiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdh
dGVGb3J3YXJkZXJdIGNoZWNrU3BlbGxpbmdPZlN0cmluZzpzdHJpbmcuY3JlYXRlTlNTdHJpbmdX
aXRob3V0Q29weWluZygpLmdldCgpXTsKICAgICBmb3IgKE5TVmFsdWUgKmluY29taW5nUmVzdWx0
IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2lu
Y29taW5nUmVzdWx0IHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCAmJiByZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
QVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7
CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOwog
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9
IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNv
bWluZ1Jlc3VsdC5yYW5nZVZhbHVlKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsK
ICAgICB9CiAKQEAgLTkzOSwxMSArOTM4LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAg
ICAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgICAgICBOU1ZhbHVlICpkZXRh
aWxSYW5nZUFzTlNWYWx1ZSA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclJhbmdlXTsK
ICAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlKTsKLSAgICAgICAgTlNSYW5nZSBk
ZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwotICAgICAg
ICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAg
QVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwu
bG9jYXRpb24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICBncmFtbWFyRGV0YWls
Lmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFu
Z2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAg
QVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CisgICAg
ICAgIGdyYW1tYXJEZXRhaWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbFJhbmdl
QXNOU1ZhbHVlLnJhbmdlVmFsdWUpOwogICAgICAgICBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbiA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAg
ICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJD
b3JyZWN0aW9uc107CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBA
IC05NTcsMjIgKzk1NCwyMCBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29y
ZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVz
dWx0ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5n
ZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENo
ZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAg
ICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAg
IEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5n
UmVzdWx0LnJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5j
b21pbmdSZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2Ug
PSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYg
KHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBl
cy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVz
dWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFu
Z2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWlu
Z1Jlc3VsdCBncmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAg
ICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBH
cmFtbWFyRGV0YWlsIGRldGFpbDsKQEAgLTk4MSw4ICs5NzYsNyBAQCBzdGF0aWMgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNl
dDxUZXh0QwogICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxS
YW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
TlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
ZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRp
b24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5n
dGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2Ug
PSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRl
dGFpbC51c2VyRGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3Jh
bW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9
IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAg
ICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05OTMsMzYg
Kzk4NywzMSBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5
ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpMaW5rOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpRdW90ZTsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAg
ICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRh
c2g7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBs
YWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUg
PT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlu
cyhUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVj
a2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6OlJlcGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tp
bmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAg
ICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9
IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJh
bmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJl
cGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAg
ICAgICAgIH0KQEAgLTEwNDksMTYgKzEwMzgsMTggQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkK
IAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmlu
Zyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdy
YW1tYXJEZXRhaWwpCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGNvcnJlY3Rpb25zID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRl
dGFpbC5ndWVzc2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBndWVzcyA9IGdy
YW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpn
dWVzc107CisgICAgTlNNdXRhYmxlQXJyYXkgKmNvcnJlY3Rpb25zID0gW05TTXV0YWJsZUFycmF5
IGFycmF5XTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7
CisgICAgICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3Jy
ZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQotICAgIE5TUmFuZ2UgZ3Jh
bW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRl
dGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5nKiBncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3Jh
bW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgTlNEaWN0aW9uYXJ5KiBncmFtbWFyRGV0
YWlsRGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3JhbW1h
clVzZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9ucywg
TlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF07Ci0gICAgCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpi
YWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07CisgICAgTlNTdHJpbmcg
KmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6
IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBO
U0dyYW1tYXJVc2VyRGVzY3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBO
U0dyYW1tYXJDb3JyZWN0aW9ucyA6IGNvcnJlY3Rpb25zLAorICAgIH07CisgICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1h
clN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkaWN0aW9uYXJ5XTsKIH0KIAogdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKQEAgLTExOTQsNyArMTE4NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVj
a2luZ1Jlc3VsdCBhCiAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXV0pIHsKICAgICAgICAgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGggPSBhY2NlcHRlZENh
bmRpZGF0ZS5yZXBsYWNlbWVudC5sZW5ndGgoKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50TGVu
Z3RoID4gMCkgewotICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFu
Z2UoYWNjZXB0ZWRDYW5kaWRhdGUubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKKyAgICAg
ICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlk
YXRlLnJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgICAgICAgICBOU1Jh
bmdlIHNvZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShyZXBsYWNlZFJhbmdl
KSAtIDEsIDEpOwogICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50
LmVuZHNXaXRoKCIgIikpCiAgICAgICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAqKXZpZXcgX3Nl
dFNvZnRTcGFjZVJhbmdlOnNvZnRTcGFjZVJhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGVkNWVkMjA0MDI5NTU3OGViZTk5ZWI4MDc3NDJk
N2UwNmIwNDllMzAuLmRkODdhZDQ5YTM1YTgyZTMyZGYyYmNlY2Y1ZGUyZmU3NWZiNjg0NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODIxLDEw
ICs4MjEsOSBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSluc3JhbmdlCiAKIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RP
TVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxh
dGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJ
TlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNy
YW5nZSk7CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYg
KG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5s
ZW5ndGggPiBJTlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3Jh
bmdlLmxvY2F0aW9uOwogCiAgICAgaWYgKHJhbmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNS
ZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3Vt
cHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRo
b2RzIHRoYXQKQEAgLTgzNiw3ICs4MzUsNyBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9j
b252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAg
ICAgICBhdXRvKiBlbGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50LCBuc3Jhbmdl
LmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFu
Z2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
ZWxlbWVudCksICpyYW5nZSkpOwogICAgIH0KIAogICAgIEFTU0VSVChyYW5nZUlzUmVsYXRpdmVU
byA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKQEAgLTg0NCwxMCArODQzLDkg
QEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
bnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFr
ZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBo
U3RhcnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFy
YWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1
dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290
Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhT
dGFydEluZGV4ICsgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIGF1dG8g
c2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQt
PmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgqcGFyYWdyYXBoU3Rh
cnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCAqcmFuZ2UpKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilf
Y29udmVydE5TUmFuZ2VUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZGRmMjNlY2YzY2JhNWI5YmM5ZWE5
ZjI2ZWVkY2YwMzc5OTU2ODhjLi42ZjkxZWZiOWE5MDFhZTFjY2JhZTU2YzliMmZkOTljMTQwOTk1
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03
Mjc4LDEyICs3Mjc4LDkgQEAgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgY29y
ZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeXBlIHR5cGUKIAogc3RhdGljIFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tp
bmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFuZ2Ug
cmVzdWx0UmFuZ2UgPSBuc1Jlc3VsdC5yYW5nZTsKLQogICAgIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNraW5nVHlwZShu
c1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgIHJl
c3VsdC5yYW5nZSA9ICpXZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQucmFuZ2Up
OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4ZGYxYzcyMWJi
NjhmNmUwMTAxN2U2NTUyNGM5M2MwZGZlZTI4ODQ2Li40Njk3OWQ3MWFmZjc1MTlhZTBhNGFlZjky
MWY5ZGM5ZThhNTA0MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTc5MCwxNCArNzkwLDE5
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3
IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIGlmIChlbnVtRGV0YWlsc09iai0+
TmV4dCgxLCAmZGV0YWlsT2JqLCAmZmV0Y2hlZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwotICAgICAgICBpZiAoRkFJTEVEKGRl
dGFpbE9iai0+bGVuZ3RoKCZkZXRhaWwubGVuZ3RoKSkpCisgICAgICAgIGludCBsZW5ndGg7Cisg
ICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sZW5ndGgoJmxlbmd0aCkpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmZGV0
YWlsLmxvY2F0aW9uKSkpCisgICAgICAgIGludCBsb2NhdGlvbjsKKyAgICAgICAgaWYgKEZBSUxF
RChkZXRhaWxPYmotPmxvY2F0aW9uKCZsb2NhdGlvbikpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIEJTdHJpbmcgdXNlckRlc2M7CiAgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2Jq
LT51c2VyRGVzY3JpcHRpb24oJnVzZXJEZXNjKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBHcmFtbWFyRGV0YWlsIGRldGFpbDsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgIGRldGFpbC5yYW5nZS5sZW5ndGggPSBsZW5ndGg7CiAg
ICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBTdHJpbmcodXNlckRlc2MsIFN5c1N0cmlu
Z0xlbih1c2VyRGVzYykpOwogCiAgICAgICAgIENPTVB0cjxJRW51bVNwZWxsaW5nR3Vlc3Nlcz4g
ZW51bUd1ZXNzZXNPYmo7CkBAIC04MjYsNyArODMxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
Y28KICAgICAgICAgZ3Vlc3Nlc0JTVFJzLmFwcGVuZChndWVzcy5yZWxlYXNlKCkpOwogICAgIH0K
ICAgICBCU3RyaW5nIHVzZXJEZXNjcmlwdGlvbkJTVFIoZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7
Ci0gICAgZWQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhCU3RyaW5nKHN0cmlu
ZyksIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCwgdXNlckRlc2NyaXB0aW9uQlNUUiwg
Z3Vlc3Nlc0JTVFJzLmRhdGEoKSwgKGludClndWVzc2VzQlNUUnMuc2l6ZSgpKTsKKyAgICBlZC0+
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwgZGV0YWls
LnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RS
LCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXplKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBndWVzc2VzQlNUUnMuc2l6ZSgpOyBpKyspCiAgICAgICAg
IFN5c0ZyZWVTdHJpbmcoZ3Vlc3Nlc0JTVFJzW2ldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggZDcwNTNlYzMyMDRjYWFlZTBlNDlhODFlMTViZTExMjgzNDk4Y2RjNC4u
YWVmOTMyYjY5MTJiOGE1N2JkMmY3NTA4ZmY4ZWYwOGY0ODJhNmU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTc3NjEsMjMgKzc3NjEsMjEgQEAgSFJFU1VMVCBXZWJWaWV3
OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoVUlOVCBsb2NhdGlvbiwgVUlO
VCBsZW5ndGgKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IEludFJlY3QgcmVzdWx0SW50UmVjdDsKLSAgICByZXN1bHRJbnRSZWN0LnNldExvY2F0aW9uKElu
dFBvaW50KDAsIDApKTsKLSAgICByZXN1bHRJbnRSZWN0LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7
Ci0gICAgCi0gICAgaWYgKGxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byog
ZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50
RWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAg
ICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCBsb2NhdGlvbiArIGxlbmd0aCA+IElOVF9NQVgpCi0g
ICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSBsb2NhdGlvbjsKLSAgICAgICAgCi0gICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisKKyAgICBDaGFyYWN0ZXJSYW5nZSBjaGFy
YWN0ZXJSYW5nZTsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAg
IGNoYXJhY3RlclJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZVJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqZWxlbWVudCksIGNoYXJhY3RlclJhbmdlKSk7CiAKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICAKKwogICAgIEludFJlY3QgcmVjdCA9
IGZyYW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICByZXN1
bHRJbnRSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOworICAgIElu
dFJlY3QgcmVzdWx0SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0
KTsKIAogICAgIHJlc3VsdEludFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBhMWI1OWZiZmQ4NzRiMmNlMmY2MGM4NDg2N2YzNmMzM2U1MDMwOTYyLi4xY2M3NDNhOGY2
NDA2YzNkZTdjNWQyYWE4Yzc1MDdlZjk2MDljNGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIw
MjAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDIwLTAzLTI3ICBK
YXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIHdr
MiBdIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSBjcmFzaCBpbiBXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9m
LWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3
YjljNTg3MmVmZTFkZTcyYy4uMjM0ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYx
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1m
b3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRo
aXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdp
dmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2Vy
Rm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAy
XjMxCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1h
cmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNl
CitQQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5
OTk5OTk5OTk5OSkpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC5odG1sCmluZGV4IDBhYjJmMTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEu
LjZhYzdmOWY2NzJjYjY4NTE1ZTA3YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1i
b3VuZHMtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwx
MiBAQCB0ZXh0CiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0
aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXgg
b3V0IG9mIGJvdW5kcyIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4
dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVy
IHRoYW4gMl4zMSIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAg
ICAgICB2YXIgaXRlbTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
LSAgICAgICAgc2hvdWxkQmVGYWxzZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4
dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5
OTk5OTk5OTk5KSkiKTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hh
cmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2Qz
Y2M2NDQ5NzQzYmRiNTZlMDM5YTIuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2
NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3Rl
ZC50eHQKQEAgLTEsMjAgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDIgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgs
NTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4
LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwx
OAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJl
dCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhl
IGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQg
b2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTog
KDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4
LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rl
cjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcy
LDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgw
LDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIs
NDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2
NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2UtcGxhaW4uaHRtbAppbmRleCA3OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2
MGRlLi42MmNkYzliODI2Zjk2NWY4NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1wbGFpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIu
ZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFy
Z2luOiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBt
YXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1Ngog
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQpAQCAtMjEsNDAgKzE1LDQyIEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJ
aXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNv
bnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24g
bG9nUmVjdChjb21tZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1l
bnQgKyAiOiAoIiArIHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICAr
IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxl
bmd0aCkgKyAiKSIpOworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJ
dHJ5IHsKLQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2Fy
ZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJh
Y3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAx
KSk7IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAt
Ii0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5
NjcyOTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUg
Zmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJl
Y3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDEwMDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJ
CXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAor
CQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgi
Y2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2Fy
ZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUg
ZW5kIG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwg
MSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFz
dCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAw
KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxp
bmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJ
CWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5
NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQi
LCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIs
IDEwMDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5k
IiwgNywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQi
LCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAi
ICsgZXguZGVzY3JpcHRpb24pOwogCQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgicCIpOwogCQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2Fn
ZXMpOwogCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2Ug
ewogCQlkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRl
eCBhY2ZkNTJmMGI5NDhhNjUzZmMwNmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4
MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+
IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQg
PiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1
NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgs
MTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgK
LTEwLDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0w
LDAsMCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2Fy
ZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0
IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwx
KSwgKDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCits
YXN0IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwx
MDApLCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2Zp
cnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5
NSksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3Rl
cjogKDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1zdHlsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3
MWNkMmZiMGRiYTYzMGYyMWUuLmU1YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZh
OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFj
L2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsx
LDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0
eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMz
ICsxNiwzNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3Nh
Z2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29t
bWVudCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIg
KyBzdGFydCArICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIiki
KTsKKyAgICB9CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQog
CQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLnNldE1hcmtlZFRleHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQg
dGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYs
IDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8v
IGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1
dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEw
MCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUp
KTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3Qg
Y2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAs
IDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9n
UmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQg
YWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQg
dGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9m
IGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJ
CQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFy
YWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJ
CWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAw
LCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1Jl
Y3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5
NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAw
KTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAs
IDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywg
MSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0
Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXgu
ZGVzY3JpcHRpb24pOwogCQl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggOWIzZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNl
MC4uYzU1MzdlNDdiNmY5OTM1OGFlNTFjZTZkNzAwMjgxYjdhY2QwODc3YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODQ5LDcgKzg0OSwx
MCBAQCB3ZWJraXQub3JnL2IvMjAzNTE3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1zaXppbmcvZHluYW1pYy1hdmFpbAogIyBTdGFsZS13aGlsZS1yZXZhbGlkYXRlIGlz
IG5vdCBzdXBwb3J0ZWQgb24gV0sxCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzIwNTMx
NCBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KKyMgUmVzdWx0cyBhcmUgZ29vZCBvbiBDYXRhbGlu
YSBhbmQgbmV3ZXIuIERlbGV0ZSB0aGVzZSBsaW5lcyB3aGVuIHdlIHN0b3Agc3VwcG9ydGluZyB0
aGVzZSBvbGRlciB2ZXJzaW9ucyBvZiBtYWNPUy4KK1sgU2llcnJhIF0gZWRpdGluZy9tYWMvaW5w
dXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KK1sg
SGlnaFNpZXJyYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdl
LXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIE1vamF2ZSBdIGVkaXRpbmcvbWFjL2lucHV0L2Zp
cnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9y
ZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIApAQCAtOTYzLDQgKzk2
Niw0IEBAIHdlYmtpdC5vcmcvYi8yMDk0OTQgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLW5vLW1v
dXNlbW92ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwOTU2MCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVu
dC1wcm9ncmVzcy5odG0gWyBQYXNzIENyYXNoIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA5
NjIxIGZhc3QvbG9hZGVyL2NoaWxkLWZyYW1lLWFkZC1hZnRlci1iYWNrLWZvcndhcmQuaHRtbCBb
IFBhc3MgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9i
LzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGFjYjFlZjZjMzNmMWRjZjQ5NmI2ZGE3YWZlNzVhZWRkNzExYWFl
OWQuLmY0MjQ0ZGJmMTM4ZmI5YzgyNDdjMjM5MmUzNzJhODQ5YmE1NGNmY2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIyMyw5ICsyMjMs
OSBAQCB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL21vdmUtY3Vyc29y
LXRvLWJlZ2lubmluZy1vZi1hdXRvY29ycmVjdAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L21hYy9zcGVsbGluZy9yZW1vdmluZy11bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3Jy
ZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LWNhbmRpZGF0ZS1hbGxvd3MtYXV0b2Nv
cnJlY3Qtb24tbmV4dC13b3JkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYg
ZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2Nl
cHRhbmNlLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJr
ZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJs
YXBwaW5nLWxpbmVzLWxhcmdlLWZvbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1o
eXBoZW4uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLWxhcmdlLWZv
bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGZh
c3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gtYnQtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGZhc3Qvd3JpdGluZy1t
b2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKQEAgLTEwNzQsNCArMTA3NCw0IEBAIHdlYmtpdC5vcmcvYi8yMDk2MjQgWyBS
ZWxlYXNlIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZml4ZWQvZm91ci1iYXJzLXpvb21lZC5o
CiAKIHdlYmtpdC5vcmcvYi8yMDk2NzIgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQog
Ci13ZWJraXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJl
ci1zdXBwb3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2ODggbWVkaWEvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyLXN1cHBvcnQvc2NydWJiZXItc3VwcG9ydC1jbGljay5o
dG1sIFsgUGFzcyBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGMzNzA2YzE5NWMyNGZlOTA2OTNhMmJhY2I4MjczYTI1Y2RmYjU2YTAuLjVlOTZi
Nzk5Zjk5NDIzYzAzZjExYmE4OGY0OTA1Zjc2ZTNhNjkxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcyLDcgKzE4NzIsNyBAQCB3ZWJraXQub3Jn
L2IvMjA0ODIwIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci02Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4
dC9lbW9qaS1nZW5kZXItOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjA0ODIwIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci05Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGlu
Zy9tYWMvc2VsZWN0aW9uL2NvbnRleHQtbWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2Vs
ZWN0aW9uL2NvbnRleHQtbWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDQyNDcgWyBDYXRhbGluYSBdIHdlYmF1ZGlvL3NpbGVuY2Ut
YWZ0ZXItcGxheWJhY2suaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFu
Z2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRjYzI2
ZDRiMmQyNjRjMmVlNWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMjQgKzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRp
dGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMyBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpX
ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLTEy
MzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAsMTgK
LTEwLDU3Miw4LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0xMCw1
NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAsMCww
LDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1
dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2UwNzQw
MTAxMDYwZWNjYzQ5MjA1NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRmNWMz
ZDMyYzQxMjFlMDQyNzQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0
cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3Rpbmcg
dGV4dCB3aXRoIGJyIGVsZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwgMTAw
KTogaGVsbG8KICg2LCAxKToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEw
MCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJh
bmdlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1
dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAzOWYx
NTMxM2Y0ZGM0MmExNDRlZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3OGYz
MmJkZjVlZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQv
YXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2Ut
MDAxLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAg
fQogICAgICAgICAgICAgbG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0
cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAg
IGxvZygiKDYsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKDYsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAiICsg
dGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEpLnN0
cmluZygpKTsgLy8gc2hvdWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAi
ICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwg
MCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6
ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAw
LCAxMDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAw
KTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgx
MDAsIDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6
ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAw
LCAxMDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQt
c3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUzZjll
NTZlMTdlYTE3MzU4ZWExYzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNlMTIx
ZTQ2ODNiZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQv
YXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJh
bmdlLWV4cGVjdGVkLnR4dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAoMTI8
Yj4zPGk+NDU2PC9pPjwvYj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAyKTog
NgotKDEwMCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKTog
CisoMTAwLCAxMDApOiAKIAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19f
NF81KQogdG90YWwgbGVuZ3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UuaHRtbAppbmRleCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODliMGMz
Li5jZjZjOTExZDRiNTc1YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0
dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5
IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDApOiAi
ICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAsIDEw
MCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRDb250
cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwogICAg
ICAgICAgICAgbG9nKCIoNSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRT
dWJzdHJpbmdGcm9tUmFuZ2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIoMTAw
LCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5n
ZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAw
LCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygi
KDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAw
LCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBsb2coIlxuVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KSIp
OwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZuYnNw
OyZuYnNwOzMgJm5ic3A7Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394821</attachid>
            <date>2020-03-28 09:24:23 -0700</date>
            <delta_ts>2020-03-28 15:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328092420.patch</filename>
            <type>text/plain</type>
            <size>166245</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdiZmZkNjliNzczM2Yy
YTExNzU2Mzk1ZmY2ZThkY2QwZWM0YTNmYi4uNDZmNzY5OGI2MjFjZDI3ZmU0MGQ0ODhhODhkMWQ3
YjczYmE1ZTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTY1NzcpOiBQcmV2aW91
cyBwYWdlIGNvbnRpbnVlcyB0byBkaXNwbGF5IGFmdGVyIG5hdmlnYXRpbmcgdG8gbWVkaWEgZG9j
dW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNTQ3MDQwYTJlYjkyOWEyMjRlMGE5YzcyYzE1YTczZDZhNDQ2NTk3
Yi4uMTZjZmRlMDUxNTlhNmZjYjM1NTQyOWM4ZDMxYjc0OWFjNThlOWRiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
IG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKIDIwMjAtMDMtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBEZWxheSBwcm9jZXNzIHN1c3BlbnNpb24gZm9yIGEgd2hpbGUgYWZ0ZXIgbG9hZGlu
ZyBhbiBhcHAgbGluawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiZDlkYmNhZGQ2
YTFhY2U0YWQ4M2U0MzRkZjhkZjU0Yzc5MDE3N2YuLmM0ZDYzNjhhNjc5YWI4NWFmOTA5YjljZTcz
MjEzZjhkMTdmYTQ1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MCBAQAorMjAyMC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBs
aXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMjAt
MDMtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgc2hvdWxkIGF2b2lkIHJlYWRpbmcgVVJMIHN0cmluZ3Mg
ZnJvbSB0aGUgcGFzdGVib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWFkNTM3ODUzMjRiYjM0
YzBkZGI5ZGNjMTE3MGM4Y2RkNGEzNjZhOC4uNzk3ZDNjMTM5NDgzM2FkODhiNzUzNGRkMjRlM2Rm
ZTY3NjE5ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00ODcsNiArNDg3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMuaAogCisgICAgZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCiAgICAgZWRp
dGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25IaWdo
bGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxpbmUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhM2M0YjRk
ZjE5NDI5Mzk0YWYzODNmZjI1MGY2MDI1OTk2Nzk0MmIuLmM1OTBlMTVlYjBmZjBkNzFjMzk2ODM0
NmM3ZTU3YjY0ZDcwNTcyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzQsNiArMjczNCw3IEBACiAJCTkzRjE5QjE3MDgy
NDVFNTkwMDFFOUFCQyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxp
YmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJH
TExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oICovOyB9
OwogCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDVCRjEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi87IH07CisJCTkzRjJDQzkzMjQy
N0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJh
Y3RlclJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2RjFFQjEyN0Y3
MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJOTNGOTI1NDMwRjdF
RjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcy
MDA4NTQwNjQgLyogSlNDb21tZW50LmggKi87IH07CkBAIC0xMDkzNCw2ICsxMDkzNSw3IEBACiAJ
CTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHTExvc2VDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRjEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4
dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29u
dGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUIxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTksNiArMjE3NjEsNyBAQAogCQkJCTkzMzA5RDhDMDk5
RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi8sCiAJCQkJRjREOTgx
N0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8sCiAJCQkJ
RjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovLAor
CQkJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovLAogCQkJ
CTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywK
IAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
ICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjk2NDIsNiArMjk2NDUsNyBAQAogCQkJCUZEMzE2MDAyMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
MDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ODMxMDc1Y2QzMTFkOTUyYzJiMTg2NTliZmUzNDg1NGVhMTdjNzViLi5kNTYyOTA5ZmZkMjFkNTg0
NmEzNzQ4YTQ3NGQ2ZTM5Y2VhOGE0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjMzOCwxMSArMjMzOCwxMCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKWxpdmVSYW5nZQogCiAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJ
TlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFuZ2Uu
bGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJ
TlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0
aW9uOwotICAgICAgICAKKwogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
d2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNlbnRy
YXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KICAgICAvLyBXZSBo
YXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUg
RE9NIGZvciB0aG9zZSBpcyBub3QKQEAgLTIzNTIsNyArMjM1MSw5IEBAIC0gKFJlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50KiBz
ZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksICpyYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5lMTNlMzNjOGZhNmQ4MmI2Zjhi
NmEyMzg0ZDk1YThiZjQ4MTgwYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQuLjM2MmQ3NDc0
MzQ5ZTRiY2Y4YjM2MzljZGY0MTJjYTc5YTNjOGIwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsKIAorc3RydWN0
IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAgICB+
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNv
bnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1h
cmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVy
cHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAgIHZvaWQgYWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOworICAgIHZvaWQg
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2VkQ29udGVudE1h
cmtlcihSYW5nZSYpOwogCkBAIC0xMDcsNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgYWRkTWFya2VyKE5vZGUmLCBjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYpOworICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcj4gTWFya2Vy
TGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8
TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOTkzZTk1MWYx
YTUwYTRkYmE5ZjkzYzFlODFmZTVlMmIxN2FlN2Y5OC4uYzI4ZTcwNmIxMDU2ZjZlYTVlOTA0OWQw
MGE0NjJjZDNhNWExMjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIyNiw3ICsyMjYsNyBA
QCBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiAv
LyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0byAibWFrZSIgaW5zdGVhZCBvZiAiY3Jl
YXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0IGFs
bG9jYXRlIGhlYXAgb2JqZWN0cy4KIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKLVBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CitXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25z
dCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBiNGZlMmI4
NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhLi5hNDMzOGFiMjBmYzUyZjJmZjI3ZGNi
NWI3MDIwOGE3ZjdiMzA2MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTUz
LDQgKzUzLDIzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3Qg
U2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9
PSBiLmVuZDsKIH0KIAorLy8gRklYTUU6IE5vZGU6OmlzQ2hhcmFjdGVyRGF0YSBzaG91bGQgdXNl
IGFuIGFsZ29yaXRobSBsaWtlIHRoaXMsIHNpbmNlIEknbSBhc3N1bWluZyBpdCdzIGZhc3RlciB0
aGFuIHRoZSBpc0NoYXJhY3RlckRhdGFOb2RlIHZpcnR1YWwgY2FsbCBpbiBtb3N0IGNhc2VzLgor
c3RhdGljIGJvb2wgZmFzdElzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKQoreworICAg
IHJldHVybiAhbm9kZS5pc0NvbnRhaW5lck5vZGUoKSAmJiAobm9kZS5pc1RleHROb2RlKCkgfHwg
bm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgTm9kZTo6bGVuZ3RoIHNpbmNlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBjYWxscyB0aGlzIGEg
bm9kZSdzIGxlbmd0aC4KK3N0YXRpYyB1bnNpZ25lZCBsZW5ndGgoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICBpZiAoZmFzdElzQ2hhcmFjdGVyRGF0YShub2RlKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PENoYXJhY3RlckRhdGE+KG5vZGUpLmxlbmd0aCgpOworICAgIHJldHVybiBub2RlLmNv
dW50Q2hpbGROb2RlcygpOworfQorCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4geyB7IG5vZGUsIDAgfSwgeyBub2Rl
LCBsZW5ndGgobm9kZSkgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4
IGFjZDk4NTVhODkxOWMzNzZlMTU3ZDFjZWQ5YzVkZWVkN2ExOTU3MjQuLmJkMGUxYzRlY2QwYTAx
ODQzN2YxOTkwNDZlNTU3ZGNhMmNjMjcxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC01MSw2ICs1MSw5IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgU2ltcGxlUmFuZ2UoY29u
c3QgUmVmPFJhbmdlPiYpOwogfTsKIAorU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoTm9kZSYpOworCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2Um
LCBjb25zdCBTaW1wbGVSYW5nZSYpOwogCiBpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdl
KGNvbnN0IFJlZjxSYW5nZT4mIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZWJkNGNhYjMyNmYyYzA5NzU1
NDBjYjFkNmY5ZTdhMTIyNzliMjk4OC4uMTI2ODEzYzZkZDBiM2I3OGRkYmQzMjJjMzEzMzRlNjg4
MDZmOThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC01OTksMTcgKzU5OSwxOCBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYg
cmFuZ2UsCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlLmNsb25l
UmFuZ2UoKSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgpOwogCiAgICAgLy8gUmVjYWxjdWxhdGUgcHJh
Z3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kIG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBo
UmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMw
NTMxNSBCdWd6aWxsYTogODk1MjYKLSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCh0cmVlU2NvcGVSb290LnB0cigpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSwgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwotICAgIGlmICgh
dXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAgYXV0byB1cGRh
dGVkUGFyYWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiA9IHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHModHJlZVNjb3BlUm9vdCksIHBh
cmFncmFwaE9mZnNldEluVHJlZVNjb3BlKTsKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhFbmRD
b250YWluaW5nQ29ycmVjdGlvbiA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoRW5kQ29u
dGFpbmluZ0NvcnJlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRFbmQodXBkYXRlZFBh
cmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24sIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkp
OworICAgIENoYXJhY3RlckNvdW50IGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCA9
IGFsdGVybmF0aXZlLmxlbmd0aCgpOworICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSh7IHVwZGF0ZWRQYXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3JyZWN0
aW9uLCAqdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uIH0sIHsgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hhcmFjdGVyQ291bnQg
fSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgcmVwbGFjZW1lbnQgc3VjY2VlZGVkLgotICAg
IGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkgIT0gYWx0ZXJuYXRpdmUpCisg
ICAgaWYgKHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlKSAhPSBhbHRlcm5hdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5tYXJrZXJzKCk7CisgICAgYXV0byYgbWFya2VycyA9IHJlcGxhY2VtZW50UmFu
Z2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgZm9yIChhdXRvIG1hcmtlclR5cGUg
OiBtYXJrZXJUeXBlc1RvQWRkKQogICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcihyZXBsYWNlbWVu
dFJhbmdlLCBtYXJrZXJUeXBlLCBtYXJrZXJEZXNjcmlwdGlvbkZvckFwcGxpZWRBbHRlcm5hdGl2
ZVRleHQoYWx0ZXJuYXRpdmVUeXBlLCBtYXJrZXJUeXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGJiOTJjMDIxMjFhM2I3YjM5MmY1
MjlmOGFiNzZlNWJlNDYwYjIzNDkuLjA4NGVhNzJjOGFkMjUxMjk2YjQzOTJiNmE5YmM2N2Y1ZWIw
ZDhhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CkBAIC0yODMsMTIgKzI4Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBl
bmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICB7
Ci0gICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBh
dXRvIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZS5nZXQoKSwgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAgICBpZiAoc3RhcnRSYW5nZSAm
JiBlbmRSYW5nZSkKLSAgICAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgfQorICAgIGF1dG8g
c3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFj
dGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksIHN0YXJ0
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgYXV0byBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpzY29wZSksIGVuZEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucykpOworICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKTsKIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5
U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxYWVkYmZmMzcyYWJm
OWI3ZmQyYTI2ZWYzNzdjZWJjYjVkMmYxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1
Y3QgX05TUmFuZ2UgTlNSYW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXplX3Q7CisKK3N0cnVjdCBDaGFyYWN0ZXJSYW5n
ZSB7CisgICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRpb24geyAwIH07CisgICAgQ2hhcmFjdGVyQ291
bnQgbGVuZ3RoIHsgMCB9OworCisjaWYgVVNFKENGKQorICAgIG9wZXJhdG9yIENGUmFuZ2UoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgb3BlcmF0b3IgTlNSYW5n
ZSgpIGNvbnN0OworI2VuZGlmCit9OworCisjaWYgVVNFKENGKQorT3B0aW9uYWw8Q2hhcmFjdGVy
UmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyNlbmRpZgorCisjaWYgVVNFKEZP
VU5EQVRJT04pCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKE5T
UmFuZ2UpOworI2VuZGlmCisKKy8vIGlubGluZXMKKworI2lmIFVTRShDRikKKworaW5saW5lIENo
YXJhY3RlclJhbmdlOjpvcGVyYXRvciBDRlJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0ZS
YW5nZU1ha2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0
ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFuZ2UgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kIHx8IHJhbmdlLmxvY2F0aW9uID49IDApOwor
ICAgIEFTU0VSVChyYW5nZS5sZW5ndGggPj0gMCk7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uIDwg
MCB8fCByYW5nZS5sZW5ndGggPCAwKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5n
ZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5nZS5sZW5ndGgpIH07
Cit9CisKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pICYmIGRlZmluZWQoX19PQkpDX18p
CisKK2lubGluZSBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgTlNSYW5nZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0
aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlIHJhbmdlKQor
eworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxvY2F0aW9u
LCByYW5nZS5sZW5ndGggfTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5k
ZXggMTU0YmI4N2MzMzFkNDFkOTE2MTYyZTdkOTExMGQ0Nzg4MjdkMWM3MC4uNDZjMjUxNzJlYjJi
ZWRhZjI1ZTc5MzIzZjViZjM4MjM5Y2ExMGFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE0MTUsOCArMTQxNSw4IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgc3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZGVz
dGluYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbnQgc3RhcnRJbmRleCA9IC0x
OwotICAgIGludCBlbmRJbmRleCA9IC0xOworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBz
dGFydEluZGV4OworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBlbmRJbmRleDsKICAgICBi
b29sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCA9IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9u
YWwoKTsKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgIWVuZGluZ1NlbGVjdGlvbigpLmlz
Tm9uZSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1MjgsMTYgKzE1MjgsMTUgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3R5bGVJbkVtcHR5UGFyYWdyYXBoICYmIHNlbGVj
dGlvbklzRW1wdHlQYXJhZ3JhcGgpCiAgICAgICAgIGFwcGx5U3R5bGUoc3R5bGVJbkVtcHR5UGFy
YWdyYXBoLmdldCgpKTsKIAotICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFydEluZGV4
ICE9IC0xKSB7CisgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggJiYgZW5k
SW5kZXgpIHsKICAgICAgICAgLy8gRnJhZ21lbnQgY3JlYXRpb24gKHVzaW5nIGNyZWF0ZU1hcmt1
cCkgaW5jb3JyZWN0bHkgdXNlcyByZWd1bGFyCiAgICAgICAgIC8vIHNwYWNlcyBpbnN0ZWFkIG9m
IG5ic3BzIGZvciBzb21lIHNwYWNlcyB0aGF0IHdlcmUgcmVuZGVyZWQgKDExNDc1KSwgd2hpY2gK
ICAgICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3Zl
IG9wZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAg
ICAvLyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAw
LCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRl
eCArIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkKLSAgICAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LT5zdGFydFBv
c2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGly
ZWN0aW9uYWwpKTsKKyAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJ
dGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAg
ICAgIGF1dG8gZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCks
IGRlc3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bih7IHN0YXJ0LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDYwNDdiOTQ2NDNlM2Q1
ZWE1NzNhZmJkY2Y2NzZiMjAxMWFjODc1ZjcuLmRmYmE3MjFmNWVhZDNhMjAzZWQ2ZjY0YjliYzA1
ZWFkMjM5ZWMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNCwxMiAr
MTExNCwxMCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRo
T2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsK
LSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGlu
ZGV4LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlkYXRlIGluZGljZXMgYmVjYXVz
ZSAKLSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFuZ2UpCisgICAgaWYgKCFzY29w
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyByYW5nZS0+c3RhcnRQb3NpdGlv
bigpIH07CisgICAgQ2hhcmFjdGVyQ291bnQgaW5kZXhBc0NoYXJhY3RlckNvdW50ID0gaW5kZXg7
CisgICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXhB
c0NoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucykpIH07CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQzYWMwZmMwMTA5NTJiYWM0ZjEwNmUyYmI5ZDUw
YWU3NGVmN2ZhMjUuLmI2OTQ4OWY3NjU3NWQ1ZmEyODNiZWNhZDA0YzkxMmVlZDkwZGM5NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyMjMsMTUgKzIyMjMsMTUgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgIE5vZGUmIHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdl
LT5lbmRDb250YWluZXIoKTsKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwID0gc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgCi0gICAgaW50IG1pc3NwZWxsaW5n
T2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBtaXNzcGVsbGluZ09mZnNldCA9IDA7CiAg
ICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwotICAgIGludCBncmFtbWFyUGhyYXNlT2Zm
c2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAg
ICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKICAgICBTdHJpbmcgYmFkR3JhbW1h
clBocmFzZTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAKICAgICBib29sIGlzU3BlbGxp
bmcgPSB0cnVlOwotICAgIGludCBmb3VuZE9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQg
Zm91bmRPZmZzZXQgPSAwOwogICAgIFN0cmluZyBmb3VuZEl0ZW07CiAgICAgUmVmUHRyPFJhbmdl
PiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoKSkgewpAQCAtMjMwNywxMCArMjMwNywxMCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIHBhbmVs
LCBhbmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUgbGF0ZXIu
CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSA+IDAp
OwotICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAtMSAmJiBncmFtbWFy
RGV0YWlsLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5s
ZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRoaXMgZ2V0
cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBhIHBhcmFn
cmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1tYXJEZXRh
aWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgYXV0byBiYWRHcmFt
bWFyUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgeyBn
cmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZ3JhbW1h
ckRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigp
OwogICAgICAgICAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gV2Ug
Zm91bmQgYSBtaXNzcGVsbGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2Vs
ZWN0IHRoZSBtaXNzcGVsbGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3Jl
CiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4K
ICAgICAgICAgCi0gICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxs
ZWRXb3JkLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKHNwZWxsaW5nU2VhcmNoUmFuZ2UsIHsgbWlzc3BlbGxpbmdPZmZzZXQs
IG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJF
QU0pKTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAg
ICAgICAgCkBAIC0yNzczLDcgKzI3NzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVJhbmdlRm9y
U3BlbGxDaGVja2luZyhSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYgcgogICAg
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVwbGFj
ZW1lbnQpLT5hcHBseSgpOwogfQogCi1zdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1By
ZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJh
Z3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwg
aW50IHJlc3VsdExvY2F0aW9uLCBpbnQgcmVzdWx0TGVuZ3RoKQorc3RhdGljIHZvaWQgY29ycmVj
dFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2lu
Z1BhcmFncmFwaCYgcGFyYWdyYXBoLCBSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQsIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0aW9uLCBDaGFyYWN0ZXJD
b3VudCByZXN1bHRMZW5ndGgpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBkb3duY2FzdDxDb250YWlu
ZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLnJvb3RO
b2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZvaWQgY29ycmVjdFNwZWxs
Y2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmEK
ICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVyIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFyOi8vMTAz
MDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJhbmdlPiBu
ZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1l
bnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBzcGVsbENoZWNraW5nUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0TG9j
YXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1Jh
bmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gbmV3UGFy
YWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsg
cmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGggfSk7CisgICAgYXV0byBzcGVsbENo
ZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobmV3UGFyYWdyYXBoUmFuZ2UsIHsg
cmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpIH0pOworICAgIHBhcmFncmFwaCA9
IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1Jhbmdl
KSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0ZUxpdmVSYW5nZShu
ZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
Y29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3ICsyODEwLDcgQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBW
ZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNvbXBhc3Mg
ZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNv
bnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQg
c2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0
ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAgICAgYm9vbCBy
ZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKQEAgLTI4MjMsOSArMjgyMiw5IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0
aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAgICAgICAg
IHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9uKS5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5n
ZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiAoc2VsZWN0
aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4dENoYXJB
dChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKKyAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgu
dGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0IC0gMV0g
PT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0aW9uRm9y
UGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zm
c2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAmJiBp
c0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlv
bk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNl
bGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpICYmIGlzQW1iaWd1b3Vz
Qm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSkp
CiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3Rv
cjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGlu
dCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZz
ZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlIHJlc3Vs
dFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMb2NhdGlv
biA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAg
ICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7Ci0gICAgICAgIGNv
bnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3Ro
OwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiA9IHBh
cmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0b21hdGlj
UmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIENo
YXJhY3RlckNvdW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdF
bmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIFRleHRDaGVja2luZ1R5cGUg
cmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVz
dWx0TG9jYXRpb24gPSByZXN1bHRzW2ldLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBs
YWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tp
XS5yYW5nZS5sZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdEVuZExvY2F0aW9u
ID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50
IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGguYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkg
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgYm9vbCByZXN1bHRF
bmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNl
bGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CisgICAgICAgIGJvb2wgcmVz
dWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAm
JiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCiAgICAgICAgIC8v
IE9ubHkgbWFyayBtaXNzcGVsbGluZyBpZjoKICAgICAgICAgLy8gMS4gQ3VycmVudCB0ZXh0IGNo
ZWNraW5nIGlzbid0IGRvbmUgZm9yIGF1dG9jb3JyZWN0aW9uLCBpbiB3aGljaCBjYXNlIHNob3Vs
ZE1hcmtTcGVsbGluZyBpcyBmYWxzZS4KQEAgLTI4NTAsMTYgKzI4NDksMTYgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBWZWN0b3I8VGUKICAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiAhc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNw
ZWxsaW5nCiAgICAgICAgICAgICAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tp
bmdTdGFydCgpICYmIHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
JiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgIGF1
dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwg
cmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFn
cmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAgICAgICAg
ICAgICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+aXNTcGVsbGluZ01hcmtlckFs
bG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxp
bmcsIHJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAm
JiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNo
ZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHRUeXBlID09IFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1
bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAoYXV0
byYgZGV0YWlsIDogcmVzdWx0c1tpXS5kZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGRldGFpbC5sZW5ndGggPiAwICYmIGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAg
ICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24gKyBk
ZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uICsg
ZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAgJiYgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOwor
ICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3Vs
dExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0p
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBo
LnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFp
bC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1h
clJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjg3Nyw3ICsyODc2LDcgQEAg
dm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgZG9l
c24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8gICAgKEZJ
WE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRleHQgY2hl
Y2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFjZW1lbnQg
PSByZXBsYWNlbWVudC5sZW5ndGgoKSA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5k
YXJ5OwotICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VU
b1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVu
Z3RoIH0pOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUgb25s
eSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZC4KICAgICAgICAgICAgIGlmIChyZXN1
bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0ICE9IHJl
c3VsdEVuZExvY2F0aW9uICsgMSkKQEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCBh
bGwgb3RoZXIgcmVzdWx0cyBmb3IgdGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAgICAgICAg
d2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9jYXRpb24g
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAgICAgICAg
ICAgIHdoaWxlIChpICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLnJhbmdl
LmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgaSsrOwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdl
ZCA9IHRydWU7CkBAIC0yOTMxLDcgKzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxh
Y2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQog
ICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQubGVuZ3Ro
KCkgLSByZXN1bHRMZW5ndGg7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
cmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVw
bGFjZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50
UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
OjpBY2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNh
biBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0yOTQ1LDgg
KzI5NDQsOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVj
a1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGggZXh0ZW5kZWRQYXJhZ3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAgICAgICAg
Ly8gUmVzdG9yZSB0aGUgY2FyZXQgcG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSByZXBsYWNl
bWVudHMKICAgICAgICAgZXh0ZW5kZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsK
LSAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZz
ZXQgPj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5n
dGgoKSkgewotICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdy
YXBoLnN1YnJhbmdlKDAsIHNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0b3JlU2Vs
ZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBo
LnJhbmdlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRl
bmRlZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAg
ICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlv
bigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJh
Z3JhcGhCb3VuZGFyaWVzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwpAQCAtMjk3Myw3ICsyOTcyLDggQEAgdm9pZCBFZGl0b3I6OmNo
YW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmluZywgc2Vs
ZWN0aW9uLmdldCgpKTsKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKCpzZWxl
Y3Rpb24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmluZywgU2Vs
ZWN0UmVwbGFjZW1lbnQ6Ok5vLCBTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnQp
OwotICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5j
aGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJD
b3VudCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSByZXBsYWNlZFN0cmlu
Zy5sZW5ndGgoKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7
IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFyYWN0
ZXJDb3VudCB9KTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KS5tYXJrZXJzKCkuYWRkTWFya2VyKGNoYW5nZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50LCBTdHJpbmcoKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5tYXJr
UmV2ZXJzZWQoY2hhbmdlZFJhbmdlKTsKICNlbHNlCkBAIC0zNzc3LDEyICszNzc3LDEyIEBAIHZv
aWQgRWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiByYW5nZSwgY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nCiAKICAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiAr
IHJlbGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgpOwogCi0gICAgICAgIHVuc2lnbmVkIHN1YnJh
bmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOwotICAg
ICAgICB1bnNpZ25lZCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxh
dGl2ZVN0YXJ0UG9zaXRpb24gKyAxOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZU9m
ZnNldCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKKyAgICAgICAg
Q2hhcmFjdGVyQ291bnQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVs
YXRpdmVTdGFydFBvc2l0aW9uICsgMTsKIAotICAgICAgICBhdXRvIHN1YnJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVuZ3RoKTsK
KyAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyBz
dWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGggfSk7CiAKLSAgICAgICAgbWFya2VkUmFuZ2Vz
LmFwcGVuZChzdWJyYW5nZS5wdHIoKSk7CisgICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQoY3Jl
YXRlTGl2ZVJhbmdlKHN1YnJhbmdlKSk7CiAgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKHN1YnJhbmdlLCBEb2N1bWVudE1hcmtlcjo6VGVsZXBob25lTnVt
YmVyKTsKIAogICAgICAgICBzY2FubmVyUG9zaXRpb24gKz0gcmVsYXRpdmVFbmRQb3NpdGlvbiAr
IDE7CkBAIC0zOTkyLDE0ICszOTkyLDE0IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb250ZXh0
UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIAogUmVmUHRyPFJhbmdlPiBFZGl0b3I6
OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVz
dWx0KSBjb25zdAogewotICAgIGlmICghcmVzdWx0Lmxlbmd0aCkKKyAgICBpZiAoIXJlc3VsdC5y
YW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFJhbmdl
PiBjb250ZXh0UmFuZ2UgPSBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAg
aWYgKCFjb250ZXh0UmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0
ZXJSYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQucmFuZ2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6
OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGFkODI3ODg5Y2FiNTg1ZDMwMTU5NmE2M2FiZGVjNmZm
NGI3NWUzNzQuLmY4MzI3MmMyOGYwYTBkN2Q2N2MwZTcxMjI0YTc3YWM5NDFlYWY1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTYzLDggKzYzLDggQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVj
a2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgYmFkR3JhbW1hcjsKICAgICAgICAgYmFkR3JhbW1hci50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgYmFkR3JhbW1hci5sb2NhdGlvbiA9IGNoZWNr
TG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247Ci0gICAgICAgIGJhZEdyYW1tYXIubGVuZ3Ro
ID0gYmFkR3JhbW1hckxlbmd0aDsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sb2NhdGlvbiA9
IGNoZWNrTG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247CisgICAgICAgIGJhZEdyYW1tYXIu
cmFuZ2UubGVuZ3RoID0gYmFkR3JhbW1hckxlbmd0aDsKICAgICAgICAgYmFkR3JhbW1hci5kZXRh
aWxzID0gV1RGTW92ZShiYWRHcmFtbWFyRGV0YWlscyk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KGJhZEdyYW1tYXIpOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHN0YXRpYyB2b2lkIGZpbmRNaXNzcGVs
bGluZ3MoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8
CiAKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZzsKICAgICAgICAg
ICAgIG1pc3NwZWxsaW5nLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAg
ICAgICAgIG1pc3NwZWxsaW5nLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlzc3BlbGxpbmdMb2Nh
dGlvbjsKLSAgICAgICAgICAgIG1pc3NwZWxsaW5nLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3Ro
OwotICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0Nv
cnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxp
bmcubG9jYXRpb24sIG1pc3NwZWxsaW5nLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsg
bWlzc3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxlbmd0
aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1l
bnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4
dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24sIG1pc3NwZWxsaW5nLnJhbmdl
Lmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1pc3NwZWxsaW5nKTsKICAgICAgICAgfQogCkBAIC0xMzksMTQgKzEzOSwxMyBAQCB2
b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VUb05leHRFbmQoKQogdm9pZCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVlcygpCiB7
CiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9jaGVja2luZ0VuZC5yZXNldCgp
OwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNldCgpOwogICAgIG1fYXV0b21h
dGljUmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29mZnNldEFzUmFuZ2UgPSBudWxs
cHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpyYW5nZUxlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQo
cGFyYWdyYXBoUmFuZ2UoKSk7CiB9CkBAIC0xNTgsMTIgKzE1NywxMiBAQCBSYW5nZSYgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX3Bh
cmFncmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6c3Vi
cmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdAorUmVm
PFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKENoYXJhY3RlclJhbmdlIHJh
bmdlKSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFw
aFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAgIHJldHVybiBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBhcmFncmFwaFJhbmdlKCksIHJh
bmdlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZz
ZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitFeGNlcHRpb25PcjxDaGFyYWN0
ZXJDb3VudD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHBh
cmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKICAgICBhdXRvIGVuZCA9IG1ha2VCb3Vu
ZGFyeVBvaW50KHBvc2l0aW9uKTsKQEAgLTE4NywzNSArMTg2LDMzIEBAIFJhbmdlJiBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6Om9mZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9vZmZz
ZXRBc1JhbmdlOwogfQogCi1jb25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4
dCgpIGNvbnN0CitTdHJpbmdWaWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051bGwoKSkK
ICAgICAgICAgbV90ZXh0ID0gcGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAgICByZXR1
cm4gbV90ZXh0OyAKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFy
dCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5n
U3RhcnQoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQogICAgICAgICBtX2No
ZWNraW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAgIHJldHVy
biAqbV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVj
a2luZ0VuZCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNo
ZWNraW5nRW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAgICAgIG1f
Y2hlY2tpbmdFbmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwotICAgIHJl
dHVybiAqbV9jaGVja2luZ0VuZDsKKyAgICByZXR1cm4gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tp
bmdMZW5ndGgoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5n
dGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0xlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nTGVuZ3RoKQogICAgICAgICBt
X2NoZWNraW5nTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobV9jaGVja2luZ1JhbmdlKTsKICAgICBy
ZXR1cm4gKm1fY2hlY2tpbmdMZW5ndGg7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKIHsKICAg
ICBpZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KQogICAgICAgICByZXR1cm4gKm1fYXV0
b21hdGljUmVwbGFjZW1lbnRTdGFydDsKQEAgLTIyOSw3ICsyMjYsNyBAQCBpbnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKICAgICByZXR1
cm4gKm1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291
bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgIHJl
dHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKQEAgLTI0NiwxMiArMjQzLDEyIEBA
IFRleHRDaGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYgY2xp
ZW50LCBSYW5nZSYgcmFuZ2UpCiAKIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hl
bHBlcigpID0gZGVmYXVsdDsKIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJl
ZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxs
aW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSkKIHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKIAogICAgIFN0cmluZyBm
aXJzdE1pc3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOworICAgIENo
YXJhY3RlckNvdW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAKICAgICBmb3IgKFdvcmRBd2Fy
ZUl0ZXJhdG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3VycmVudENodW5rT2Zmc2V0ICs9
IGl0LnRleHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFN0cmluZ1ZpZXcg
dGV4dCA9IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjc0LDE3IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vCiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBtaXNzcGVs
bGluZ0xlbmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGggJiYgbWlz
c3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlz
c3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSBy
YW5nZSBvZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zmc2V0ICsg
bWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgYXV0
byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UsIHsgY3Vy
cmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Q2hhcmFj
dGVyQ291bnQ+KG1pc3NwZWxsaW5nTGVuZ3RoKSB9KTsKIAogICAgICAgICAgICAgLy8gUmVtZW1i
ZXIgZmlyc3QtZW5jb3VudGVyZWQgbWlzc3BlbGxpbmcgYW5kIGl0cyBvZmZzZXQuCiAgICAgICAg
ICAgICBpZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsKICAgICAgICAgICAgICAgICBmaXJzdE1pc3Nw
ZWxsaW5nT2Zmc2V0ID0gY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsK
ICAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nID0gdGV4dC5zdWJzdHJpbmcobWlzc3Bl
bGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gbWlzc3BlbGxpbmdSYW5nZS5wdHIoKTsKKyAg
ICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UobWlz
c3BlbGxpbmdSYW5nZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFN0b3JlIG1h
cmtlciBmb3IgbWlzc3BlbGxlZCB3b3JkLgotICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxp
bmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKKyAgICAgICAgICAgIG1pc3NwZWxs
aW5nUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5n
UmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAKICAgICAgICAgICAgIC8vIEJhaWwg
b3V0IGlmIHdlJ3JlIG1hcmtpbmcgb25seSB0aGUgZmlyc3QgbWlzc3BlbGxpbmcsIGFuZCBub3Qg
YWxsIGluc3RhbmNlcy4KICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTI5OCw3ICsyOTUs
NyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQm
IGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogICAgIHJldHVybiBmaXJzdE1pc3NwZWxsaW5n
OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQorU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewog
ICAgIGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKQEAgLTMxMyw4ICszMTAsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBp
ZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7
CiAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IDA7Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sb2Nh
dGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFt
bWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdl
Lmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAg
b3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIApA
QCAtMzM0LDggKzMzMSw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgd2hpbGUgKHRv
dGFsTGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxSYW5nZUxlbmd0aCkgewogICAgICAgICAvLyBJdGVy
YXRlIHRocm91Z2ggdGhlIHNlYXJjaCByYW5nZSBieSBwYXJhZ3JhcGhzLCBjaGVja2luZyBlYWNo
IG9uZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIuCiAgICAgICAgIGF1dG8gY3VycmVudExlbmd0
aCA9IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgaW50IGN1cnJlbnRT
dGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7Ci0gICAg
ICAgIGludCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKKyAgICAgICAgQ2hhcmFj
dGVyQ291bnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0
T2Zmc2V0IDogMDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudEVuZE9mZnNldCA9IGN1
cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAg
IC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9y
aWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAg
ICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVh
LgpAQCAtMzQ2LDkgKzM0Myw5IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAg
ICBTdHJpbmcgcGFyYWdyYXBoU3RyaW5nID0gcGxhaW5UZXh0KHBhcmFncmFwaFJhbmdlLnB0cigp
KTsKICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCkgPiAwKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBmb3VuZEdyYW1tYXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBp
bnQgc3BlbGxpbmdMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJh
c2VMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJEZXRhaWxMb2NhdGlv
biA9IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdMb2NhdGlvbiA9
IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZUxvY2F0aW9u
ID0gMDsKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyRGV0YWlsTG9jYXRp
b24gPSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gcmVzdWx0czsKQEAgLTM2MSw0MiArMzU4LDQyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFy
LCBiCiAgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRD
aGVja2VyKCksIHBhcmFncmFwaFN0cmluZywgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywgY3VycmVu
dFNlbGVjdGlvbik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3Vs
dHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQg
JiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCA+IDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlvbiA+PSAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQubG9jYXRpb247Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHJl
c3VsdC5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdl
LmxvY2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSAw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQucmFu
Z2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBh
cmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFu
Z2UubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29y
ZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3Vs
dC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LmxvY2F0aW9uIDwg
Y3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyByZXN1bHQubGVuZ3RoID4gY3Vy
cmVudFN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2Nh
dGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1
bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0
LnJhbmdlLmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3Vs
dCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBk
ZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIg
cmVzdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuZGV0YWlscy5zaXplKCk7IGorKykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZy
ZXN1bHQuZGV0YWlsc1tqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsLT5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsLT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYg
cmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGN1
cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LmxvY2F0aW9uICsgZGV0
YWlsLT5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsg
ZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJh
bmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubGVu
Z3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LnJhbmdl
LmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlv
bikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbEluZGV4
ID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0
aW9uID0gcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRHcmFtbWFyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZm91bmRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBo
cmFzZUxvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gcmVzdWx0LmRldGFpbHNb
Z3JhbW1hckRldGFpbEluZGV4XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFt
bWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJl
c3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJh
c2UgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVz
dWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJh
ZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFkR3Jh
bW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0YWls
TG9jYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9IHNw
ZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAg
IENoYXJhY3RlckNvdW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJl
bnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IGNoYXJhY3RlckNvdW50
KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICptYWtlQm91
bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAgICAgICAg
ICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CkBAIC00MDUsNyArNDAyLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1t
YXJQaHJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0Owor
ICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
Z3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgZ3Jh
bW1hclBocmFzZU9mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludCht
X3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxp
bmcgPSBmYWxzZTsKQEAgLTQyOCwxOCArNDI1LDE4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIAotaW50IFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1t
YXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK2ludCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBn
cmFtbWFyRGV0YWlscywgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBD
aGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29s
IG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4gRmluZCB0
aGUgZWFybGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2ggcmFuZ2Ug
KGlmIGFueSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBmb3IgZWFj
aCBkZXRhaWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29G
YXIgPSAtMTsKKyAgICBDaGFyYWN0ZXJDb3VudCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIg
PSAwOwogICAgIGludCBlYXJsaWVzdERldGFpbEluZGV4ID0gLTE7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0
IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZncmFtbWFyRGV0YWlsc1tpXTsKLSAgICAgICAgQVNT
RVJUKGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9u
ID49IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAg
ICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgIAotICAgICAg
ICBpbnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2Nh
dGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgIENoYXJhY3RlckNvdW50IGRldGFpbFN0
YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwt
PnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAKICAgICAgICAgLy8gU2tpcCB0aGlzIGRldGFpbCBp
ZiBpdCBzdGFydHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UKICAgICAgICAgaWYg
KGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPCBzdGFydE9mZnNldCkKQEAgLTQ1MCwzMCAr
NDQ3LDMwIEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwo
Y29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChtYXJrQWxsKSB7Ci0gICAgICAgICAgICBhdXRvIGJhZEdy
YW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxl
bmd0aCk7Ci0gICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJr
ZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8g
YmFkR3JhbW1hclJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UuZ2V0KCksIHsg
YmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPnJhbmdlLmxv
Y2F0aW9uLCBkZXRhaWwtPnJhbmdlLmxlbmd0aCB9KTsKKyAgICAgICAgICAgIGJhZEdyYW1tYXJS
YW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdl
LCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBvbmx5IGlm
IGl0J3MgZWFybGllciB0aGFuIG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFpbHMgYXJl
bid0IGluIGEgZ3VhcmFudGVlZCBvcmRlcikKLSAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5k
ZXggPCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+bG9jYXRpb24p
IHsKKyAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0RGV0YWls
TG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+cmFuZ2UubG9jYXRpb24pIHsKICAgICAgICAgICAgIGVh
cmxpZXN0RGV0YWlsSW5kZXggPSBpOwotICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlv
blNvRmFyID0gZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9j
YXRpb25Tb0ZhciA9IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIGVhcmxpZXN0RGV0YWlsSW5kZXg7CiB9CiAKLVN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1h
ckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0
CitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNl
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFy
YW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJl
dHVybi4KLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1h
ckRldGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24g
PSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRHcmFt
bWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNj
cmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgb3V0R3JhbW1hclBocmFzZU9mZnNldCA9IDA7
CiAgICAgCi0gICAgU3RyaW5nIGZpcnN0QmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJpbmdWaWV3
IGZpcnN0QmFkR3JhbW1hclBocmFzZTsKIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNoIHJhbmdl
IHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgZ3JhbW1hciBjaGVja2luZyBu
ZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBv
ZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgdGhl
IG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ4MSwxMSArNDc4LDExIEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKG1fcmFuZ2Uu
Y29weVJlZigpKTsKICAgICAKICAgICAvLyBTdGFydCBjaGVja2luZyBmcm9tIGJlZ2lubmluZyBv
ZiBwYXJhZ3JhcGgsIGJ1dCBza2lwIHBhc3QgcmVzdWx0cyB0aGF0IG9jY3VyIGJlZm9yZSB0aGUg
c3RhcnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZS4KLSAgICBmb3IgKGludCBzdGFydE9m
ZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgeworICAg
IGZvciAoQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8IHBhcmFn
cmFwaC5jaGVja2luZ0VuZCgpOyApIHsKICAgICAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGdy
YW1tYXJEZXRhaWxzOwogICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uID0gLTE7
CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKLSAgICAgICAgbV9jbGll
bnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyhwYXJhZ3Jh
cGgudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdy
YW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOworICAgICAgICBt
X2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGgudGV4
dCgpLnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VSVChiYWRH
cmFtbWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwpAQCAtNTA2LDcgKzUwMyw3IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0
R3JhbW1hckRldGFpbCwKICAgICAgICAgLy8ga2VwdCBnb2luZyBzbyB3ZSBjb3VsZCBtYXJrIGFs
bCBpbnN0YW5jZXMpLgogICAgICAgICBpZiAoYmFkR3JhbW1hckluZGV4ID49IDAgJiYgZmlyc3RC
YWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb3V0R3JhbW1hclBocmFz
ZU9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHBhcmFncmFwaC5jaGVja2luZ1N0
YXJ0KCk7Ci0gICAgICAgICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4
dFN1YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5n
dGgpOworICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHQo
KS5zdWJzdHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVu
Z3RoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRm91bmQgb25lLiBXZSdyZSBkb25l
IG5vdywgdW5sZXNzIHdlJ3JlIG1hcmtpbmcgZWFjaCBpbnN0YW5jZS4KICAgICAgICAgICAgIGlm
ICghbWFya0FsbCkKQEAgLTUxOCw3ICs1MTUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgYmFkR3JhbW1h
clBocmFzZUxlbmd0aDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBo
cmFzZTsKKyAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlLnRvU3RyaW5nKCk7CiB9CiAK
IGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdApAQCAtNTI5
LDcgKzUyNiw3IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBj
b25zdAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBwYXNzZWQgcmFuZ2UgZXhhY3Rs
eSBjb3JyZXNwb25kcyB0byBhIGJhZCBncmFtbWFyIGRldGFpbCByYW5nZS4gVGhpcyBpcyBhbmFs
b2dvdXMKICAgICAvLyB0byBpc1NlbGVjdGlvbk1pc3NwZWxsZWQuIEl0J3Mgbm90IGdvb2QgZW5v
dWdoIGZvciB0aGVyZSB0byBiZSBzb21lIGJhZCBncmFtbWFyIHNvbWV3aGVyZSBpbiB0aGUgcmFu
Z2UsCiAgICAgLy8gb3Igb3ZlcmxhcHBpbmcgdGhlIHJhbmdlOyB0aGUgcmFuZ2VzIG11c3QgZXhh
Y3RseSBtYXRjaC4KLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0OwogICAgIAogICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1h
ckRldGFpbDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IGZpbmRGaXJzdEJhZEdyYW1t
YXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwpAQCAtNTQyLDE1
ICs1MzksMTUgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNv
bnN0CiAgICAgaWYgKGdyYW1tYXJQaHJhc2VPZmZzZXQgPiAwKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICBBU1NF
UlQoZ3JhbW1hckRldGFpbC5sZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5y
YW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5n
dGggPiAwKTsKIAogICAgIC8vIEJhZCBncmFtbWFyLCBidXQgc3RhcnQgb2YgZGV0YWlsIChlLmcu
IHVuZ3JhbW1hdGljYWwgd29yZCkgZG9lc24ndCBtYXRjaCBzdGFydCBvZiByYW5nZQotICAgIGlm
IChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKKyAgICBpZiAo
Z3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFydCBvZiBy
YW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5kIG9mIHJh
bmdlCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihncmFtbWFyRGV0YWlsLmxlbmd0aCkg
IT0gY2hhcmFjdGVyQ291bnQobV9yYW5nZSkpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2Uu
bGVuZ3RoICE9IGNoYXJhY3RlckNvdW50KG1fcmFuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCB0byBiZSBkaXNwbGF5aW5n
IHRoaXMgZXJyb3IgKHdoZXRoZXIgb3Igbm90IHRoZSBzcGVsbGluZyBwYW5lbCBpcyBvbiBzY3Jl
ZW4pLgpAQCAtNTk0LDggKzU5MSw4IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBl
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVja2VyKCksIHBhcmFncmFwaC50ZXh0
KCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAgICAgZm9y
IChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgewotICAgICAgICAgICAgU3RyaW5n
IG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCk7CisgICAgICAg
IGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LnJhbmdlKSkgeworICAgICAgICAgICAgU3Ry
aW5nIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCkudG9TdHJp
bmcoKTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVs
bGVkV29yZCwgU3RyaW5nKCksIGN1cnJlbnRTZWxlY3Rpb24sIGd1ZXNzZXMpOwogICAgICAgICAg
ICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVk
V29yZCk7CkBAIC02MDgsMTIgKzYwNSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdI
ZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAg
ICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykg
ewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAm
JiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQu
cmFuZ2UpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdC5kZXRhaWxz
KSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sZW5ndGggPiAwKTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlm
IChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LmxvY2F0aW9uICsgZGV0YWls
LmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5s
ZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxvY2F0aW9u
ID49IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNo
ZXMoeyByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFp
bC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1t
YXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRp
b24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChhdXRvJiBndWVzcyA6IGRldGFpbC5ndWVzc2VzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZ3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOwpAQCAtNjMxLDcgKzYyOCw3IEBAIHZvaWQgVGV4dENo
ZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlz
c3BlbGxpbmdSYW5nCiB7CiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBmaW5k
Rmlyc3RNaXNzcGVsbGluZy4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kIHRoZSAib3V0IHBh
cmFtZXRlciI7CiAgICAgLy8gYWxsIHdlIG5lZWQgdG8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5j
ZS4KLSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zm
c2V0OwogICAgIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGlnbm9yZWRPZmZzZXQsIHRydWUsIGZpcnN0
TWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTY0MSw3ICs2MzgsNyBAQCB2b2lkIFRleHRDaGVj
a2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwi
IGZlYXR1cmUgb2Ygb2ZpbmRGaXJzdEJhZEdyYW1tYXIuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVl
IGFuZCAib3V0IHBhcmFtZXRlcnMiOyBhbGwgd2UgbmVlZCB0bwogICAgIC8vIGRvIGlzIG1hcmsg
ZXZlcnkgaW5zdGFuY2UuCiAgICAgR3JhbW1hckRldGFpbCBpZ25vcmVkR3JhbW1hckRldGFpbDsK
LSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zmc2V0
OwogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGlnbm9yZWRP
ZmZzZXQsIHRydWUpOwogfQogI2VuZGlmCkBAIC02NjgsNyArNjY1LDcgQEAgdm9pZCBjaGVja1Rl
eHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQs
IE9wdGlvblNldDwKICAgICBpZiAoY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyKSkgewogICAgICAgICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5ndGggPSB0
ZXh0Lmxlbmd0aCgpOwogICAgICAgICBmb3IgKGF1dG8mIG1pc3BlbGxpbmcgOiBtaXNwZWxsaW5n
cykKLSAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihn
cmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcubG9jYXRpb24pOworICAgICAgICAgICAgZ3Jh
bW1hckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwg
bWlzcGVsbGluZy5yYW5nZS5sb2NhdGlvbik7CiAgICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9y
cyhjbGllbnQsIHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRp
Y2FsRXJyb3JzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5oCmluZGV4IDNmMzllODY4ZDk5NDFlNWI4ODFiMDYxNmRkZmMxNmIzNDAxNTExZDQu
LjM0NmQ1YTgxOTJlYmRjYjc2M2IwYTVlMDY1ZjgxMTg4Y2YwYTg5ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaApAQCAtMzYsMzQgKzM2LDI4IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNo
ZWNraW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgZXhwbGljaXQgVGV4dENo
ZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYg
YXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdl
KTsKIAotICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwotICAgIFJlZjxSYW5nZT4gc3VicmFu
Z2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsKLSAgICBF
eGNlcHRpb25PcjxpbnQ+IG9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CisgICAgQ2hh
cmFjdGVyQ291bnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdl
KENoYXJhY3RlclJhbmdlKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxDaGFyYWN0ZXJDb3VudD4g
b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICB2b2lkIGV4cGFuZFJhbmdlVG9O
ZXh0RW5kKCk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0byByZXR1
cm4gYSBTdHJpbmdWaWV3LgotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0OwotCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGFuZCBqdXN0IGhhdmluZyB0aGUgY2Fs
bGVyIHVzZSB0ZXh0KCkgZGlyZWN0bHkuCi0gICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KLSAgICBTdHJpbmcgdGV4dFN1YnN0cmluZyh1bnNpZ25l
ZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vi
c3RyaW5nKHBvcywgbGVuKTsgfQotICAgIFVDaGFyIHRleHRDaGFyQXQoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiB0ZXh0KClbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KV07IH0KKyAgICBT
dHJpbmdWaWV3IHRleHQoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0g
ICAgaW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdFbmQoKSBjb25z
dDsKLSAgICBpbnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcgY2hlY2tpbmdT
dWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNraW5nU3RhcnQoKSwg
Y2hlY2tpbmdMZW5ndGgoKSk7IH0KKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ1N0YXJ0KCkg
Y29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgY2hlY2tpbmdFbmQoKSBjb25zdDsKKyAgICBDaGFy
YWN0ZXJDb3VudCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgY2hlY2tp
bmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3RyaW5nKGNoZWNraW5nU3Rh
cnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KIAogICAgIC8vIERldGVybWluZXMgdGhlIHJhbmdl
IGluIHdoaWNoIHdlIGFsbG93IGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBhbiBhdXRv
bWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgbm90IHBhc3NlZCB0byB0aGUKICAgICAvLyB0ZXh0
IGNoZWNraW5nIHBhcmFncmFwaCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hlY2tpbmcg
cmFuZ2UuCi0gICAgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKLSAgICBp
bnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQg
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tpbmdS
YW5nZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2Nh
dGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0K
LSAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiBsb2NhdGlv
biArIGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9Ci0gICAg
Ym9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3Qg
eyByZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID4g
Y2hlY2tpbmdTdGFydCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhDaGFyYWN0
ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPT0gY2hlY2tpbmdT
dGFydCgpICYmIHJhbmdlLmxlbmd0aCA9PSBjaGVja2luZ0xlbmd0aCgpOyB9CisgICAgYm9vbCBp
c0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0
dXJuIHJhbmdlLmxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiByYW5nZS5sb2NhdGlvbiAr
IHJhbmdlLmxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9Cisg
ICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7
IHJldHVybiByYW5nZS5sb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdyYXBo
UmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTc1LDExICs2OSwxMCBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwogICAgIG11dGFibGUg
UmVmUHRyPFJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0
OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdFbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+
IG1fY2hlY2tpbmdMZW5ndGg7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNS
ZXBsYWNlbWVudExlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBt
X2NoZWNraW5nU3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gbV9j
aGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJD
b3VudD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKIH07CiAKIGNsYXNzIFRleHRDaGVj
a2luZ0hlbHBlciB7CkBAIC04OCwxMSArODEsMTEgQEAgcHVibGljOgogICAgIFRleHRDaGVja2lu
Z0hlbHBlcihFZGl0b3JDbGllbnQmLCBSYW5nZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdIZWxwZXIo
KTsKIAotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxp
bmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKTsKLSAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBj
aGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNl
dCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CisgICAgU3RyaW5nIGZpbmRGaXJz
dE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29s
IG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgU3Ry
aW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
b29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwg
R3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CiAgICAgdm9pZCBtYXJrQWxsTWlzc3Bl
bGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAjaWYgVVNFKEdS
QU1NQVJfQ0hFQ0tJTkcpCi0gICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRl
dGFpbCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29s
IG1hcmtBbGwpIGNvbnN0OworICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNl
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogICAgIHZvaWQgbWFya0FsbEJhZEdyYW1tYXIo
KTsKICAgICBib29sIGlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMDQsNyAr
OTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkg
Y29uc3Q7CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgaW50IGZpbmRGaXJzdEdyYW1t
YXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50IGJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwp
IGNvbnN0OworICAgIGludCBmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFt
bWFyRGV0YWlsPiYsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hh
cmFjdGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBt
YXJrQWxsKSBjb25zdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCmluZGV4IGJhMWI3MjBhZWYwMzQ4YmZhOWZlZGQ3ZDNkNjY3MDI4NDA0MDY3YjUu
LjFhY2E3NzNlNDE0NWVhNjU0MmIyYWQ5MjRkNTUxYjE0OTc1N2UyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIzNTEsMTIgKzIzNTEsNiBAQCBDaGFyYWN0
ZXJDb3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGJlaAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLVJlZjxSYW5nZT4gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZz
ZXQsIGludCBjaGFyYWN0ZXJDb3VudCkKLXsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBlbnRpcmVS
YW5nZUl0ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2Uo
ZW50aXJlUmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBjaGFyYWN0
ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGlzSW5z
aWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiB7CiAgICAgQVNTRVJU
KCFpdGVyYXRvci5hdEVuZCgpKTsKQEAgLTIzNjUsODUgKzIzNTksNjAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiAg
ICAgcmV0dXJuIG5vZGUgJiYgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChub2RlLT5yZW5kZXJl
cigpKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJh
bmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK0JvdW5kYXJ5UG9pbnQg
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFj
dGVyQ291bnQgbG9jYXRpb24sIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogewotICAg
IFJlZjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgp
OwotCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5kID0gcmFu
Z2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5kID0gZmFs
c2U7Ci0KLSAgICBSZWY8UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2Nv
cGUpOworICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIHsgbG9jYXRpb24s
IDAgfSwgYmVoYXZpb3IpLnN0YXJ0OworfQogCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5S
YW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IpOwotICAgIAotICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUg
bmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAm
JiBpdC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRl
eHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiByZXN1bHRS
YW5nZTsKLSAgICB9CitTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgYmVoYXZpb3IpCit7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IFNpbXBsZVJhbmdlIHsgcmFu
Z2UubG9jYXRpb24gPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCwgKHJhbmdlLmxvY2F0aW9uIHx8
IHJhbmdlLmxlbmd0aCkgPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCB9OworICAgIGF1dG8gcmFu
Z2VFbmQgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUsIGJlaGF2aW9y
KTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQucmFu
Z2UoKTsKIAotICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAg
IGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIHRleHRSdW5SYW5nZSA9
IGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgpKTsKKyAgICAgICAgYXV0byBmb3VuZCA9IFsmXSAo
Q2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0
dXJuIHRhcmdldExvY2F0aW9uID49IGxvY2F0aW9uICYmIHRhcmdldExvY2F0aW9uIDw9IGxvY2F0
aW9uICsgbGVuZ3RoOworICAgICAgICB9OwogCi0gICAgICAgIGJvb2wgZm91bmRTdGFydCA9IHJh
bmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRpb24gPD0gZG9jVGV4
dFBvc2l0aW9uICsgbGVuZ3RoOwotICAgICAgICBib29sIGZvdW5kRW5kID0gcmFuZ2VFbmQgPj0g
ZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlRW5kIDw9IGRvY1RleHRQb3NpdGlvbiArIGxlbmd0aDsK
KyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOworICAgICAg
ICBib29sIGZvdW5kRW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChmb3VuZEVu
ZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUg
ZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0gICAgICAg
ICAgICAvLyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2Yg
dGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBh
IHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3Ig
aWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50
LgorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBU
ZXh0SXRlcmF0b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9uYWxseSB0
byBoZWxwIHVzIGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAg
ICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVw
bGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
c3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFu
Z2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3Rh
cnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAg
UG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29u
dGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRS
dW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNp
YmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFy
dCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFy
dFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRD
b250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRS
YW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0
ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJh
bmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAg
IGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBC
b3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3Rh
cnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAt
IGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIu
Z2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0
UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAg
ICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYo
KSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRS
dW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAg
ICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAg
ICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQg
PSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5n
ZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1
blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRl
eHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFp
bmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdl
LmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24g
Kz0gbGVuZ3RoOwogICAgIH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5k
ID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1
blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDA5MTRmN2JjYTYxNTA5
ZmI1YzNkZWVhYzlkMzhjZTRkNGMzODk2NGIuLmY0ZTQwOGEyMWE1NTZhNThiODQyMzhiOGUzMmMx
MDFhNzM2ZmQ1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgi
CiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTEwMyw5ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIpIGNvbnN0IHsgY29weWFibGVUZXh0KCkuYXBwZW5kVG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIp
OyB9CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hhcmFjdGVy
UmFuZ2UsIGFuZCBDaGFyYWN0ZXJDb3VudCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFzcyB0byB0
aGUgdG9wIGxldmVsIChib3R0b20gb2YgdGhpcyBmaWxlKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJO
b2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFj
ZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBS
YW5nZSosIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBj
aGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0KCk7CkBAIC0yODksMTMgKzI4OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZExv
b2tBaGVhZCB7IHRydWUgfTsKIH07CiAKLXVzaW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXpl
X3Q7Ci0KLXN0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7Ci0gICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRp
b24geyAwIH07Ci0gICAgQ2hhcmFjdGVyQ291bnQgbGVuZ3RoIHsgMCB9OwotfTsKIAogV0VCQ09S
RV9FWFBPUlQgQ2hhcmFjdGVyQ291bnQgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2Um
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitX
RUJDT1JFX0VYUE9SVCBCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25z
dCBTaW1wbGVSYW5nZSYsIENoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRl
eHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJSYW5nZSwg
VGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggMmI5MzE3YjE3MTNmMjYwYTJkYWYzOGM1YjFmYmE0ZTA4NGFi
N2NhNi4uZTJmOGY1N2IzOTU1MTc3YmNkZWY3M2FhNDJiNzM3OGM4YWM5MzAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtOTcsNyArOTcs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0UG9zaXRp
b25XaXRoUmFuZ2UoVmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIENGUmFuZ2UgcmVzdWx0UmFuZ2VJ
bkNvbnRleHQgPSBERFJlc3VsdEdldFJhbmdlKHJlc3VsdCk7CiAgICAgICAgIGlmIChoaXRMb2Nh
dGlvbiA+PSByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiAmJiAoaGl0TG9jYXRpb24gLSBy
ZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbikgPCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5n
dGgpIHsKICAgICAgICAgICAgIG1haW5SZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBtYWlu
UmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3Vs
dFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpOwor
ICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFy
YWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCAqbWFrZUNoYXJhY3RlclJhbmdlKHJlc3VsdFJhbmdl
SW5Db250ZXh0KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC01
MDgsOSArNTA4LDEyIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJh
bmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBmcmFnbWVudFJhbmdlczsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjdXJy
ZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2UoKSk7CiAgICAgICAgIENG
SW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uuc3RhcnQucXVlcnlJbmRleDsKLSAgICAg
ICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkKLSAgICAg
ICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjdXJy
ZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVyeVJhbmdlLmVuZC5vZmZzZXQg
LSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYg
KGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgeworICAgICAgICAg
ICAgQ2hhcmFjdGVyUmFuZ2UgZnJhZ21lbnRSYW5nZTsKKyAgICAgICAgICAgIGZyYWdtZW50UmFu
Z2UubG9jYXRpb24gPSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAgICAgICAgICAgIGZyYWdt
ZW50UmFuZ2UubGVuZ3RoID0gcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFy
dC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY3VycmVudFJhbmdlLCBmcmFnbWVudFJhbmdlKSkp
OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFxdWVyeVJhbmdlLnN0YXJ0Lm9m
ZnNldCkKICAgICAgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3VycmVudFJhbmdl
KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkNjQ4ZmQ3MGZjMzhmYzkyYzI0ZTUxNzg5MDQ3Y2Vm
NjI2M2ZhNTA5Li42YmM1YmUxZmU3NGUwNTFhM2E2Y2IwYmM2MWZmMjg4YTRlMTI2OWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCkBA
IC0yODcsMTAgKzI4Nyw5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5
ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvCiAKICAgICBSZWZQdHI8
UmFuZ2U+IGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcGFy
YWdyYXBoRW5kKTsKICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxsQ2hhcmFj
dGVyUmFuZ2UuZ2V0KCkpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFth
bGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5n
ZTpyYW5nZVRvUGFzc10pOwotICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgp
LmhpZ2hsaWdodFJhbmdlOworICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBhZG9wdE5TKFth
bGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5n
ZTpyYW5nZVRvUGFzc10pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCi0gICAgcmV0dXJuIHsgVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5s
b2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3Jl
YXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAq
bWFrZUNoYXJhY3RlclJhbmdlKGhpZ2hsaWdodFJhbmdlKSkpLCBuaWwgfTsKIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTM1OCwxMyArMzU3LDEyIEBAIHN0ZDo6dHVwbGU8
UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRI
aXRUZXN0UmVzdWx0CiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0aW9u
Q2xhc3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVjdGlv
bjpuaWxdOwogCiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJ
dGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVj
dGVkUmFuZ2VdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdo
bGlnaHRSYW5nZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdl
KGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBz
ZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRSYW5nZSk7CiAKLSAg
ICBpZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGlnaGxpZ2h0
UmFuZ2UubGVuZ3RoKQorICAgIGlmICghaGlnaGxpZ2h0UmFuZ2UgfHwgIWhpZ2hsaWdodFJhbmdl
LT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAgIAotICAgIHJl
dHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxp
Z2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJl
dHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgKmhpZ2hsaWdodFJhbmdlKSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IGEyYjgxODI4NzdiMjhhZjI5YzhhMDYzOTU0
ZDM3NGNkNWFhNWE1ZGEuLmQzY2YwNmM5M2QxOWQ4NWVlNTE0NWQwMmExMmQ1MmI4M2JjN2EwMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCkBAIC03MiwxMSArNzIsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBw
bHkoKQogICAgIGlmIChlbmRPZmZzZXQgPCByZXN1bHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHJvb3QsIGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0KTsKLSAg
ICBpZiAoIXJlc3VsdFJhbmdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb2N1bWVudCgpLm1h
cmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBtX21ldGFkYXRh
KTsKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIHsgZW5kT2Zmc2V0IC0gcmVzdWx0TGVuZ3Ro
LCBlbmRPZmZzZXQgfSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVz
dWx0TWFya2VyKHJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlM
b29rdXBMZWdhY3kubW0KaW5kZXggNTEzNWI5MDZkZWUxOGUwMTc3OWVjNjExNDc0MzFjNzk1ZTM4
YTU4ZS4uNjVkNWRkNTYyZTkzNzBjZWJmY2U1M2MzMjI1ZTI3MzVjNTViNWYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1t
CkBAIC0xNDIsMTQgKzE0MiwxNCBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlv
bmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogCiAgICAgTlNS
YW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgKmZ1bGxDaGFy
YWN0ZXJTdGFydCwgKnBvc2l0aW9uQm91bmRhcnkgfSksIDApOwogICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IG5pbDsKLSAgICBOU1JhbmdlIGV4dHJhY3RlZFJhbmdlID0gdG9rZW5SYW5nZShw
bGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRpb25z
KTsKKyAgICBhdXRvIGV4dHJhY3RlZFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKHRva2VuUmFu
Z2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0
aW9ucykpOwogCiAgICAgLy8gdG9rZW5SYW5nZSBzb21ldGltZXMgcmV0dXJucyB7TlNOb3RGb3Vu
ZCwgMH0gaWYgaXQgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSBnb29kIHN0cmluZy4KICAgICAv
LyBGSVhNRSAoMTU5MDYzKTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgZm9yIHplcm8gbGVu
Z3RoIGhlcmUuCi0gICAgaWYgKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQg
fHwgIWV4dHJhY3RlZFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWV4dHJhY3RlZFJhbmdlIHx8ICFl
eHRyYWN0ZWRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsK
IAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5n
ZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCksIG9wdGlv
bnMgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdl
KCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICpleHRyYWN0ZWRSYW5nZSkpLCBvcHRpb25zIH07CiB9CiAK
IHN0YXRpYyB2b2lkIGV4cGFuZFNlbGVjdGlvbkJ5Q2hhcmFjdGVycyhQREZTZWxlY3Rpb24gKnNl
bGVjdGlvbiwgTlNJbnRlZ2VyIG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBOU0ludGVnZXIm
IGNoYXJhY3RlcnNBZGRlZEJlZm9yZVN0YXJ0LCBOU0ludGVnZXImIGNoYXJhY3RlcnNBZGRlZEFm
dGVyRW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzdkY2NmZjM1ZTNhOWYyYjZhNmE2ZDAxOTJj
Y2Q5MDIwYTg3NDcxZS4uNTc0Y2RiZjU0N2E1NDUyMGM0M2EyMDI1NDUwYTc3NGY2ZjZiZTJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04MDMsOCArODAzLDcgQEAgdW5zaWduZWQgUGFnZTo6Y291
bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWcKIAogc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gcm9vdDsKLSAgICBzaXplX3QgbG9jYXRpb24geyBub3RGb3VuZCB9OwotICAgIHNp
emVfdCBsZW5ndGggeyAwIH07CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiB9OwogCiBzdGF0
aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mIHJhbmdlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpCkBAIC04
MTYsMTAgKzgxNSwxMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNv
bnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmFuZ2VzIGFyZSBzb3J0ZWQg
YnkgdGhlaXIgZW5kIG9mZnNldHMsIHBlciBlZGl0aW5nIGNvbnRhaW5lci4KLSAgICAgICAgYXV0
byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOworICAg
ICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UucmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5yYW5nZS5sZW5ndGg7CiAgICAgICAgIGF1dG8gaW5zZXJ0aW9uSW5kZXggPSByYW5nZUxpc3Qu
c2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZUxpc3QucmJlZ2luKCk7
IGl0ZXJhdG9yICE9IHJhbmdlTGlzdC5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAg
IGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+bG9jYXRpb24g
KyBpdGVyYXRvci0+bGVuZ3RoOworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNl
cnRpb25JbmRleCA9IGl0ZXJhdG9yLT5yYW5nZS5sb2NhdGlvbiArIGl0ZXJhdG9yLT5yYW5nZS5s
ZW5ndGg7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0Rm9yUmFuZ2UgPj0gZW5kT2Zmc2V0QmVm
b3JlSW5zZXJ0aW9uSW5kZXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBp
bnNlcnRpb25JbmRleC0tOwpAQCAtODYyLDExICs4NjEsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiBy
YW5nZXMKICAgICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMgd2hlbiBy
ZXBsYWNpbmcgdGV4dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMgZG9uJ3Qg
Y2xvYmJlciByZXBsYWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8mIHJhbmdl
cyA9IHJhbmdlc0J5Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwogICAgICAg
ICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9IHJhbmdl
cy5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0
b3ItPmxvY2F0aW9uLCBpdGVyYXRvci0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghcmFuZ2Ug
fHwgcmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgICAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmNvbnRhaW5lciks
IGl0ZXJhdG9yLT5yYW5nZSk7CisgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBET1dOU1RS
RUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4
dCwgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVwbGFjZTo6
Tm8sIEVkaXRBY3Rpb246Okluc2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTg5OCw3ICs4OTcsNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQoY29u
c3QgVmVjdG9yPFJlZjxSYW5nZT4+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAgICAgIGlmIChyZXBs
YWNlbWVudExvY2F0aW9uID09IG5vdEZvdW5kIHx8ICFyZXBsYWNlbWVudExlbmd0aCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdU
Rk1vdmUoaGlnaGVzdFJvb3QpLCByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0
aCB9KTsKKyAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0
Um9vdCksIHsgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSB9KTsKICAg
ICB9CiAKICAgICByZXBsYWNlUmFuZ2VzKCp0aGlzLCByZXBsYWNlbWVudFJhbmdlcywgcmVwbGFj
ZW1lbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
CmluZGV4IGQwZDAwYzZiZDU3MzI3NzNjMGEzN2U4YmI1MzY1N2ViMzQ3N2RlYjMuLmQyNDVjY2Q5
ZWM5MTIwMmVjM2QwZjQ5ZWQ1NTRjMzA1MGVlOTdjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMTAgKzMxLDkgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02MywxNiArNjIs
MTQgQEAgZW51bSBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB7CiB9OwogCiBzdHJ1Y3QgR3JhbW1h
ckRldGFpbCB7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAgQ2hhcmFj
dGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBTdHJpbmcg
dXNlckRlc2NyaXB0aW9uOwogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7CiAgICAg
VGV4dENoZWNraW5nVHlwZSB0eXBlOwotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3Ro
OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBk
ZXRhaWxzOwogICAgIFN0cmluZyByZXBsYWNlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggYWYyN2I5OWYzODdjMTI4YWZmYjQzNjlhYjRlYzNhOWMwYmZmYzI5
OC4uMTM0ZWEzMWZjZThmOTg4OTExMmNjMTRjMDdmZDE3NGRiZTViY2U1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA0NCw5ICsyMDQ0LDkgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxzOjppbnZhbGlkYXRlQ29udHJvbFRpbnRzKCkKICAgICByZXR1cm4geyB9
OwogfQogCi1SZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitS
ZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVu
dCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKQog
ewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZz
Y29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhzY29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCiB1bnNpZ25l
ZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5n
ZSYgcmFuZ2UpCkBAIC0yMDc1LDkgKzIwNzUsOSBAQCBTdHJpbmcgSW50ZXJuYWxzOjpyYW5nZUFz
VGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKHJhbmdl
KTsKIH0KIAotUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgaW50
IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZjxSYW5nZT4gSW50ZXJuYWxzOjpz
dWJyYW5nZShSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJh
bmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBy
YW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgg
fSkpOwogfQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VPZlN0cmluZ05lYXJMb2Nh
dGlvbihjb25zdCBSYW5nZSYgc2VhcmNoUmFuZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWdu
ZWQgdGFyZ2V0T2Zmc2V0KQpAQCAtMjQzMiw4ICsyNDMyLDcgQEAgdm9pZCBJbnRlcm5hbHM6Omhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBs
b2NhdGkKIAogICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpOb25lOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IGxvY2F0aW9u
OwotICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0geyBsb2Nh
dGlvbiwgbGVuZ3RoIH07CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gY2FuZGlkYXRlOwogICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5oYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZTIzNTIz
NDFkYjhjMTVkNDI5ZjljZWZkMjg5ZGY1MjI3MGU1YWM3Yy4uY2Y3OWU1MGM3Yjg0NzNmNmZlMjUy
ZjhjYzc2ODU5YzZmOTE1NzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0y
OTUsMTIgKzI5NSwxMiBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnZhbGlk
YXRlQ29udHJvbFRpbnRzKCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1l
bnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7
CiAgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJh
bmdlJik7CiAgICAgdW5zaWduZWQgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25z
dCBSYW5nZSYpOwogICAgIFN0cmluZyByYW5nZUFzVGV4dChjb25zdCBSYW5nZSYpOwogICAgIFN0
cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJik7
Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIGludCByYW5nZUxvY2F0aW9uLCBpbnQg
cmFuZ2VMZW5ndGgpOworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNpZ25lZCBy
YW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFJhbmdlPj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50
IHkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihjb25zdCBS
YW5nZSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IDE2MmZhZjQ5NDZlYWFkZDk4MGU1Nzg5YTE4YmJkZWM1NTgzZjYzMjMu
LjM3NTc5MDc3MDRmOTMxM2U2ODQxNGMwMDU1OTE3NDFlNDZhMjVkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMyNSwxMiArMzI1LDEyIEBAIGVudW0gQ29tcG9zaXRp
bmdQb2xpY3kgewogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNjcm9sbEVsZW1lbnRU
b1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgpOwog
Ci0gICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIGxv
bmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2U/IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgdW5zaWduZWQg
bG9uZyBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIERP
TVN0cmluZyByYW5nZUFzVGV4dChSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNU
ZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoUmFuZ2UgcmFuZ2UpOwotICAgIFJhbmdlIHN1
YnJhbmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgp
OworICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9j
YXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24obG9uZyB4LCBsb25n
IHkpOwogICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKFJhbmdlIHJhbmdlLCBE
T01TdHJpbmcgdGV4dCwgbG9uZyB0YXJnZXRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcAppbmRleCBiODk5MzNmZmExYmYyODQzYzI2ZmRiZDY2ZDI5MjZlZDAwYzVm
NmExLi43NmVmNDcyMmQ3NTFjZjZlNTlhYWI5ZWRmYWI2NjU2ZTcwNGYxNmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTMzLDQyICszMywzMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFu
Z2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQorUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvIGJhc2UpCiB7Ci0gICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAg
ICBBU1NFUlQoZWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBXZWJDb3Jl
OjpDaGFyYWN0ZXJSYW5nZSByYW5nZSB7IGVkaXRpbmdSYW5nZS5sb2NhdGlvbiwgZWRpdGluZ1Jh
bmdlLmxlbmd0aCB9OwogCi0gICAgLy8gU2FuaXRpemUgdGhlIGlucHV0LCBiZWNhdXNlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGFrZXMgc2lnbmVkIGludGVnZXJz
LgotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGludCBsZW5ndGg7Ci0gICAgaWYgKHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYICYm
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoIDw9IElOVF9NQVgpCi0gICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4ocmFuZ2UubGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIGxl
bmd0aCA9IElOVF9NQVggLSByYW5nZS5sb2NhdGlvbjsKLQotICAgIGlmIChlZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsK
KyAgICBpZiAoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkg
ewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBw
YXRoIGlzIGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAgICAgLy8gY29uY2VudHJh
dGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbi4KICAgICAgICAgLy8g
V2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRhcmVhcy4g
VGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1
bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBp
cwogICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAgICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUu
c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCByYW5nZSkpOwogICAgIH0K
IAotICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwotCi0gICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgaWYgKCFzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGJhc2UgPT0gRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFy
dCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnZpc2libGVT
dGFydCgpKSk7CisgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0
YXJ0T2ZQYXJhZ3JhcGgoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29w
ZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3Jl
OjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0pOwot
ICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHJhbmdlLmxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
cGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOwor
ICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdl
KHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSkp
OwogfQogCiBFZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJh
bWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdS
YW5nZS5oCmluZGV4IDk0NzM4YjdmODhlOWUwNThkYTJlZDI1NGExNjA0NGViYzZiOTMwNjkuLmUw
NDNmOTcyNDBlNDI1ZWNkMjVhNDI3ZWRkOTI3YWNiNzQ1ZTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRpbmdSYW5nZS5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAorLy8gRklYTUU6
IFJlcGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0
aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCBiMzA3YWEyNTg5ZWY4MTQwZWFmNzU5MDQxOGViZTgxYWJjMWE5MTgwLi5mYWI0ODRkZWFh
MTgyYjQ2YjVkZjNiYTlkNGFhNmQzY2JkMGNjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8vIEZJWE1FOiBTZWVt
cyBsaWtlIHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRoZSBjb2RlIGJlbG93
IGEgbG90IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPENhY2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhY2hlUXVl
cnlPcHRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPENoYXJh
Y3RlclJhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENoYXJhY3RlclJhbmdl
JiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5s
b2NhdGlvbik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFuZ2UubGVu
Z3RoKTsKK30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8Q2hhcmFj
dGVyUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAoIWxvY2F0
aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKmxvY2F0aW9uLCAq
bGVuZ3RoIH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsKQEAgLTIw
NTMsMjIgKzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRV
Ukw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAogdm9pZCBBcmd1bWVu
dENvZGVyPEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgR3Jh
bW1hckRldGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxvY2F0aW9uOwot
ICAgIGVuY29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGRldGFpbC5yYW5n
ZTsKICAgICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29kZXIgPDwgZGV0YWls
LnVzZXJEZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRD
b2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICgh
bG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxp
bnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAg
ICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsK
KyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIwOTgsNyBAQCBPcHRp
b25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpsb2NhdGlvbiksIFdU
Rk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3JpcHRp
b24pIH19OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92
ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBUZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0
KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0gICAgZW5jb2RlciA8
PCByZXN1bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVuZ3RoOworICAgIGVu
Y29kZXIgPDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LmRldGFpbHM7CiAg
ICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5LDE0ICsyMTQ1LDkg
QEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2lu
Z1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5
cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGlu
dD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxvY2F0aW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50PiBsZW5n
dGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAgT3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7CisgICAgaWYg
KCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2MCw3IEBAIE9wdGlv
bmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIFdURk1vdmUoKmxv
Y2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1vdmUoKnJl
cGxhY2VtZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92ZSgqZGV0
YWlscyksIFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxVc2VyU3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0YTIxNmU4
NGYwMTcuLjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2MjdkMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjksNiArNjks
NyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
KwogY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYsNiArMTE3LDcgQEAg
Y2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKIAogc3Ry
dWN0IENhY2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3RydWN0IENv
bXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0
IERpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IFZlbG9jaXR5
RGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7
CiAgICAgCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RFZGdl
czxmbG9hdD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsyMTgsMTEgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4g
ewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q2hhcmFjdGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkNoYXJhY3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGY5ZDdhYmU3NGM0MjZmYjQ1NDIzMDNk
MTVkMzIzZjBjMmYyYWQwNTkuLjM4ODg2NjJmOTFiODExYjhkNmEzOTQ1NThhZDUxOTIxZjYxZjRh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC0zMzY2LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkKIAogc3RhdGljIFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFu
Z2UgcmVzdWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdU
eXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkdyYW1tYXJEZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRl
dGFpbC5jcHAKaW5kZXggNmVlNDQxYjExYTIzOTA1ZTMzYzM5ZDhhOWUwMGQzOTdmOTZmNTJiMS4u
MDZkNWNlY2M0ZTg1MGE1MmI0Yzc5NGNlMjE2MDU2NTQwZjk1MGVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgUmVm
PFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmEKIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFp
bChpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0
cmluZyYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9
IGxvY2F0aW9uOwotICAgIG1fZ3JhbW1hckRldGFpbC5sZW5ndGggPSBsZW5ndGg7CisgICAgbV9n
cmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgbV9ncmFtbWFyRGV0
YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKIAogICAgIHNpemVfdCBudW1HdWVzc2VzID0gZ3Vl
c3Nlcy0+c2l6ZSgpOwogICAgIG1fZ3JhbW1hckRldGFpbC5ndWVzc2VzLnJlc2VydmVDYXBhY2l0
eShudW1HdWVzc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdy
YW1tYXJEZXRhaWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwu
aAppbmRleCBjOWI3NTUzY2Q3YjA4ZWVhYzdkODIzMzhiMTEwZjRhZWRkOWVmNmFjLi4zOTBiNGE1
ZjdiOWVhYzYzMWZkNzMyNDE2NTdlMjIxZGE1YzE5NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKTsK
ICAgICBzdGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsJik7CiAKLSAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dy
YW1tYXJEZXRhaWwubG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9ncmFtbWFyRGV0YWlsLmxlbmd0aDsgfQorICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbjsgfQorICAgIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoOyB9CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGd1ZXNzZXMoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlw
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKaW5k
ZXggNDEwOGZhZDZkMjY2NTdlYWRlOTA4NmMxNmNmZGYyMTgxMDdjY2IyNS4uMWRhOTBlZWM0ZGI3
MGI1MTBhMTNlYWE3ZGUzZTUwNWJmZDVmNDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yNjksOCArMjY5LDggQEAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxs
RG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgbWlzc3BlbGxpbmdS
ZXN1bHQ7CiAgICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZzsKLSAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQubG9jYXRpb24gPSBvZmZzZXQg
KyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5sZW5ndGgg
PSBtaXNzcGVsbGluZ0xlbmd0aDsKKyAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQucmFuZ2UubG9j
YXRpb24gPSBvZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICBtaXNzcGVsbGlu
Z1Jlc3VsdC5yYW5nZS5sZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAgcGFyYWdy
YXBoQ2hlY2tpbmdSZXN1bHQuYXBwZW5kKG1pc3NwZWxsaW5nUmVzdWx0KTsKICAgICAgICAgb2Zm
c2V0ICs9IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAg
Ly8gR2VuZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9yLCBt
b3ZlIHRvIHRoZSBhZGphY2VudCB3b3JkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1RleHRDaGVja2VySU9TLm1tCmluZGV4IDkyMDBlYjYwOGIzYTE1MWY3NmMwODY4ZGM0ODgzMGFm
ZmRjNDcxZmUuLmY2MDhjOGRiNWM2MDY1MzBjYWE1OTZlZDZhYjVlOTVkNmNlZGU1OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KQEAgLTIxMiw4
ICsyMTIsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogCiAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG1pc3NwZWxsZWRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobWlzc3BlbGxlZFJhbmdl
KTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoV1RGTW92ZShyZXN1bHQpKTsKIAogICAgICAgICBv
ZmZzZXRTb0ZhciA9IG1pc3NwZWxsZWRSYW5nZS5sb2NhdGlvbiArIG1pc3NwZWxsZWRSYW5nZS5s
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0K
aW5kZXggMGNhMTMzYTJhZGNlNDFhN2NmY2YzYTBkNDE0YWI0ZmZiODRlZTYzNC4uYWMzYmVlMDBi
MTY1OTNhY2Y0NTcxZWE5OWMxMTAxNmNjMTRmNDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMzM0LDIyICszMzQsMjAgQEAgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNw
ZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J0aG9ncmFwaHk6TlVMTAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmRDb3VudDpOVUxMXTsKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICppbmNv
bWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRS
YW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlw
ZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAgICBBU1NF
UlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJh
bmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1
bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAqbWFrZUNo
YXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlu
cyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBn
cmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIGZv
ciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFtbWFyRGV0
YWlsIGRldGFpbDsKQEAgLTM1OCw4ICszNTYsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAog
ICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNW
YWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5s
b2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNS
YW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24gPSBkZXRh
aWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGggPSBkZXRh
aWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAqbWFrZUNo
YXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFpbC51c2Vy
RGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJE
ZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtpbmNvbWlu
Z0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAgICAgICAg
ICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC0zNzAsMzYgKzM2NywzMSBA
QCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUg
PT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVz
dWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rOwot
ICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAg
ICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAg
cmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1l
bnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVz
dWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZTsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0
Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hl
Y2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlJl
cGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9j
YXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwor
ICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1
bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0K
QEAgLTQ0MywxNyArNDM1LDIwIEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAKIHZvaWQgVGV4
dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhTcGVsbERvY3VtZW50
VGFnLCBjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwm
IGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjb3JyZWN0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbC5ndWVzc2VzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nICpndWVzcyA9IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAgICAg
ICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CisgICAgYXV0byBjb3JyZWN0aW9ucyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoYXV0byYg
Z3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcgKmd1ZXNz
TlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc05T
U3RyaW5nXTsKICAgICB9CiAKLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5nZSA9IE5TTWFrZVJhbmdl
KGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAgICBOU1N0
cmluZyAqZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0
aW9uOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGdyYW1tYXJEZXRhaWxEaWN0ID0gYWRv
cHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3JhbW1hclVz
ZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9ucy5nZXQo
KSwgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF0pOworICAgIE5TU3RyaW5nICpkZXNjcmlwdGlv
bk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNEaWN0aW9u
YXJ5ICpkZXRhaWwgPSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVl
V2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBOU0dyYW1tYXJVc2VyRGVz
Y3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBOU0dyYW1tYXJDb3JyZWN0
aW9ucyA6IGNvcnJlY3Rpb25zLmdldCgpLAorICAgIH07CiAKLSAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5n
OmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0LmdldCgpXTsKKyAgICBb
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdp
dGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRldGFpbF07CiB9CiAKIHZv
aWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcgc3BlbGxE
b2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIGlu
dDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzLCBib29sIGluaXRp
YWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHkubW0KaW5kZXggZjE4Y2FhNzJjYmQ5NjUzMTc1NWU5MmVjZmIyMGVmNGRiOGNhNTNhZi4u
NzBhMzkwMzVkNThjODEyYzJjYjAxMzE5ZjVhMTZjNmZhNTlmNWQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtODcsNyArODcsNyBAQCBPcHRpb25hbDxU
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveAogICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2Uocm9vdCwgcmFuZ2UuZ2V0KCksIHNlbGVjdGlvbkxvY2F0aW9uLCBzZWxlY3Rpb25MZW5n
dGgpOwogICAgIHNlbGVjdGlvbkxvY2F0aW9uICs9IG9mZnNldDsKIAotICAgIHJldHVybiB7eyBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxv
Y2F0aW9uLCBsZW5ndGgpLCBzZWxlY3Rpb25Mb2NhdGlvbiB9fTsKKyAgICByZXR1cm4ge3sgcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uLCBsZW5ndGgpLCBzZWxl
Y3Rpb25Mb2NhdGlvbiB9fTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6
OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkU3Ry
aW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBy
ZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRM
ZW5ndGgpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KIAogICAg
ICAgICAgICAgICAgIHNpemVfdCBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSA9IGxvY2F0aW9u
SW5Sb290IC0gc2VsZWN0aW9uT2Zmc2V0OwogICAgICAgICAgICAgICAgIGlmIChyZXN0b3JlU2Vs
ZWN0aW9uICYmIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID4gbG9jYXRpb25JblJvb3QgKyBy
ZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24gKyByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9SZXN0b3JlID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBzZWxlY3Rpb25Mb2NhdGlvblRv
UmVzdG9yZSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9SZXN0b3Jl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3Jl
LCAwKTsKICAgICAgICAgICAgICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHNlbGVjdGlv
blRvUmVzdG9yZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNl
UmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFuCiAgICAgfQogCiAgICAgW2Fu
bm90YXRlZFN0cmluZy5zdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgW2Fubm90YXRlZFN0cmluZy5zdHJpbmcgbGVuZ3RoXSkgb3B0aW9uczowIHVzaW5nQmxv
Y2s6XihOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nS2V5LCBpZD4gKmF0dHJzLCBOU1Jh
bmdlIGF0dHJpYnV0ZVJhbmdlLCBCT09MICpzdG9wKSB7Ci0gICAgICAgIGF1dG8gYXR0cmlidXRl
Q29yZVJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290
LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9uLCBhdHRyaWJ1dGVSYW5n
ZS5sZW5ndGgpOworICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IHJlc29sdmVDaGFy
YWN0ZXJSYW5nZShyb290LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9u
LCBhdHRyaWJ1dGVSYW5nZS5sZW5ndGgpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZUNvcmVSYW5n
ZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk5LDcgKzE5OSw3IEBAIEF0dHJpYnV0ZWRT
dHJpbmcgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3
ZWVuUG9zaXRpb25zCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1
dG8mIHRleHRDaGVja2luZ0RhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1U
ZXh0Q2hlY2tpbmdEYXRhPihtYXJrZXItPmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIHN1YnJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjcmVhdGVMaXZlUmFuZ2UoY3VycmVudFRleHRS
YW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRPZmZzZXQoKSAtIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFya2VyLT5z
dGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgp
KTsKIAogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTG9jYXRpb247CiAgICAgICAgICAgICBz
aXplX3Qgc3VicmFuZ2VMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGY3NWVmNTJhMTNiNGFmYWE4ZTA5ZGM1MTNkNDI4ZDMxMjJlMWYw
MzYuLjU4YzU0ZjMwZWIyNTU3Nzg2M2QyNjMyMjQ2OTM0YzUwOGQyNDgyMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01NDIwLDIwICs1NDIw
LDIzIEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRfdCBvZmZzZXQsIHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IHRhcmdldEZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSB0YXJn
ZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05v
bmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHN1cnJvdW5kaW5nUmFuZ2UgPSBtYWtlUmFu
Z2Uoc3RhcnRPZkVkaXRhYmxlQ29udGVudChzZWxlY3Rpb25TdGFydCksIHNlbGVjdGlvblN0YXJ0
KTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoKnN1
cnJvdW5kaW5nUmFuZ2UpOwotICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGF1dG8gc2VsZWN0
aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290
Tm9kZSwgY3Vyc29yUG9zaXRpb24gKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLSAgICBpZiAo
IXNlbGVjdGlvblJhbmdlKQorICAgIGlmICghc3Vycm91bmRpbmdSYW5nZSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byYgcm9vdE5vZGUgPSBzdXJyb3VuZGluZ1JhbmdlLT5zdGFydENvbnRh
aW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisgICAgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFj
dGVyUmFuZ2U7CisgICAgY2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBXZWJDb3JlOjpjaGFyYWN0
ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSkgKyBvZmZzZXQ7CisgICAgY2hhcmFjdGVyUmFuZ2Uu
bGVuZ3RoID0gY2hhcmFjdGVyQ291bnQ7CisgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocm9vdE5vZGUp
LCBjaGFyYWN0ZXJSYW5nZSk7CisKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3Jl
U2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnNlbGVjdGlvblJhbmdlLCBTRUxfREVGQVVMVF9B
RkZJTklUWSkpOworICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAg
ICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGZh
bHNlKTsKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdl
cyhmYWxzZSk7CiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE4N2RiZWY1
NDcyMDcxNTE3NWNlNzI1NjRjNmE4ZjVhYWMxNDFjN2IuLmY5NTJkMTY1YmI1ODU2MmMyZjhiZjI0
MjZkOWM3OWEwZDZkZTNiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MDY2LDE4ICs0MDY2LDIwIEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50
NjRfdCBsZW5ndGhEZWx0CiAgICAgc2l6ZV90IHNlbGVjdGlvbkxlbmd0aDsKICAgICBUZXh0SXRl
cmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdldCgpLCBz
ZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKIAotICAgIENoZWNrZWRJbnQ2NCBu
ZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNlbGVjdGlvbkxvY2F0aW9uIH07Ci0gICAgQ2hlY2tlZElu
dDY0IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9OwotICAgIG5ld1NlbGVj
dGlvbkxvY2F0aW9uICs9IGxvY2F0aW9uRGVsdGE7Ci0gICAgbmV3U2VsZWN0aW9uTGVuZ3RoICs9
IGxlbmd0aERlbHRhOworICAgIGF1dG8gbmV3U2VsZWN0aW9uTG9jYXRpb24gPSBjaGVja2VkU3Vt
PENoYXJhY3RlckNvdW50PihzZWxlY3Rpb25Mb2NhdGlvbiwgbG9jYXRpb25EZWx0YSk7CisgICAg
YXV0byBuZXdTZWxlY3Rpb25MZW5ndGggPSBjaGVja2VkU3VtPENoYXJhY3RlckNvdW50PihzZWxl
Y3Rpb25MZW5ndGgsIGxlbmd0aERlbHRhKTsKIAogICAgIGlmIChuZXdTZWxlY3Rpb25Mb2NhdGlv
bi5oYXNPdmVyZmxvd2VkKCkgfHwgbmV3U2VsZWN0aW9uTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpLCBuZXdTZWxlY3Rp
b25MZW5ndGgudW5zYWZlR2V0KCkpKQotICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIENoYXJhY3Rl
clJhbmdlIG5ld1NlbGVjdGlvblJhbmdlOworICAgIG5ld1NlbGVjdGlvblJhbmdlLmxvY2F0aW9u
ID0gbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCk7CisgICAgbmV3U2VsZWN0aW9uUmFu
Z2UubGVuZ3RoID0gbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgpOworCisgICAgYXV0byBy
ZXNvbHZlZFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqcm9vdCksIG5ld1NlbGVjdGlvblJhbmdlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZWRSYW5nZSkucHRy
KCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBA
IC00MTkyLDE2ICs0MTk0LDE1IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGlu
Z0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgIFJl
ZlB0cjxDb250YWluZXJOb2RlPiByb290Q29udGFpbmVyTm9kZSA9IHJvb3ROb2RlLT5pc0NvbnRh
aW5lck5vZGUoKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHJvb3ROb2RlLmdldCgpKSA6IHJv
b3ROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2Uocm9vdENvbnRhaW5lck5vZGUuZ2V0KCksIHJhbmdlT2ZJbnRlcmVz
dC5nZXQoKSwgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24sIHJhbmdlT2ZJbnRlcmVzdExlbmd0aCk7
CiAKLSAgICAgICAgQ2hlY2tlZFNpemUgbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJbnRlcmVz
dExvY2F0aW9uIH07CisgICAgICAgIENoZWNrZWQ8Q2hhcmFjdGVyQ291bnQsIFJlY29yZE92ZXJm
bG93PiBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKICAgICAg
ICAgbWlkcG9pbnRMb2NhdGlvbiArPSByYW5nZU9mSW50ZXJlc3RMZW5ndGggLyAyOwogICAgICAg
ICBpZiAobWlkcG9pbnRMb2NhdGlvbi5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIG1pZHBvaW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCBtaWRwb2ludExvY2F0aW9uLnVu
c2FmZUdldCgpLCAwKTsKKyAgICAgICAgYXV0byBtaWRwb2ludCA9IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKCpyb290Q29udGFpbmVyTm9kZSksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0
KCkpKTsKIAotICAgICAgICBhdXRvIG1pZHBvaW50ID0gbWlkcG9pbnRSYW5nZS0+c3RhcnRQb3Np
dGlvbigpOwogICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBzdGFy
dE9mV29yZChtaWRwb2ludCk7CiAgICAgICAgIGlmIChzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5T
ZWxlY3Rpb24gPCByYW5nZU9mSW50ZXJlc3RTdGFydCkgewogICAgICAgICAgICAgc3RhcnRPZlJh
bmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gZW5kT2ZXb3JkKG1pZHBvaW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQppbmRleCBjYTQ3OTMxMDU0YjgwMjYyNjg3M2UzZjUzZmI1ZWUzMDU0ZTk4NTEzLi4z
Yjk0NjMwNGRmYjc1MjExNDEzZTlmOGQxMTA3ZjZmODc2NTk5ZDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCkBAIC04NjUsMTIgKzg2NSwxMSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBXZWJF
ZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiAgICAg
TlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3
YXJkZXJdIGNoZWNrU3BlbGxpbmdPZlN0cmluZzpzdHJpbmcuY3JlYXRlTlNTdHJpbmdXaXRob3V0
Q29weWluZygpLmdldCgpXTsKICAgICBmb3IgKE5TVmFsdWUgKmluY29taW5nUmVzdWx0IGluIGlu
Y29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5n
UmVzdWx0IHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiByZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJU
KGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAg
ICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOwogICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jl
c3VsdC5yYW5nZVZhbHVlKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICB9
CiAKQEAgLTkzOSwxMSArOTM4LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1h
ck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAgICAgICAg
R3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgICAgICBOU1ZhbHVlICpkZXRhaWxSYW5n
ZUFzTlNWYWx1ZSA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclJhbmdlXTsKICAgICAg
ICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlKTsKLSAgICAgICAgTlNSYW5nZSBkZXRhaWxO
U1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NF
UlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJU
KGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubG9jYXRp
b24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxlbmd0
aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05T
VmFsdWUucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJU
KGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CisgICAgICAgIGdy
YW1tYXJEZXRhaWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbFJhbmdlQXNOU1Zh
bHVlLnJhbmdlVmFsdWUpOwogICAgICAgICBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9
IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAg
IE5TQXJyYXkgKmd1ZXNzZXMgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0
aW9uc107CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05NTcs
MjIgKzk1NCwyMCBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0Fy
cmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICpp
bmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1
bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5n
VHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAgICBB
U1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VS
VChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0
LnJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdS
ZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAqbWFr
ZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5jb250
YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRDaGVj
a2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUg
PT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3Vs
dCBncmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAg
IGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFtbWFy
RGV0YWlsIGRldGFpbDsKQEAgLTk4MSw4ICs5NzYsNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0
QwogICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFz
TlNWYWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5n
ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
TlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24gPSBk
ZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGggPSBk
ZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAqbWFr
ZUNoYXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFpbC51
c2VyRGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVz
ZXJEZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtpbmNv
bWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAgICAg
ICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05OTMsMzYgKzk4Nywz
MSBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNv
bWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5r
OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0g
ICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAg
ICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpRdW90
ZTsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwot
ICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAg
ICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxh
Y2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENo
ZWNraW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7Ci0g
ICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICBy
ZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVu
dCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6
OlJlcGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdUeXBl
cy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3Vs
dFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwog
ICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2Vt
ZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAg
IH0KQEAgLTEwNDksMTYgKzEwMzgsMTggQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gV2Vi
RWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkKIAogdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25z
dCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJE
ZXRhaWwpCiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGNvcnJlY3Rpb25zID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbC5n
dWVzc2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBndWVzcyA9IGdyYW1tYXJE
ZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107
CisgICAgTlNNdXRhYmxlQXJyYXkgKmNvcnJlY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7CisgICAg
ICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3JyZWN0aW9u
cyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQotICAgIE5TUmFuZ2UgZ3JhbW1hclJh
bmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5s
ZW5ndGgpOwotICAgIE5TU3RyaW5nKiBncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRl
dGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgTlNEaWN0aW9uYXJ5KiBncmFtbWFyRGV0YWlsRGlj
dCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNWYWx1ZSB2
YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3JhbW1hclVzZXJE
ZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9ucywgTlNHcmFt
bWFyQ29ycmVjdGlvbnMsIG5pbF07Ci0gICAgCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFt
bWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07CisgICAgTlNTdHJpbmcgKmRlc2Ny
aXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU0Rp
Y3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBOU0dyYW1t
YXJVc2VyRGVzY3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBOU0dyYW1t
YXJDb3JyZWN0aW9ucyA6IGNvcnJlY3Rpb25zLAorICAgIH07CisgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmlu
ZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkaWN0aW9uYXJ5XTsKIH0KIAogdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5n
JiBtaXNzcGVsbGVkV29yZCkKQEAgLTExOTQsNyArMTE4NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jl
c3VsdCBhCiAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0p
IHsKICAgICAgICAgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGggPSBhY2NlcHRlZENhbmRpZGF0
ZS5yZXBsYWNlbWVudC5sZW5ndGgoKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50TGVuZ3RoID4g
MCkgewotICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNj
ZXB0ZWRDYW5kaWRhdGUubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKKyAgICAgICAgICAg
IE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRlLnJh
bmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgICAgICAgICBOU1JhbmdlIHNv
ZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShyZXBsYWNlZFJhbmdlKSAtIDEs
IDEpOwogICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LmVuZHNX
aXRoKCIgIikpCiAgICAgICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAqKXZpZXcgX3NldFNvZnRT
cGFjZVJhbmdlOnNvZnRTcGFjZVJhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IGVkNWVkMjA0MDI5NTU3OGViZTk5ZWI4MDc3NDJkN2UwNmIw
NDllMzAuLmRkODdhZDQ5YTM1YTgyZTMyZGYyYmNlY2Y1ZGUyZmU3NWZiNjg0NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODIxLDEwICs4MjEs
OSBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5n
ZSluc3JhbmdlCiAKIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdl
OihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRv
KXJhbmdlSXNSZWxhdGl2ZVRvCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJTlRfTUFY
KQorICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7
CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFu
Z2UubGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGgg
PiBJTlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxv
Y2F0aW9uOwogCiAgICAgaWYgKHJhbmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNSZWxhdGl2
ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24g
aXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRo
YXQKQEAgLTgzNiw3ICs4MzUsNyBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAgICAgICBh
dXRvKiBlbGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRh
YmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50LCBuc3JhbmdlLmxvY2F0
aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVz
b2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVu
dCksICpyYW5nZSkpOwogICAgIH0KIAogICAgIEFTU0VSVChyYW5nZUlzUmVsYXRpdmVUbyA9PSBX
ZWJSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKQEAgLTg0NCwxMCArODQzLDkgQEAgLSAo
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5n
ZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5k
YXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3RhcnQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBo
U3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8gcGFy
YWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9kZSwg
MCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydElu
ZGV4ICsgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIGF1dG8gc2NvcGVF
bmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRh
aW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuZW5kOworICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBX
VEZNb3ZlKHNjb3BlRW5kKSB9LCAqcmFuZ2UpKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilfY29udmVy
dE5TUmFuZ2VUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZGRmMjNlY2YzY2JhNWI5YmM5ZWE5ZjI2ZWVk
Y2YwMzc5OTU2ODhjLi42ZjkxZWZiOWE5MDFhZTFjY2JhZTU2YzliMmZkOTljMTQwOTk1MmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03Mjc4LDEy
ICs3Mjc4LDkgQEAgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgY29yZVRleHRD
aGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeXBlIHR5cGUKIAogc3RhdGljIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdSZXN1
bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFuZ2UgcmVzdWx0
UmFuZ2UgPSBuc1Jlc3VsdC5yYW5nZTsKLQogICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3Vs
dC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5y
YW5nZSA9ICpXZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQucmFuZ2UpOwogICAg
IHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4ZGYxYzcyMWJiNjhmNmUw
MTAxN2U2NTUyNGM5M2MwZGZlZTI4ODQ2Li40Njk3OWQ3MWFmZjc1MTlhZTBhNGFlZjkyMWY5ZGM5
ZThhNTA0MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTc5MCwxNCArNzkwLDE5IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQs
IFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIGlmIChlbnVtRGV0YWlsc09iai0+TmV4dCgx
LCAmZGV0YWlsT2JqLCAmZmV0Y2hlZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwotICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9i
ai0+bGVuZ3RoKCZkZXRhaWwubGVuZ3RoKSkpCisgICAgICAgIGludCBsZW5ndGg7CisgICAgICAg
IGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sZW5ndGgoJmxlbmd0aCkpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmZGV0YWlsLmxv
Y2F0aW9uKSkpCisgICAgICAgIGludCBsb2NhdGlvbjsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRh
aWxPYmotPmxvY2F0aW9uKCZsb2NhdGlvbikpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIEJTdHJpbmcgdXNlckRlc2M7CiAgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT51c2Vy
RGVzY3JpcHRpb24oJnVzZXJEZXNjKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBHcmFtbWFyRGV0YWlsIGRldGFpbDsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID0g
bG9jYXRpb247CisgICAgICAgIGRldGFpbC5yYW5nZS5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAg
IGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBTdHJpbmcodXNlckRlc2MsIFN5c1N0cmluZ0xlbih1
c2VyRGVzYykpOwogCiAgICAgICAgIENPTVB0cjxJRW51bVNwZWxsaW5nR3Vlc3Nlcz4gZW51bUd1
ZXNzZXNPYmo7CkBAIC04MjYsNyArODMxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY28KICAg
ICAgICAgZ3Vlc3Nlc0JTVFJzLmFwcGVuZChndWVzcy5yZWxlYXNlKCkpOwogICAgIH0KICAgICBC
U3RyaW5nIHVzZXJEZXNjcmlwdGlvbkJTVFIoZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7Ci0gICAg
ZWQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhCU3RyaW5nKHN0cmluZyksIGRl
dGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCwgdXNlckRlc2NyaXB0aW9uQlNUUiwgZ3Vlc3Nl
c0JTVFJzLmRhdGEoKSwgKGludClndWVzc2VzQlNUUnMuc2l6ZSgpKTsKKyAgICBlZC0+dXBkYXRl
U3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLnJhbmdl
LmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVz
c2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXplKCkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBndWVzc2VzQlNUUnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIFN5c0Zy
ZWVTdHJpbmcoZ3Vlc3Nlc0JTVFJzW2ldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKaW5kZXggZDcwNTNlYzMyMDRjYWFlZTBlNDlhODFlMTViZTExMjgzNDk4Y2RjNC4uMTdhZTVi
MGE1NjhjNjM3NTU3YTQ1MmM1NWFkMzMyOGI5MzcxYmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKQEAgLTc3NjEsMjMgKzc3NjEsMjEgQEAgSFJFU1VMVCBXZWJWaWV3OjpmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoVUlOVCBsb2NhdGlvbiwgVUlOVCBsZW5n
dGgKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEludFJl
Y3QgcmVzdWx0SW50UmVjdDsKLSAgICByZXN1bHRJbnRSZWN0LnNldExvY2F0aW9uKEludFBvaW50
KDAsIDApKTsKLSAgICByZXN1bHRJbnRSZWN0LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7Ci0gICAg
Ci0gICAgaWYgKGxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byogZWxlbWVu
dCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVu
dCgpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBpZiAo
bGVuZ3RoID4gSU5UX01BWCB8fCBsb2NhdGlvbiArIGxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAg
IGxlbmd0aCA9IElOVF9NQVggLSBsb2NhdGlvbjsKLSAgICAgICAgCi0gICAgRnJhbWUmIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1l
bnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisKKyAgICBDaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJS
YW5nZTsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIGNoYXJh
Y3RlclJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY3Jl
YXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKmVsZW1lbnQpLCBjaGFyYWN0ZXJSYW5nZSkpOwogCiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAgCisKICAgICBJbnRSZWN0IHJlY3QgPSBmcmFt
ZS5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7Ci0gICAgcmVzdWx0SW50
UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKKyAgICBJbnRSZWN0
IHJlc3VsdEludFJlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAK
ICAgICByZXN1bHRJbnRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTFiNTlmYmZkODc0YjJjZTJmNjBjODQ4NjdmMzZjMzNlNTAzMDk2Mi4uMWNjNzQzYThmNjQwNmMz
ZGU3YzVkMmFhOGM3NTA3ZWY5NjA5YzRmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAz
LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgSmFzb24g
TGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyB3azIgXSBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgY3Jhc2ggaW4gV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3Vu
ZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDBmNDBlZmQ4M2NiYTgwMDJkMThhMTYwN2I5YzU4
NzJlZmUxZGU3MmMuLjIzNGQzMzk2NzNhMjM2OGEzZTg0MjYxNzhlNzEyMTNmODQxYTBmMTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWlu
ZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gt
ZXhwZWN0ZWQudHh0CkBAIC0xLDEyICsxLDEyIEBACiB0ZXh0CiB0ZXh0CiB0ZXh0Ci1UaGlzIHZl
cmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBh
biBpbmRleCBvdXQgb2YgYm91bmRzCitUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvcklu
ZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMQog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBpdGVtMS5pc1RleHRNYXJrZXJW
YWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyBmYWxzZQorUEFT
UyBpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5
OTk5OTkpKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRt
YXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gu
aHRtbAppbmRleCAwYWIyZjE3OTU5OGRiYTA3NWMwNmVkNzI4YWYxMTA2OTZkNWU3MmExLi42YWM3
ZjlmNjcyY2I2ODUxNWUwN2EzYzUwMTBlZTY4MDBhMzFiYmVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRz
LWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtl
ci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sCkBAIC0xNCwxMiArMTQsMTIgQEAg
dGV4dAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdmVyaWZpZXMgdGhhdCB0
ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IG91dCBv
ZiBib3VuZHMiKTsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJr
ZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggZ3JlYXRlciB0aGFu
IDJeMzEiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKICAgICAgICAg
dmFyIGl0ZW0xID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAg
ICAgIHNob3VsZEJlRmFsc2UoIml0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJr
ZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIik7ICAgICAgIAorICAgICAgICBzaG91bGRCZVRydWUo
Iml0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5
OTk5OSkpIik7CiAgICAgfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAppbmRleCA2YTQ4NWFlYjI4MjY1NTg3ZTNkM2NjNjQ0
OTc0M2JkYjU2ZTAzOWEyLi5iYjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2Jm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0
CkBAIC0xLDIwICsxLDE3IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJ
bkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9m
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVn
aW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgogMTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3Miww
LDE4Ci01OCw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAot
NTAsNTcyLDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4
LDU3Miw0MCwxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQg
dGhlIGJlZ2lubmluZzogKDAsMCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJz
dCBjaGFyYWN0ZXI6ICgxLDApLCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxp
bmU6ICg2LDApLCAoNTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEw
MCksICg1OCw1NzIsMCwxOCkKK2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkK
K2xhc3QgY2hhcmFjdGVyOiAoNSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1
LDIpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4
KQorZmlyc3QgbGluZTogKDAsNiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwg
KDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4
KQorZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUp
LCAoMTgsNTcyLDQwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyww
KSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAw
MCwwKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAo
NywxKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAo
Nyw0Mjk0OTY3Mjk1KSwgKDU4LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBs
YWluLmh0bWwKaW5kZXggNzkyNThiMTlhZWYxY2Y2YmFiZjljYTVjZTNkZDVkOGQyMjZkNjBkZS4u
NjJjZGM5YjgyNmY5NjVmODU1ZDdkNWM4N2FlN2U1OTBkNDQ2MjlkYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxh
aW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVubmVyLmR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7IG1hcmdpbjog
MTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTEyLDcgKzcsNiBAQCBib2R5IHsgbWFyZ2lu
OiAxMDsgcGFkZGluZzogMCB9CiA8Ym9keSBjb250ZW50ZWRpdGFibGU+CiAxMjM0NTYKIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLQogCXZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKIAkKIAlmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAg
LTIxLDQwICsxNSw0MiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xl
X21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1Jl
Y3QoY29tbWVudCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsg
IjogKCIgKyBzdGFydCArICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgp
ICsgIikiKTsKKyAgICB9CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7
Ci0JCQogCQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQotCQkJd2luZG93LmdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDApOwogCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0
IHRoZSBiZWdpbm5pbmcgCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgxLCAwKSk7IC8vIGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIg
Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2
LCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAv
LyBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDUsIDEpKTsgLy8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAx
MDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSgwLCA2KSk7IC8vIGZpcnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1
KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoMSwgNDI5NDk2NzI5NSkpOyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0
IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoNywgMCkpOyAvLyBvdXQgb2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAw
LCAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoNywgMSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCisJCQl3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKKwkJCWxv
Z1JlY3QoImNhcmV0IGF0IHRoZSBiZWdpbm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0
IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0
IHRoZSBlbmQgb2YgbGluZSIsIDYsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBv
ZiBsaW5lIiwgNiwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOwor
CQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hh
cmFjdGVyIiwgNSwgMik7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJ
CQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwg
MCwgNyk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dS
ZWN0KCJmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5Njcy
OTUpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywg
MCk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAw
LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcs
IDEpOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywg
NDI5NDk2NzI5NSk7CiAJCX0gY2F0Y2ggKGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4
LmRlc2NyaXB0aW9uKTsKIAkJfQotCQkKKwogCQl2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKIAkJY29uc29sZS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsK
IAkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlKTsKLQkJCiAJfSBlbHNlIHsKIAkJ
ZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CiAJfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0
L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKaW5kZXggYWNm
ZDUyZjBiOTQ4YTY1M2ZjMDZmMjhjNTNmZDI3MjE2NDBhOGFkNC4uYmIwMmM3YmUxMjBlODA3MGYy
MDQ1ZGEzNjVkMmQwOWQzNDY2YjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDI0ICsxLDE3IEBACi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdO
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4g
QiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+
IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogMTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAs
MTgKLTU4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01
MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1
NzIsNDgsMTgKLTE4LDU3Miw0MCwxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAs
MAorY2FyZXQgYXQgdGhlIGJlZ2lubmluZzogKDAsMCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFm
dGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDApLCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0
aGUgZW5kIG9mIGxpbmU6ICg2LDApLCAoNTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9m
IGxpbmU6ICg2LDEwMCksICg1OCw1NzIsMCwxOCkKK2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgx
MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBj
aGFyYWN0ZXI6ICg1LDIpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwg
KDUwLDU3Miw4LDE4KQorZmlyc3QgbGluZTogKDAsNiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBs
aW5lOiAoMCw3KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAo
MTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgx
LDQyOTQ5NjcyOTUpLCAoMTgsNTcyLDQwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0
aGUgZW5kOiAoNywwKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0
aGUgZW5kOiAoMTAwMCwwKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0
byB0aGUgZW5kOiAoNywxKSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0
byB0aGUgZW5kOiAoNyw0Mjk0OTY3Mjk1KSwgKDU4LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbAppbmRleCBmZGNmYzZkNGIzNzc5YjliZDM5ZDg3NzFjZDJm
YjBkYmE2MzBmMjFlLi5lNWJmMjg2NjBjYzM3OGI2YWVlYmJjMzZkM2JlOWY5Mjk5ZGVmYTk0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbApAQCAtMSwxMCArMSw1IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
dGVzdFJ1bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4K
IGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIDwvc3R5bGU+CkBAIC0yMSwzMyArMTYs
MzYgQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogCQlpdGVtLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKIAkJY29uc29sZV9tZXNzYWdlcy5h
cHBlbmRDaGlsZChpdGVtKTsKIAl9Ci0JCisKKyAgICBmdW5jdGlvbiBsb2dSZWN0KGNvbW1lbnQs
IHN0YXJ0LCBsZW5ndGgpCisgICAgeworICAgICAgICBsb2coY29tbWVudCArICI6ICgiICsgc3Rh
cnQgKyAiLCIgKyBsZW5ndGggKyAiKSwgKCIKKyAgICAgICAgICAgICsgdGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShzdGFydCwgbGVuZ3RoKSArICIpIik7Cisg
ICAgfQorCiAJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0JCQogCQl0cnkgewotCQkKIAkJCXRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCQkKKwogCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNl
dFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDQpOwogICAgICAgICAgICAgdGV4dElucHV0Q29udHJv
bGxlci5zZXRNYXJrZWRUZXh0KCI1NiIsIDAsIDEpOwogCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBi
ZWdpbm5pbmcgCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSgxLCAwKSk7IC8vIGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7
IC8vIGNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJz
dCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDUsIDEpKTsgLy8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsg
Ly8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSgwLCA2KSk7IC8vIGZpcnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8v
IC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoMSwgNDI5NDk2NzI5NSkpOyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJh
Y3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoNywgMCkpOyAvLyBvdXQgb2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7
IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoNywgMSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0KKwkJCWxvZ1JlY3Qo
ImNhcmV0IGF0IHRoZSBiZWdpbm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVy
IHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZSIsIDYsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5l
IiwgNiwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9n
UmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVy
IiwgNSwgMik7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dS
ZWN0KCJmaXJzdCBsaW5lIiwgMCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7
CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJm
aXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOwor
CQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJ
CQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsK
KwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOwor
CQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2
NzI5NSk7CiAJCX0gY2F0Y2ggKGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2Ny
aXB0aW9uKTsKIAkJfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDliM2Q3MDcyNDI3ZGNlZDA1ZTM2NjhiODY3ODkyN2JkMmE1MDEzZTAuLmM1
NTM3ZTQ3YjZmOTkzNThhZTUxY2U2ZDcwMDI4MWI3YWNkMDg3N2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0OSw3ICs4NDksMTAgQEAg
d2Via2l0Lm9yZy9iLzIwMzUxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2l6aW5nL2R5bmFtaWMtYXZhaWwKICMgU3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBpcyBub3Qg
c3VwcG9ydGVkIG9uIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9z
dGFsZS13aGlsZS1yZXZhbGlkYXRlIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMDUzMTQgWyBD
YXRhbGluYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0
eWxlZC5odG1sIFsgRmFpbHVyZSBdCisjIFJlc3VsdHMgYXJlIGdvb2Qgb24gQ2F0YWxpbmEgYW5k
IG5ld2VyLiBEZWxldGUgdGhlc2UgbGluZXMgd2hlbiB3ZSBzdG9wIHN1cHBvcnRpbmcgdGhlc2Ug
b2xkZXIgdmVyc2lvbnMgb2YgbWFjT1MuCitbIFNpZXJyYSBdIGVkaXRpbmcvbWFjL2lucHV0L2Zp
cnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIEhpZ2hT
aWVycmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVy
aW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBdCiAKQEAgLTk2Myw0ICs5NjYsNCBA
QCB3ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1cnNvci1uby1tb3VzZW1v
dmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDk1NjAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJv
Z3Jlc3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTYyMSBm
YXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2
MjEgZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBhY2IxZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1YWVkZDcxMWFhZTlkLi5m
NDI0NGRiZjEzOGZiOWM4MjQ3YzIzOTJlMzcyYTg0OWJhNTRjZmNlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjMsOSArMjIzLDkgQEAg
d2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1i
ZWdpbm5pbmctb2YtYXV0b2NvcnJlY3QKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMv
c3BlbGxpbmcvcmVtb3ZpbmctdW5kZXJsaW5lLWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlv
bi11c2luZy1wdW5jdHVhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2
IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC1jYW5kaWRhdGUtYWxsb3dzLWF1dG9jb3JyZWN0
LW9uLW5leHQtd29yZC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRp
bmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5j
ZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbWFya2VyLWluY2x1ZGVzLWh5cGhlbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1p
bi1vdmVybGFwcGluZy1saW5lcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGlu
Zy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVu
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dy
aXRpbmctbW9kZS9lbmdsaXNoLWJ0LXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9l
bmdsaXNoLXJsLXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCkBAIC0xMDc0LDQgKzEwNzQsNCBAQCB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFz
ZSBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaAogCiB3
ZWJraXQub3JnL2IvMjA5NjcyIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAotd2Vi
a2l0Lm9yZy9iLzIwOTY4OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXItc3Vw
cG9ydC9zY3J1YmJlci1zdXBwb3J0LWNsaWNrLmh0bWwgWyBQYXNzIENyYXNoIF0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy9zY3J1YmJlci1zdXBwb3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBb
IFBhc3MgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBjMzcwNmMxOTVjMjRmZTkwNjkzYTJiYWNiODI3M2EyNWNkZmI1NmEwLi41ZTk2Yjc5OWY5
OTQyM2MwM2YxMWJhODhmNDkwNWY3NmUzYTY5MTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgd2Via2l0Lm9yZy9iLzIw
NDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItNi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZW1v
amktZ2VuZGVyLTguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgy
MCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFj
L3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlv
bi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMjA0MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVy
LXBsYXliYWNrLmh0bWwgWyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0
eWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRjYzExNTE5MGZmNzRkNWI4ZmU0Y2MyNmQ0YjJk
MjY0YzJlZTVjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9y
Y2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0
ICswLDAgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6
V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdl
IGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBv
ZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5n
ZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMg
b2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi0xMjM0NTYK
LTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTYxLDU3MiwwLDE4Ci0xMCw1
NzIsOCwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci01Miw1NzIsOSwxOAotMTAsNTcyLDUx
LDE4Ci0xMCw1NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAotMTgsNTcyLDQzLDE4Ci0wLDAsMCwwCi0w
LDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1z
dWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CmluZGV4IDVhYWNlMDc0MDEwMTA2
MGVjY2M0OTIwNTc0ODdiYzZiZDgzMDM3MzkuLjc1ODU4Y2U2NTM4YTdjNTJkMDhkZjVjM2QzMmM0
MTIxZTA0Mjc0NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3Rl
eHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmct
ZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC04LDUgKzgsNSBAQCBUZXN0aW5nIHRleHQg
d2l0aCBiciBlbGVtZW50cyAoPGRpdj48YnI+PC9kaXY+aGVsbG88YnI+KQogKDEsIDEwMCk6IGhl
bGxvCiAoNiwgMSk6CiAoNywgMSk6Ci0oMTAwLCAwKTogdW5kZWZpbmVkCi0oMTAwLCAxMDApOiB1
bmRlZmluZWQKKygxMDAsIDApOgorKDEwMCwgMTAwKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0w
MDEuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1z
dWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAppbmRleCAzYTkzMDMyOGUxMDYwMzlmMTUzMTNm
NGRjNDJhMTQ0ZWRkOGViNDViLi45NDMxYTM5ZTRlNDUzYjBiYThlNjU1MDgxMmI3NzhmMzJiZGY1
ZWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJp
YnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5o
dG1sCkBAIC0zNCw4ICszNCw4IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KICAg
ICAgICAgICAgIGxvZygiKDEsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMSwgMTAwKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2co
Iig2LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21S
YW5nZSg2LCAxKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2coIig3LCAxKTogIiArIHRleHRJ
bnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg3LCAxKS5zdHJpbmco
KSk7IC8vIHNob3VsZCBiZSBlbXB0eQotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRl
eHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsg
Ly8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsg
dGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAw
KSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIg
KyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAw
KSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsg
dGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAw
KSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICIiOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0
cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBkNzk3ZDIyMzExYzFlM2Y5ZTU2ZTE3
ZWExNzM1OGVhMWMyOWRkNmU2Li42ODAxMjc5MDZjMWU4NjdiYmY2ZTgxMjQxNzZjZTEyMWU0Njgz
YmZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJp
YnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1l
eHBlY3RlZC50eHQKQEAgLTcsOCArNyw4IEBAIFRlc3Rpbmcgc3R5bGVkIHRleHQgKDEyPGI+Mzxp
PjQ1NjwvaT48L2I+KQogKDAsIDEwMCk6IDEyMzQ1NgogKDUsIDEpOiA2CiAoNSwgMik6IDYKLSgx
MDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6IAorKDEw
MCwgMTAwKTogCiAKIFRlc3RpbmcgcHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkK
IHRvdGFsIGxlbmd0aDogMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
Lmh0bWwKaW5kZXggODcxZGM3YjI3YWRlZWE0ZTI1Mzg1ZWJmYjNjYTQzNGYyMjg5YjBjMy4uY2Y2
YzkxMWQ0YjU3NWIyZjc5NjRjNzFlZjU2MDczM2U5NzVkYmY2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJh
bmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1
dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1h
cmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAgICAgICAgICAgbG9nKCIoMCwgMTAwKTogIiArIHRl
eHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgwLCAxMDApLnN0
cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDUsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxl
ci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDUsIDEpLnN0cmluZygpKTsKICAgICAgICAg
ICAgIGxvZygiKDUsIDIpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDUsIDIpLnN0cmluZygpKTsKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6
ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAw
LCAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMTAw
KTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgx
MDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCisgICAgICAgICAgICBsb2coIigxMDAs
IDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdl
KDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMTAw
KTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgx
MDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bG9nKCJcblRlc3RpbmcgcHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkiKTsKICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIjEgJm5ic3A7MiAmbmJzcDsmbmJz
cDszICZuYnNwOyZuYnNwOyZuYnNwOzQmbmJzcDs1IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394846</attachid>
            <date>2020-03-28 15:55:34 -0700</date>
            <delta_ts>2020-03-28 17:38:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328155533.patch</filename>
            <type>text/plain</type>
            <size>177517</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU2MjliNjdkMjE2NDNm
YzNkM2U5ODQ5N2M2ZGMxMWQ5OTY4N2YxOC4uYzM5ZDc3YjQwZjEyYjY4NDBlNWUyY2RmYTI5ZjIx
NmFkNzlkNzJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yOCAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2aWV3
ZWQgYnVpbGQgZml4IGZvciBXaW5DYWlybyBEZWJ1ZyBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2RkZTI2
ZDA1MTQwZDkyNDA5Y2FmMWIyMGI4ZmY4ODc1ZDVmNTQyMi4uMjNhOWY0N2RmMGQyZjc4NDJlMzFj
YTljNGI2N2RjNWJiZGI3YWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAyMC0wMy0y
MiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMjAtMDMtMjggIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUg
aW5qZWN0ZWQgYnVuZGxlIHBhZ2UgZ3JvdXAgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQzNGRmOGRmNTRjNzkwMTc3Zi4uYzRkNjM2OGE2
NzlhYjg1YWY5MDliOWNlNzMyMTNmOGQxN2ZhNDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBzaG91bGQgYXZvaWQgcmVh
ZGluZyBVUkwgc3RyaW5ncyBmcm9tIHRoZSBwYXN0ZWJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaAppbmRleCA1ZDg4ZDM5NmM4NzU4YjczZDdlNzA2OTE0NTE4NjRlYjBlZGZkNjQxLi5h
OTdhNzQ5YzAwNTkyNjM1ZjU4N2I4ZjIwMWMyYzdlOTk5ODdhNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgKQEAgLTI5OSw3ICsyOTksOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4gc3RydWN0IFJlc3VsdEJhc2U8VSwgViwgZmFsc2UsIHRydWU+IHsKIHRlbXBs
YXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgUmVzdWx0IDogUmVzdWx0QmFzZTx0
eXBlbmFtZSBSZW1vdmVDaGVja2VkPFU+OjpDbGVhblR5cGUsIHR5cGVuYW1lIFJlbW92ZUNoZWNr
ZWQ8Vj46OkNsZWFuVHlwZT4gewogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5h
bWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlID0gdHlwZW5hbWUgUmVzdWx0PExIUywgUkhTPjo6
UmVzdWx0VHlwZSwgCisjaWYgIUNPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGUgPSB0eXBlbmFt
ZSBSZXN1bHQ8TEhTLCBSSFM+OjpSZXN1bHRUeXBlLAogICAgIGJvb2wgbGhzU2lnbmVkID0gc3Rk
OjpudW1lcmljX2xpbWl0czxMSFM+Ojppc19zaWduZWQsIGJvb2wgcmhzU2lnbmVkID0gc3RkOjpu
dW1lcmljX2xpbWl0czxSSFM+Ojppc19zaWduZWQ+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9u
czsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1
bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlvbnM8TEhTLCBSSFMsIFJlc3VsdFR5cGUs
IHRydWUsIHRydWU+IHsKQEAgLTMxMywxMyArMzE1LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExI
UywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09w
ZXIKIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0
VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVp
bHRpbl9hZGRfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxz
ZQogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlmIChs
aHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmICgoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1
bHRUeXBlPjo6bWF4KCkgLSByaHMpIDwgbGhzKQpAQCAtMzMyLDE4ICszMjcsMTAgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1
Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfSAvLyBpZiB0aGUgc2lnbnMgZG8gbm90IG1hdGNo
IHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJlc3VsdCA9IGxocyArIHJo
czsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9V
TlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotICAgICAg
ICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxo
cywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3Vs
dCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKICAgICAgICAgaWYgKCFzaWdu
c01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGxocyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgp
ICsgcmhzKQpAQCAtMzU1LDE4ICszNDIsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlw
ZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAg
ICAgICAgfSAvLyBpZiB0aGUgc2lnbnMgbWF0Y2ggdGhpcyBvcGVyYXRpb24gY2FuJ3Qgb3ZlcmZs
b3cKICAgICAgICAgcmVzdWx0ID0gbGhzIC0gcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNp
ZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAg
ICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCiAgICAgICAgIGlmIChzaWduc01hdGNoKGxocywgcmhzKSkgewogICAg
ICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxocyAmJiAoc3Rk
OjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLyBsaHMpIDwgcmhzKQpAQCAtMzg4
LDU4ICszNjcsMzIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBl
bmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfQogICAgICAg
ICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAg
fQogCi0gICAgc3RhdGljIGlubGluZSBib29sIGVxdWFscyhMSFMgbGhzLCBSSFMgcmhzKSB7IHJl
dHVybiBsaHMgPT0gcmhzOyB9Ci0KIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVu
YW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25z
PExIUywgUkhTLCBSZXN1bHRUeXBlLCBmYWxzZSwgZmFsc2U+IHsKICAgICAvLyBMSFMgYW5kIFJI
UyBhcmUgdW5zaWduZWQgdHlwZXMgc28gYm91bmRzIGNoZWNrcyBhcmUgbmljZSBhbmQgZWFzeQog
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYg
cmVzdWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBB
VElCTEUpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9h
ZGRfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAg
ICAgICBSZXN1bHRUeXBlIHRlbXAgPSBsaHMgKyByaHM7CiAgICAgICAgIGlmICh0ZW1wIDwgbGhz
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9S
RVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0gICAgICAgIFJlc3Vs
dFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMs
ICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVt
cDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAgICAgICBSZXN1bHRUeXBlIHRlbXAg
PSBsaHMgLSByaHM7CiAgICAgICAgIGlmICh0ZW1wID4gbGhzKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNp
ZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAg
ICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCiAgICAgICAgIGlmICghbGhzIHx8ICFyaHMpIHsKICAgICAgICAgICAg
IHJlc3VsdCA9IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ0OCwyMyArNDAxLDEz
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0
VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJlc3VsdCA9IGxocyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
ICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxzKExIUyBsaHMsIFJIUyByaHMp
IHsgcmV0dXJuIGxocyA9PSByaHM7IH0KLQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3Vs
dFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRU
eXBlLCB0cnVlLCBmYWxzZT4gewogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoaW50NjRfdCBs
aHMsIGludDY0X3QgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpCiAgICAgewotI2lmIENPTVBJTEVS
KEdDQ19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChf
X2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKICAgICAgICAgaW50NjRfdCB0ZW1wID0gbGhzICsgcmhzOwogICAgICAgICBpZiAodGVt
cCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDcyLDE4ICs0MTUsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFJl
c3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1
bHQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8UmVzdWx0VHlwZT4odGVtcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzdWIoaW50NjRfdCBsaHMsIGludDY0X3Qg
cmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJ
QkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fc3Vi
X292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKICAgICAg
ICAgaW50NjRfdCB0ZW1wID0gbGhzIC0gcmhzOwogICAgICAgICBpZiAodGVtcCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNDkxLDE4ICs0MjYsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0
cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHQKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8UmVzdWx0VHlw
ZT4odGVtcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3Rh
dGljIGlubGluZSBib29sIG11bHRpcGx5KGludDY0X3QgbGhzLCBpbnQ2NF90IHJocywgUmVzdWx0
VHlwZSYgcmVzdWx0KQogICAgIHsKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAg
ICAgUmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhs
aHMsIHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1
bHQgPSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCiAgICAgICAgIGludDY0X3Qg
dGVtcCA9IGxocyAqIHJoczsKICAgICAgICAgaWYgKHRlbXAgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PFJlc3VsdFR5cGU+OjptaW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxMCwx
MiArNDM3LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1l
dGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHQKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8UmVzdWx0VHlwZT4odGVtcCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSBi
b29sIGVxdWFscyhpbnQgbGhzLCB1bnNpZ25lZCByaHMpCi0gICAgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50NjRfdD4obGhzKSA9PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyaHMpOwog
ICAgIH0KIH07CiAKQEAgLTUzNCwyMyArNDU1LDIzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlvbnM8dW5zaWduZWQsIGludCwgUmVzdWx0
CiAgICAgewogICAgICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8aW50LCB1bnNpZ25l
ZCwgUmVzdWx0VHlwZT46Om11bHRpcGx5KGxocywgcmhzLCByZXN1bHQpOwogICAgIH0KLQotICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbHModW5zaWduZWQgbGhzLCBpbnQgcmhzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5zaWduZWQsIFJlc3Vs
dFR5cGU+OjplcXVhbHMocmhzLCBsaHMpOwotICAgIH0KIH07CiAKKyNlbmRpZiAvLyBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkKKwogdGVtcGxhdGUgPGNsYXNzIE92ZXJmbG93SGFuZGxlciwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NjYWxhcjxPdmVyZmxvd0hhbmRsZXI+
Ojp2YWx1ZT4+CiBpbmxpbmUgY29uc3RleHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxvdygpIHsgcmV0
dXJuIHRydWU7IH0KIAogdGVtcGxhdGUgPD4KIGlubGluZSBjb25zdGV4cHIgYm9vbCBvYnNlcnZl
c092ZXJmbG93PEFzc2VydE5vT3ZlcmZsb3c+KCkgeyByZXR1cm4gQVNTRVJUX0VOQUJMRUQ7IH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBp
bmxpbmUgYm9vbCBzYWZlQWRkKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQordGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgc2FmZUFkZChVIGxocywgViByaHMsIFImIHJlc3VsdCkKIHsKKyNpZiBD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyAgICByZXR1cm4gIV9fYnVpbHRpbl9hZGRfb3ZlcmZs
b3cobGhzLCByaHMsICZyZXN1bHQpOworI2Vsc2UKICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJh
dGlvbnM8VSwgViwgUj46OmFkZChsaHMsIHJocywgcmVzdWx0KTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfc2NhbGFyPE92ZXJmbG93SGFuZGxlcj46OnZhbHVlPj4KQEAgLTU2Miw5ICs0ODMsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNhZmVBZGQoVSBsaHMsIFYgcmhzLCBSJiByZXN1bHQpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBSPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZVN1YihVIGxocywgViByaHMsIFImIHJl
c3VsdCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBSPiBzdGF0
aWMgaW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNhZmVTdWIoVSBsaHMsIFYgcmhzLCBS
JiByZXN1bHQpCiB7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisgICAgcmV0dXJuICFf
X2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmcmVzdWx0KTsKKyNlbHNlCiAgICAgcmV0
dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPFUsIFYsIFI+OjpzdWIobGhzLCByaHMsIHJlc3VsdCk7
CisjZW5kaWYKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE92ZXJmbG93SGFuZGxlciwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX3NjYWxhcjxPdmVyZmxvd0hhbmRsZXI+Ojp2YWx1ZT4+CkBAIC01NzYsOSArNTAxLDEz
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlU3ViKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgUj4gc3RhdGljIGlubGluZSBib29sIHNhZmVNdWx0aXBseShVIGxocywgViByaHMs
IFImIHJlc3VsdCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBS
PiBzdGF0aWMgaW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNhZmVNdWx0aXBseShVIGxo
cywgViByaHMsIFImIHJlc3VsdCkKIHsKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyAg
ICByZXR1cm4gIV9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZyZXN1bHQpOworI2Vs
c2UKICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8VSwgViwgUj46Om11bHRpcGx5KGxo
cywgcmhzLCByZXN1bHQpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBPdmVyZmxvd0hh
bmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFIsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6dmFsdWU+PgpA
QCAtNTkwLDkgKzUxOSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZU11bHRpcGx5KFUgbGhz
LCBWIHJocywgUiYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIGlubGluZSBib29sIHNhZmVFcXVhbHMoVSBsaHMs
IFYgcmhzKQordGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gY29uc3RleHByIGJvb2wg
c2FmZUVxdWFscyhVIGxocywgViByaHMpCiB7Ci0gICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRp
b25zPFUsIFY+OjplcXVhbHMobGhzLCByaHMpOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19z
aWduZWQ8VT4oKSA9PSBzdGQ6OmlzX3NpZ25lZDxWPigpKQorICAgICAgICByZXR1cm4gbGhzID09
IHJoczsKKyAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zaWduZWQ8VT4oKSkKKyAgICAg
ICAgcmV0dXJuIGxocyA+PSAwICYmIHN0ZDo6bWFrZV91bnNpZ25lZF90PFU+KGxocykgPT0gcmhz
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJocyA+PSAwICYmIHN0ZDo6bWFrZV91bnNpZ25l
ZF90PFY+KHJocykgPT0gbGhzOwogfQogCiBlbnVtIFJlc3VsdE92ZXJmbG93ZWRUYWcgeyBSZXN1
bHRPdmVyZmxvd2VkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5YWQ1Mzc4NTMyNGJiMzRjMGRk
YjlkY2MxMTcwYzhjZGQ0YTM2NmE4Li43OTdkM2MxMzk0ODMzYWQ4OGI3NTM0ZGQyNGUzZGZlNjc2
MTlmZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeS5oCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oCiAKKyAgICBlZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKICAgICBlZGl0aW5n
L0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdo
dC5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvblVuZGVybGluZS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWEzYzRiNGRmMTk0
MjkzOTRhZjM4M2ZmMjUwZjYwMjU5OTY3OTQyYi4uYzU5MGUxNWViMGZmMGQ3MWMzOTY4MzQ2Yzdl
NTdiNjRkNzA1NzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjczNCw2ICsyNzM0LDcgQEAKIAkJOTNGMTlCMTcwODI0NUU1
OTAwMUU5QUJDIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDMxQTA1NThDQzVDMDA4MjFCQzAgLyogbGliaWN1
Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9z
ZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRjFENUI4MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggKi87IH07CiAJ
CTkzRjFENUMxMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUJGMTJENTMzNTYw
MDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKKwkJOTNGMkNDOTMyNDI3RkI5
QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVy
UmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEw
MDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4
MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1
dHRvbkdyb3Vwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzRjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1
NDA2NCAvKiBKU0NvbW1lbnQuaCAqLzsgfTsKQEAgLTEwOTM0LDYgKzEwOTM1LDcgQEAKIAkJOTNG
MUQ1QjkxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdMTG9zZUNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0YxRDVCRTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjFENUJGMTJENTMzNTYwMDgz
MkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWJHTExvc2VDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb250ZXh0
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y2RjFFQjEyN0Y3MEIx
MDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGNkYxRUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTc1OSw2ICsyMTc2MSw3IEBACiAJCQkJOTMzMDlEOEMwOTlFNjQ5
MTAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCAqLywKIAkJCQlGNEQ5ODE3RTIx
OTVGQkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcCAqLywKIAkJCQlGNEQ5
ODE3RDIxOTVGQkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8sCisJCQkJ
OTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8sCiAJCQkJN0Mz
QTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovLAogCQkJ
CTkzMzA5RDhEMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi8s
CiAJCQkJOTMzMDlEOEUwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmgg
Ki8sCkBAIC0yOTY0Miw2ICsyOTY0NSw3IEBACiAJCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5
IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEwMDk5
REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTU5
MkY3ODFBOTJBQTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVm
ZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEy
RDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5
QTMwODE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ4MzEw
NzVjZDMxMWQ5NTJjMmIxODY1OWJmZTM0ODU0ZWExN2M3NWIuLmQ1NjI5MDlmZmQyMWQ1ODQ2YTM3
NDhhNDc0ZDZlMzljZWE4YTQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCkBAIC0yMzM4LDExICsyMzM4LDEwIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFu
Z2U6KFJhbmdlICopbGl2ZVJhbmdlCiAKIC0gKFJlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJh
bmdlOihOU1JhbmdlKW5zcmFuZ2UKIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9N
QVgpCisgICAgYXV0byByYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5n
dGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9N
QVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247
Ci0gICAgICAgIAorCiAgICAgLy8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBh
cmUgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUg
b24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbgogICAgIC8vIFdlIGhhdmUg
dG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00g
Zm9yIHRob3NlIGlzIG5vdApAQCAtMjM1Miw3ICsyMzUxLDkgQEAgLSAoUmVmUHRyPFJhbmdlPilf
Y29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAgIEVsZW1lbnQqIHNlbGVj
dGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9v
dEVkaXRhYmxlRWxlbWVudCgpOwogICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/
IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIG5zcmFuZ2Uu
bG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgKnJhbmdlKSk7CiB9
CiAKIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXBy
ZXNlbnRpbmcgYSBWaXNpYmxlUG9zaXRpb24gYW5kIGNvbnZlcnQgaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODU5MmYwNzA3ODNkZjVhZDE4MzgyNzk0ZTVh
ZTlhZjk4YzBlZjJiMy4uYTNmNTNjOGUxZWEzNjM0YzRhOGU1YjA5MmFhOGYzNzIwMGJmYmY5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTEwOTgsOSArMTA5
OCw5IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICAgICAgc2l6ZV90IHNpemUgPSByZXN1
bHRzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykg
ewogICAgICAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRz
W2ldOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdl
KHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CisgICAg
ICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2li
aWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJh
bmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVT
LCBOU01ha2VSYW5nZShyZXN1bHQucmFuZ2UubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVz
dWx0LnJhbmdlLmxlbmd0aCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpA
QCAtMzY4MCwxOSArMzY4MCwyMSBAQCAtIChpZClfdGV4dE1hcmtlckZvckluZGV4OihOU0ludGVn
ZXIpdGV4dEluZGV4CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1
dG8qIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+
IHRleHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCB0ZXh0SW5kZXgsIDApOwotICAgIGlmICghdGV4dFJh
bmdlIHx8ICF0ZXh0UmFuZ2UtPmJvdW5kYXJ5UG9pbnRzVmFsaWQoKSkKKworICAgIGF1dG8qIGRv
Y3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChBWE9iamVjdENhY2hl
KiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCkpIHsKLSAgICAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hh
cmFjdGVyT2Zmc2V0Rm9yUmFuZ2UodGV4dFJhbmdlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtz
ZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKLSAgICB9
Ci0gICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgYXV0byBib3VuZGFyeSA9IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHRleHRJbmRleCk7Cisg
ICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNl
dEZvclJhbmdlKGNyZWF0ZUxpdmVSYW5nZSh7IGJvdW5kYXJ5LCBib3VuZGFyeSB9KSwgdHJ1ZSk7
CisgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVy
T2Zmc2V0XTsKIH0KIAogLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGY0ZTUxNzUw
MTFhN2FmODA0MjlkNjJkNjExOWMwODM5MDNjZmEzZDguLmUxM2UzM2M4ZmE2ZDgyYjZmOGI2YTIz
ODRkOTVhOGJmNDgxODBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpkZXRhY2goKQogICAgIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzID0g
eyB9OwogfQogCi1WZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
Ojpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcmFuZ2UpCitWZWN0b3I8UmVmUHRyPFJh
bmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5n
ZTsKICAgICBmb3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4dEl0ZXJh
dG9yLmF0RW5kKCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCkBAIC02OCwxMyArNjgsMTMgQEAg
VmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRl
eHRSYW5nZXMoY29uc3QgUmFuZ2UmIHIKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCi12b2lk
IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKK3Zv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uKQogewogICAgIGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdl
cyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCks
IERvY3VtZW50TWFya2VyKHR5cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNl
LT5lbmRPZmZzZXQoKSwgZGVzY3JpcHRpb24pKTsKIH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlIHR5cGUpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKIHsK
ICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAg
ICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtl
cih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCkp
KTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYgcgogICAgIH0KIH0K
IAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtl
cihSYW5nZSYgcmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQordm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQogewogICAgIGZv
ciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFk
ZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKERvY3Vt
ZW50TWFya2VyOjpEaWN0YXRpb25SZXN1bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4
dFBpZWNlLT5lbmRPZmZzZXQoKSwgU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCksIG1ldGFkYXRh
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5k
ZXggNjllMjU0ZDVlNzJmMTU3NmMzMWRjMTdjZWY4YjZmYzc4ODlhN2VjNC4uMzYyZDc0NzQzNDll
NGJjZjhiMzYzOWNkZjQxMmNhNzlhM2M4YjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUmFuZ2U7CiBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOwogCitzdHJ1Y3QgU2lt
cGxlUmFuZ2U7CisKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00OCwxNSArNTAsMTUgQEAgcHVibGljOgogICAgIH5Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsK
ICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIERvY3VtZW50TWFya2Vy
OjpEYXRhJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNv
bnN0IFJhbmdlJiwgYm9vbCBhY3RpdmVNYXRjaCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0
YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CiAgICAgdm9pZCBhZGREaWN0
YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGludGVycHJldGF0aW9ucyk7Ci0gICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRNYXJr
ZXIoUmFuZ2UmLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9pZCBhZGRE
aWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBSZXRhaW5QdHI8
aWQ+JiBtZXRhZGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGFkZERyYWdnZWRDb250ZW50TWFya2Vy
KFJhbmdlJik7CiAKQEAgLTEwNyw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBhZGRNYXJrZXIoTm9kZSYsIGNvbnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9y
PFJlZlB0cjxSYW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVj
dG9yPFJlZlB0cjxSYW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7
CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJr
ZXJMaXN0Pj4gTWFya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBh
NGRiYTlmOTNjMWU4MWZlNWUyYjE3YWU3Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2
MmNkM2E1YTEyNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJv
b2wgb3BlcmF0b3I8PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJ
WE1FOiBDb25zaWRlciByZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUi
IHNpbmNlIHdlIG5vcm1hbGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2Nh
dGUgaGVhcCBvYmplY3RzLgogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5v
ZGUqLCB1bnNpZ25lZCBvZmZzZXQpOwotUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBv
c2l0aW9uJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNh
Zjg1Y2I4MzA3OGQ3YTllNTEyMTdmMTQwNTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1Yjcw
MjA4YTdmN2IzMDYyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCAr
NTMsMjMgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1w
bGVSYW5nZSYgYikKICAgICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIu
ZW5kOwogfQogCisvLyBGSVhNRTogTm9kZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4g
YWxnb3JpdGhtIGxpa2UgdGhpcywgc2luY2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4g
dGhlIGlzQ2hhcmFjdGVyRGF0YU5vZGUgdmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0
aWMgYm9vbCBmYXN0SXNDaGFyYWN0ZXJEYXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0
dXJuICFub2RlLmlzQ29udGFpbmVyTm9kZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2Rl
LmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBO
b2RlOjpsZW5ndGggc2luY2UgdGhlIERPTSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2Rl
J3MgbGVuZ3RoLgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQorewor
ICAgIGlmIChmYXN0SXNDaGFyYWN0ZXJEYXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q2hhcmFjdGVyRGF0YT4obm9kZSkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRD
aGlsZE5vZGVzKCk7Cit9CisKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhOb2RlJiBub2RlKQoreworICAgIHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxl
bmd0aChub2RlKSB9IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aW1wbGVSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNk
OTg1NWE4OTE5YzM3NmUxNTdkMWNlZDljNWRlZWQ3YTE5NTcyNC4uYmQwZTFjNGVjZDBhMDE4NDM3
ZjE5OTA0NmU1NTdkY2EyY2MyNzEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUx
LDYgKzUxLDkgQEAgc3RydWN0IFNpbXBsZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBS
ZWY8UmFuZ2U+Jik7CiB9OwogCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5v
ZGUmKTsKK1dFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhOb2RlJik7CisKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNv
bnN0IFNpbXBsZVJhbmdlJik7CiAKIGlubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29u
c3QgUmVmPFJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBlYmQ0Y2FiMzI2ZjJjMDk3NTU0MGNi
MWQ2ZjllN2ExMjI3OWIyOTg4Li4xMjY4MTNjNmRkMGIzYjc4ZGRiZDMyMmMzMTMzNGU2ODgwNmY5
OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5jcHAKQEAgLTU5OSwxNyArNTk5LDE4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5n
ZSwKICAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2UuY2xvbmVSYW5n
ZSgpLCBhbHRlcm5hdGl2ZSktPmFwcGx5KCk7CiAKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQgbW9kaWZpZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1
IEJ1Z3ppbGxhOiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRy
ZWVTY29wZVJvb3QucHRyKCksIHBhcmFncmFwaE9mZnNldEluVHJlZVNjb3BlLCBjb3JyZWN0aW9u
T2Zmc2V0SW5QYXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRh
dGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKKyAgICBhdXRvIHVwZGF0ZWRQ
YXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0
aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyh0cmVlU2NvcGVSb290KSwgcGFyYWdy
YXBoT2Zmc2V0SW5UcmVlU2NvcGUpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaEVuZENvbnRh
aW5pbmdDb3JyZWN0aW9uID0gbWFrZUJvdW5kYXJ5UG9pbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWlu
aW5nQ29ycmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlv
biwgY29ycmVjdGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Cisg
ICAgQ2hhcmFjdGVyQ291bnQgYWx0ZXJuYXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gYWx0
ZXJuYXRpdmUubGVuZ3RoKCk7CisgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHsgdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24s
ICp1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gfSwgeyBjb3JyZWN0aW9u
T2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCB9KTsK
IAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYg
KHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBp
ZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1
bWVudCgpLm1hcmtlcnMoKTsKKyAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5z
dGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1h
cmtlclR5cGVzVG9BZGQpCiAgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFu
Z2UsIG1hcmtlclR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4
dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4
YWI3NmU1YmU0NjBiMjM0OS4uMDg0ZWE3MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAg
LTI4MywxMiArMjgzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxl
KEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9m
UGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAg
ICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChzY29wZS5nZXQoKSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8g
ZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3Bl
LmdldCgpLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVu
ZFJhbmdlKQotICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFy
dFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRl
eCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMp
KTsKKyAgICBhdXRvIGVuZFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJl
c29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNj
b3BlKSwgZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zKSk7CisgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9z
aXRpb24pOwogfQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHls
ZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTM2ZmUyZDYxMmI3ZjMzZGYx
YjI5NjM3ZWFkNDRiYjkzNmFmNmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRl
ZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXplX3Q7CisKK3N0cnVjdCBDaGFyYWN0
ZXJSYW5nZSB7CisgICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRpb24geyAwIH07CisgICAgQ2hhcmFj
dGVyQ291bnQgbGVuZ3RoIHsgMCB9OworCisjaWYgVVNFKENGKQorICAgIG9wZXJhdG9yIENGUmFu
Z2UoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgb3BlcmF0b3Ig
TlNSYW5nZSgpIGNvbnN0OworI2VuZGlmCit9OworCisjaWYgVVNFKENGKQorT3B0aW9uYWw8Q2hh
cmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyNlbmRpZgorCisjaWYg
VVNFKEZPVU5EQVRJT04pCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJh
bmdlKE5TUmFuZ2UpOworI2VuZGlmCisKKy8vIGlubGluZXMKKworI2lmIFVTRShDRikKKworaW5s
aW5lIENoYXJhY3RlclJhbmdlOjpvcGVyYXRvciBDRlJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQ0ZSYW5nZU1ha2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxD
aGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFuZ2UgcmFuZ2UpCit7CisgICAg
QVNTRVJUKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kIHx8IHJhbmdlLmxvY2F0aW9uID49
IDApOworICAgIEFTU0VSVChyYW5nZS5sZW5ndGggPj0gMCk7CisgICAgaWYgKHJhbmdlLmxvY2F0
aW9uIDwgMCB8fCByYW5nZS5sZW5ndGggPCAwKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50
PihyYW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5nZS5sZW5n
dGgpIH07Cit9CisKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pICYmIGRlZmluZWQoX19P
QkpDX18pCisKK2lubGluZSBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgTlNSYW5nZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxp
bmUgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxv
Y2F0aW9uLCByYW5nZS5sZW5ndGggfTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKaW5kZXggMTU0YmI4N2MzMzFkNDFkOTE2MTYyZTdkOTExMGQ0Nzg4MjdkMWM3MC4uNDZjMjUx
NzJlYjJiZWRhZjI1ZTc5MzIzZjViZjM4MjM5Y2ExMGFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE0MTUsOCArMTQxNSw4IEBA
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUg
PT0gZGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbnQgc3RhcnRJbmRl
eCA9IC0xOwotICAgIGludCBlbmRJbmRleCA9IC0xOworICAgIE9wdGlvbmFsPENoYXJhY3RlckNv
dW50PiBzdGFydEluZGV4OworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBlbmRJbmRleDsK
ICAgICBib29sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCA9IGVuZGluZ1NlbGVjdGlvbigpLmlzRGly
ZWN0aW9uYWwoKTsKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgIWVuZGluZ1NlbGVjdGlv
bigpLmlzTm9uZSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBl
bmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1MjgsMTYgKzE1MjgsMTUgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3R5bGVJbkVtcHR5UGFyYWdyYXBoICYm
IHNlbGVjdGlvbklzRW1wdHlQYXJhZ3JhcGgpCiAgICAgICAgIGFwcGx5U3R5bGUoc3R5bGVJbkVt
cHR5UGFyYWdyYXBoLmdldCgpKTsKIAotICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFy
dEluZGV4ICE9IC0xKSB7CisgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXgg
JiYgZW5kSW5kZXgpIHsKICAgICAgICAgLy8gRnJhZ21lbnQgY3JlYXRpb24gKHVzaW5nIGNyZWF0
ZU1hcmt1cCkgaW5jb3JyZWN0bHkgdXNlcyByZWd1bGFyCiAgICAgICAgIC8vIHNwYWNlcyBpbnN0
ZWFkIG9mIG5ic3BzIGZvciBzb21lIHNwYWNlcyB0aGF0IHdlcmUgcmVuZGVyZWQgKDExNDc1KSwg
d2hpY2gKICAgICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRo
ZSBtb3ZlIG9wZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8g
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAog
ICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydElu
ZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRp
b25JbmRleCArIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkK
LSAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LT5z
dGFydFBvc2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNLCBvcmlnaW5h
bElzRGlyZWN0aW9uYWwpKTsKKyAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgs
IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7
CisgICAgICAgIGF1dG8gZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxl
Um9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgICAgIHNldEVuZGluZ1Nl
bGVjdGlvbih7IHN0YXJ0LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDYwNDdiOTQ2
NDNlM2Q1ZWE1NzNhZmJkY2Y2NzZiMjAxMWFjODc1ZjcuLmRmYmE3MjFmNWVhZDNhMjAzZWQ2ZjY0
YjliYzA1ZWFkMjM5ZWMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTEx
NCwxMiArMTExNCwxMCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRp
b25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29w
ZSkKIHsKLSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNrIGZvciBhbiBpbnZh
bGlkIGluZGV4LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlkYXRlIGluZGljZXMg
YmVjYXVzZSAKLSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFuZ2UpCisgICAgaWYg
KCFzY29wZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyByYW5nZS0+c3RhcnRQ
b3NpdGlvbigpIH07CisgICAgQ2hhcmFjdGVyQ291bnQgaW5kZXhBc0NoYXJhY3RlckNvdW50ID0g
aW5kZXg7CisgICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwg
aW5kZXhBc0NoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpIH07CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQzYWMwZmMwMTA5NTJiYWM0ZjEwNmUy
YmI5ZDUwYWU3NGVmN2ZhMjUuLmI2OTQ4OWY3NjU3NWQ1ZmEyODNiZWNhZDA0YzkxMmVlZDkwZGM5
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyMjMsMTUgKzIyMjMsMTUgQEAg
dm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKQogICAgIE5vZGUmIHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5lbmRDb250YWluZXIoKTsKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFw
ID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgCi0gICAgaW50IG1pc3Nw
ZWxsaW5nT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBtaXNzcGVsbGluZ09mZnNldCA9
IDA7CiAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwotICAgIGludCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
MDsKICAgICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKICAgICBTdHJpbmcgYmFk
R3JhbW1hclBocmFzZTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAKICAgICBib29sIGlz
U3BlbGxpbmcgPSB0cnVlOwotICAgIGludCBmb3VuZE9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVy
Q291bnQgZm91bmRPZmZzZXQgPSAwOwogICAgIFN0cmluZyBmb3VuZEl0ZW07CiAgICAgUmVmUHRy
PFJhbmdlPiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQoKSkgewpAQCAtMjMwNywxMCArMjMwNywxMCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5j
ZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8v
IHBhbmVsLCBhbmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUg
bGF0ZXIuCiAgICAgICAgIAogICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgo
KSA+IDApOwotICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAtMSAmJiBn
cmFtbWFyRGV0YWlsLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5y
YW5nZS5sZW5ndGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRo
aXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBh
IHBhcmFncmFwaAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1t
YXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgYXV0byBi
YWRHcmFtbWFyUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5n
ZSwgeyBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiwg
Z3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVj
dGlvbigpOwogICAgICAgICAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZh
bmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAg
Ly8gV2UgZm91bmQgYSBtaXNzcGVsbGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1h
ci4gU2VsZWN0IHRoZSBtaXNzcGVsbGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5k
IHN0b3JlCiAgICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBs
YXRlci4KICAgICAgICAgCi0gICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1p
c3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0g
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNwZWxsaW5nU2VhcmNoUmFuZ2UsIHsgbWlzc3BlbGxpbmdP
ZmZzZXQsIG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERP
V05TVFJFQU0pKTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24o
KTsKICAgICAgICAgCkBAIC0yNzczLDcgKzI3NzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVJh
bmdlRm9yU3BlbGxDaGVja2luZyhSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYg
cgogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwg
cmVwbGFjZW1lbnQpLT5hcHBseSgpOwogfQogCi1zdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVj
a2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBo
JiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCwgaW50IHJlc3VsdExvY2F0aW9uLCBpbnQgcmVzdWx0TGVuZ3RoKQorc3RhdGljIHZvaWQg
Y29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRD
aGVja2luZ1BhcmFncmFwaCYgcGFyYWdyYXBoLCBSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQsIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0aW9uLCBDaGFy
YWN0ZXJDb3VudCByZXN1bHRMZW5ndGgpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBkb3duY2FzdDxD
b250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigp
LnJvb3ROb2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZvaWQgY29ycmVj
dFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2lu
Z1BhcmEKICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVy
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFy
Oi8vMTAzMDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJh
bmdlPiBuZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVw
bGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBzcGVsbENoZWNr
aW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVz
dWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3JhcGggPSBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVj
a2luZ1JhbmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
bmV3UGFyYWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVu
Z3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGggfSk7CisgICAgYXV0byBz
cGVsbENoZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobmV3UGFyYWdyYXBoUmFu
Z2UsIHsgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpIH0pOworICAgIHBhcmFn
cmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2lu
Z1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0ZUxpdmVS
YW5nZShuZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxh
Y2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3ICsyODEwLDcgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBWZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNv
bXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBt
dWNoIGNvbnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVy
Q291bnQgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFtYmlndW91c0JvdW5kYXJ5
T2Zmc2V0ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAgICAg
Ym9vbCByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKQEAgLTI4MjMsOSArMjgy
Miw5IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJl
dFBvc2l0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAg
ICAgICAgIHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9u
KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRl
ckNoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiAo
c2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4
dENoYXJBdChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKKyAgICAg
ICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJh
Z3JhcGgudGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0
IC0gMV0gPT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0
aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0
aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgo
KSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNl
bGVjdGlvbk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAw
ICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpICYmIGlzQW1i
aWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQg
LSAxXSkpCiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBAQCB2b2lkIEVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFZlY3RvcjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNv
bnN0IGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkg
KyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBl
IHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRM
b2NhdGlvbiA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50Owot
ICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7Ci0gICAg
ICAgIGNvbnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0
TGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlv
biA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAg
ICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hl
Y2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIFRleHRDaGVja2lu
Z1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKKyAgICAgICAgQ2hhcmFjdGVyQ291
bnQgcmVzdWx0TG9jYXRpb24gPSByZXN1bHRzW2ldLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TGVuZ3RoID0gcmVz
dWx0c1tpXS5yYW5nZS5sZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdEVuZExv
Y2F0aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIENoYXJhY3Rl
ckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGguYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50TGVu
Z3RoKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgYm9vbCBy
ZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0
ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CisgICAgICAgIGJv
b2wgcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9m
ZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCiAgICAg
ICAgIC8vIE9ubHkgbWFyayBtaXNzcGVsbGluZyBpZjoKICAgICAgICAgLy8gMS4gQ3VycmVudCB0
ZXh0IGNoZWNraW5nIGlzbid0IGRvbmUgZm9yIGF1dG9jb3JyZWN0aW9uLCBpbiB3aGljaCBjYXNl
IHNob3VsZE1hcmtTcGVsbGluZyBpcyBmYWxzZS4KQEAgLTI4NTAsMTYgKzI4NDksMTYgQEAgdm9p
ZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiAh
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nCiAgICAgICAgICAgICAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGgu
Y2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRP
ZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAg
ICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2Nh
dGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9
IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAg
ICAgICAgICAgICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+aXNTcGVsbGluZ01h
cmtlckFsbG93ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50
KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIHJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3Jh
bW1hciAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdy
YXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHRUeXBlID09IFRl
eHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMo
eyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pKSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgZGV0YWlsIDogcmVzdWx0c1tpXS5kZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGRldGFpbC5sZW5ndGggPiAwICYmIGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRp
b24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0
aW9uICsgZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAgJiYgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49
IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7
IHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVu
Z3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFy
YWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24s
IGRldGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFk
R3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlw
dGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjg3Nyw3ICsyODc2
LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1
bHQgZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8g
ICAgKEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRl
eHQgY2hlY2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFj
ZW1lbnQgPSByZXBsYWNlbWVudC5sZW5ndGgoKSA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91
c0JvdW5kYXJ5OwotICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5z
dWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8g
cmFuZ2VUb1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVz
dWx0TGVuZ3RoIH0pOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRv
bmUgb25seSBpbW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZC4KICAgICAgICAgICAgIGlm
IChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0
ICE9IHJlc3VsdEVuZExvY2F0aW9uICsgMSkKQEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8g
U2tpcCBhbGwgb3RoZXIgcmVzdWx0cyBmb3IgdGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAg
ICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9j
YXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAg
ICAgICAgICAgIHdoaWxlIChpICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFd
LnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlv
bikKICAgICAgICAgICAgICAgICAgICAgaSsrOwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9u
Q2hhbmdlZCA9IHRydWU7CkBAIC0yOTMxLDcgKzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3Rv
cjxUZQogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlv
biwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxh
Y2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
c3BvbnNlOjpBY2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkp
OwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rp
b25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0y
OTQ1LDggKzI5NDQsOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3Bl
bGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGggZXh0ZW5kZWRQYXJhZ3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAg
ICAgICAgLy8gUmVzdG9yZSB0aGUgY2FyZXQgcG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSBy
ZXBsYWNlbWVudHMKICAgICAgICAgZXh0ZW5kZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRF
bmQoKTsKLSAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rp
b25PZmZzZXQgPj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFu
Z2VMZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVk
UGFyYWdyYXBoLnN1YnJhbmdlKDAsIHNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0
b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFy
YWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2Ug
PSBleHRlbmRlZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAg
ICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQ
b3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25G
b3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2Fy
ZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwpAQCAtMjk3Myw3ICsyOTcyLDggQEAgdm9pZCBFZGl0
b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcpCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmlu
Zywgc2VsZWN0aW9uLmdldCgpKTsKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBo
KCpzZWxlY3Rpb24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmlu
ZywgU2VsZWN0UmVwbGFjZW1lbnQ6Ok5vLCBTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJ
bnNlcnQpOwotICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFn
cmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBDaGFy
YWN0ZXJDb3VudCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSByZXBsYWNl
ZFN0cmluZy5sZW5ndGgoKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJy
YW5nZSh7IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXND
aGFyYWN0ZXJDb3VudCB9KTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGNoYW5nZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6
OlJlcGxhY2VtZW50LCBTdHJpbmcoKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LT5tYXJrUmV2ZXJzZWQoY2hhbmdlZFJhbmdlKTsKICNlbHNlCkBAIC0zNzc3LDEyICszNzc3LDEy
IEBAIHZvaWQgRWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiByYW5n
ZSwgY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nCiAKICAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3Np
dGlvbiArIHJlbGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgpOwogCi0gICAgICAgIHVuc2lnbmVk
IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9u
OwotICAgICAgICB1bnNpZ25lZCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24g
LSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJy
YW5nZU9mZnNldCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKKyAg
ICAgICAgQ2hhcmFjdGVyQ291bnQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9u
IC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMTsKIAotICAgICAgICBhdXRvIHN1YnJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVu
Z3RoKTsKKyAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5n
ZSwgeyBzdWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGggfSk7CiAKLSAgICAgICAgbWFya2Vk
UmFuZ2VzLmFwcGVuZChzdWJyYW5nZS5wdHIoKSk7CisgICAgICAgIG1hcmtlZFJhbmdlcy5hcHBl
bmQoY3JlYXRlTGl2ZVJhbmdlKHN1YnJhbmdlKSk7CiAgICAgICAgIHJhbmdlLm93bmVyRG9jdW1l
bnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKHN1YnJhbmdlLCBEb2N1bWVudE1hcmtlcjo6VGVsZXBo
b25lTnVtYmVyKTsKIAogICAgICAgICBzY2FubmVyUG9zaXRpb24gKz0gcmVsYXRpdmVFbmRQb3Np
dGlvbiArIDE7CkBAIC0zOTkyLDE0ICszOTkyLDE0IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpj
b250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIAogUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3Vs
dCYgcmVzdWx0KSBjb25zdAogewotICAgIGlmICghcmVzdWx0Lmxlbmd0aCkKKyAgICBpZiAoIXJl
c3VsdC5yYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRy
PFJhbmdlPiBjb250ZXh0UmFuZ2UgPSBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7
CiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0
aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVD
aGFyYWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQucmFuZ2UpKTsKIH0KIAogdm9pZCBF
ZGl0b3I6OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGFkODI3ODg5Y2FiNTg1ZDMwMTU5NmE2M2Fi
ZGVjNmZmNGI3NWUzNzQuLmY4MzI3MmMyOGYwYTBkN2Q2N2MwZTcxMjI0YTc3YWM5NDFlYWY1MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRl
eHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgYmFkR3JhbW1hcjsKICAgICAgICAgYmFkR3JhbW1hci50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgYmFkR3JhbW1hci5sb2NhdGlvbiA9
IGNoZWNrTG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247Ci0gICAgICAgIGJhZEdyYW1tYXIu
bGVuZ3RoID0gYmFkR3JhbW1hckxlbmd0aDsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sb2Nh
dGlvbiA9IGNoZWNrTG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247CisgICAgICAgIGJhZEdy
YW1tYXIucmFuZ2UubGVuZ3RoID0gYmFkR3JhbW1hckxlbmd0aDsKICAgICAgICAgYmFkR3JhbW1h
ci5kZXRhaWxzID0gV1RGTW92ZShiYWRHcmFtbWFyRGV0YWlscyk7CiAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKGJhZEdyYW1tYXIpOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHN0YXRpYyB2b2lkIGZpbmRN
aXNzcGVsbGluZ3MoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBW
ZWN0b3I8CiAKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZzsKICAg
ICAgICAgICAgIG1pc3NwZWxsaW5nLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsK
LSAgICAgICAgICAgIG1pc3NwZWxsaW5nLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlzc3BlbGxp
bmdMb2NhdGlvbjsKLSAgICAgICAgICAgIG1pc3NwZWxsaW5nLmxlbmd0aCA9IG1pc3NwZWxsaW5n
TGVuZ3RoOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlz
c3BlbGxpbmcubG9jYXRpb24sIG1pc3NwZWxsaW5nLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpKTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uID0gd29yZFN0
YXJ0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdl
Lmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVw
bGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdv
cmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24sIG1pc3NwZWxsaW5n
LnJhbmdlLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKG1pc3NwZWxsaW5nKTsKICAgICAgICAgfQogCkBAIC0xMzksMTQgKzEzOSwx
MyBAQCB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VUb05leHRFbmQoKQog
dm9pZCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVl
cygpCiB7CiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9jaGVja2luZ0VuZC5y
ZXNldCgpOwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNldCgpOwogICAgIG1f
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29mZnNldEFzUmFuZ2Ug
PSBudWxscHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjpyYW5nZUxlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFjdGVy
Q291bnQocGFyYWdyYXBoUmFuZ2UoKSk7CiB9CkBAIC0xNTgsMTIgKzE1NywxMiBAQCBSYW5nZSYg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJu
ICptX3BhcmFncmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6c3VicmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25z
dAorUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKENoYXJhY3RlclJh
bmdlIHJhbmdlKSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBh
cmFncmFwaFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBhcmFncmFwaFJhbmdl
KCksIHJhbmdlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNraW5nUGFyYWdyYXBo
OjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitFeGNlcHRpb25PcjxD
aGFyYWN0ZXJDb3VudD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBv
aW50KHBhcmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKICAgICBhdXRvIGVuZCA9IG1h
a2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKQEAgLTE4NywzNSArMTg2LDMzIEBAIFJhbmdlJiBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAq
bV9vZmZzZXRBc1JhbmdlOwogfQogCi1jb25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFw
aDo6dGV4dCgpIGNvbnN0CitTdHJpbmdWaWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051
bGwoKSkKICAgICAgICAgbV90ZXh0ID0gcGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAg
ICByZXR1cm4gbV90ZXh0OyAKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tp
bmdTdGFydCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNo
ZWNraW5nU3RhcnQoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQogICAgICAg
ICBtX2NoZWNraW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAg
IHJldHVybiAqbV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBo
OjpjaGVja2luZ0VuZCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OmNoZWNraW5nRW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAg
ICAgIG1fY2hlY2tpbmdFbmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwot
ICAgIHJldHVybiAqbV9jaGVja2luZ0VuZDsKKyAgICByZXR1cm4gY2hlY2tpbmdTdGFydCgpICsg
Y2hlY2tpbmdMZW5ndGgoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tp
bmdMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpj
aGVja2luZ0xlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nTGVuZ3RoKQogICAg
ICAgICBtX2NoZWNraW5nTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobV9jaGVja2luZ1JhbmdlKTsK
ICAgICByZXR1cm4gKm1fY2hlY2tpbmdMZW5ndGg7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QK
IHsKICAgICBpZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KQogICAgICAgICByZXR1cm4g
Km1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKQEAgLTIyOSw3ICsyMjYsNyBAQCBpbnQgVGV4
dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKICAg
ICByZXR1cm4gKm1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKIH0KIAotaW50IFRleHRDaGVj
a2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAorQ2hhcmFj
dGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKQEAgLTI0NiwxMiArMjQz
LDEyIEBAIFRleHRDaGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVu
dCYgY2xpZW50LCBSYW5nZSYgcmFuZ2UpCiAKIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVj
a2luZ0hlbHBlcigpID0gZGVmYXVsdDsKIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtB
bGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1p
c3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSkKIHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKIAogICAgIFN0
cmluZyBmaXJzdE1pc3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOwor
ICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAKICAgICBmb3IgKFdv
cmRBd2FyZUl0ZXJhdG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3VycmVudENodW5rT2Zm
c2V0ICs9IGl0LnRleHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFN0cmlu
Z1ZpZXcgdGV4dCA9IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjc0LDE3IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGlu
Z09mZnNldCwgYm9vCiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBt
aXNzcGVsbGluZ0xlbmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGgg
JiYgbWlzc3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9u
ICsgbWlzc3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29t
cHV0ZSByYW5nZSBvZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxp
bmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zm
c2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAg
ICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2Us
IHsgY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Q2hhcmFjdGVyQ291bnQ+KG1pc3NwZWxsaW5nTGVuZ3RoKSB9KTsKIAogICAgICAgICAgICAgLy8g
UmVtZW1iZXIgZmlyc3QtZW5jb3VudGVyZWQgbWlzc3BlbGxpbmcgYW5kIGl0cyBvZmZzZXQuCiAg
ICAgICAgICAgICBpZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsKICAgICAgICAgICAgICAgICBmaXJz
dE1pc3NwZWxsaW5nT2Zmc2V0ID0gY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2Nh
dGlvbjsKICAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nID0gdGV4dC5zdWJzdHJpbmco
bWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gbWlzc3BlbGxpbmdSYW5nZS5wdHIo
KTsKKyAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UgPSBjcmVhdGVMaXZlUmFu
Z2UobWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFN0
b3JlIG1hcmtlciBmb3IgbWlzc3BlbGxlZCB3b3JkLgotICAgICAgICAgICAgbWlzc3BlbGxpbmdS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlz
c3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKKyAgICAgICAgICAgIG1p
c3NwZWxsaW5nUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3Nw
ZWxsaW5nUmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAKICAgICAgICAgICAgIC8v
IEJhaWwgb3V0IGlmIHdlJ3JlIG1hcmtpbmcgb25seSB0aGUgZmlyc3QgbWlzc3BlbGxpbmcsIGFu
ZCBub3QgYWxsIGluc3RhbmNlcy4KICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTI5OCw3
ICsyOTUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGlu
ZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogICAgIHJldHVybiBmaXJzdE1pc3Nw
ZWxsaW5nOwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywg
aW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
KQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdy
YW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNv
dW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
KQogewogICAgIGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTMxMyw4ICszMTAsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1h
ciwgYgogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBk
YXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9
IHRydWU7CiAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IDA7Ci0gICAgb3V0R3JhbW1hckRldGFp
bC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBv
dXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWls
LnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7
CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwog
ICAgIApAQCAtMzM0LDggKzMzMSw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRG
aXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgd2hp
bGUgKHRvdGFsTGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxSYW5nZUxlbmd0aCkgewogICAgICAgICAv
LyBJdGVyYXRlIHRocm91Z2ggdGhlIHNlYXJjaCByYW5nZSBieSBwYXJhZ3JhcGhzLCBjaGVja2lu
ZyBlYWNoIG9uZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIuCiAgICAgICAgIGF1dG8gY3VycmVu
dExlbmd0aCA9IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgaW50IGN1
cnJlbnRTdGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7
Ci0gICAgICAgIGludCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKKyAgICAgICAg
Q2hhcmFjdGVyQ291bnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5n
ZVN0YXJ0T2Zmc2V0IDogMDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudEVuZE9mZnNl
dCA9IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAg
ICAgICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2Yg
dGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAg
ICAgICAgICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhp
cyBhcmVhLgpAQCAtMzQ2LDkgKzM0Myw5IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAg
ICAgICAgICBTdHJpbmcgcGFyYWdyYXBoU3RyaW5nID0gcGxhaW5UZXh0KHBhcmFncmFwaFJhbmdl
LnB0cigpKTsKICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCkgPiAwKSB7
CiAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZEdyYW1tYXIgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBpbnQgc3BlbGxpbmdMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1t
YXJQaHJhc2VMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJEZXRhaWxM
b2NhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdMb2Nh
dGlvbiA9IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZUxv
Y2F0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyRGV0YWls
TG9jYXRpb24gPSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRl
eCA9IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gcmVzdWx0czsKQEAgLTM2MSw0MiArMzU4LDQyIEBAIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50
LnRleHRDaGVja2VyKCksIHBhcmFncmFwaFN0cmluZywgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywg
Y3VycmVudFNlbGVjdGlvbik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6
IHJlc3VsdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRP
ZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zm
c2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCA+IDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlvbiA+PSAwKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQubG9jYXRp
b247Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0
cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0
LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxlbmd0aCA+
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sb2NhdGlv
biA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1
bHQucmFuZ2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29y
ZCA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1
bHQucmFuZ2UubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVs
bGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYm
IHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LmxvY2F0
aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyByZXN1bHQubGVuZ3Ro
ID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAm
JiByZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5yYW5n
ZS5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsg
cmVzdWx0LnJhbmdlLmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFy
IHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBm
aXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdy
YW1tYXIgcmVzdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuZGV0YWlscy5zaXplKCk7IGorKykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFp
bCA9ICZyZXN1bHQuZGV0YWlsc1tqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZGV0YWlsLT5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZz
ZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3Ro
IDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LmxvY2F0aW9u
ICsgZGV0YWlsLT5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+
PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlLmxvY2F0
aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVz
dWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFu
Z2UubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0
LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxM
b2NhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFp
bEluZGV4ID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFp
bExvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gcmVzdWx0LnJh
bmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmRHcmFtbWFyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZm91bmRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jh
bW1hclBocmFzZUxvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gcmVzdWx0LmRl
dGFpbHNbZ3JhbW1hckRldGFpbEluZGV4XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRp
b24sIHJlc3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1t
YXJQaHJhc2UgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlv
biwgcmVzdWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgaWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwg
YmFkR3JhbW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFy
RGV0YWlsTG9jYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNl
dCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAt
IGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJh
dGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IGNoYXJhY3Rl
ckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICpt
YWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAg
ICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CkBAIC00MDUsNyArNDAyLDcg
QEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdy
YW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJh
ZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBncmFt
bWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zm
c2V0OworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQ
b2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdy
YXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG91dElz
U3BlbGxpbmcgPSBmYWxzZTsKQEAgLTQyOCwxOCArNDI1LDE4IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFt
bWFyLCBiCiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIAotaW50IFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4m
IGdyYW1tYXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK2ludCBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+JiBncmFtbWFyRGV0YWlscywgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0
aW9uLCBDaGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0
LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4g
RmluZCB0aGUgZWFybGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2gg
cmFuZ2UgKGlmIGFueSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBm
b3IgZWFjaCBkZXRhaWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0
aW9uU29GYXIgPSAtMTsKKyAgICBDaGFyYWN0ZXJDb3VudCBlYXJsaWVzdERldGFpbExvY2F0aW9u
U29GYXIgPSAwOwogICAgIGludCBlYXJsaWVzdERldGFpbEluZGV4ID0gLTE7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZncmFtbWFyRGV0YWlsc1tpXTsKLSAgICAg
ICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxv
Y2F0aW9uID49IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsK
KyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgIAot
ICAgICAgICBpbnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgIENoYXJhY3RlckNvdW50IGRl
dGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBk
ZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAKICAgICAgICAgLy8gU2tpcCB0aGlzIGRl
dGFpbCBpZiBpdCBzdGFydHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UKICAgICAg
ICAgaWYgKGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPCBzdGFydE9mZnNldCkKQEAgLTQ1
MCwzMCArNDQ3LDMwIEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJE
ZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChtYXJrQWxsKSB7Ci0gICAgICAgICAgICBhdXRv
IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3Jh
bW1hclBocmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRh
aWwtPmxlbmd0aCk7Ci0gICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAg
IGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UuZ2V0
KCksIHsgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPnJh
bmdlLmxvY2F0aW9uLCBkZXRhaWwtPnJhbmdlLmxlbmd0aCB9KTsKKyAgICAgICAgICAgIGJhZEdy
YW1tYXJSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1h
clJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24p
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBv
bmx5IGlmIGl0J3MgZWFybGllciB0aGFuIG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFp
bHMgYXJlbid0IGluIGEgZ3VhcmFudGVlZCBvcmRlcikKLSAgICAgICAgaWYgKGVhcmxpZXN0RGV0
YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+bG9j
YXRpb24pIHsKKyAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0
RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+cmFuZ2UubG9jYXRpb24pIHsKICAgICAgICAg
ICAgIGVhcmxpZXN0RGV0YWlsSW5kZXggPSBpOwotICAgICAgICAgICAgZWFybGllc3REZXRhaWxM
b2NhdGlvblNvRmFyID0gZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgIGVhcmxpZXN0RGV0
YWlsTG9jYXRpb25Tb0ZhciA9IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgcmV0dXJuIGVhcmxpZXN0RGV0YWlsSW5kZXg7CiB9CiAKLVN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0
R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwp
IGNvbnN0CitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdy
YW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFy
UGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBv
dXQgcGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5n
IHRvIHJldHVybi4KLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0
R3JhbW1hckRldGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9j
YXRpb24gPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBv
dXRHcmFtbWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgb3V0R3JhbW1hclBocmFzZU9mZnNl
dCA9IDA7CiAgICAgCi0gICAgU3RyaW5nIGZpcnN0QmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJp
bmdWaWV3IGZpcnN0QmFkR3JhbW1hclBocmFzZTsKIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNo
IHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgZ3JhbW1hciBjaGVj
a2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJh
Y3RlciBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQg
b2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ4MSwxMSArNDc4LDExIEBAIFN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYg
b3V0R3JhbW1hckRldGFpbCwKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKG1f
cmFuZ2UuY29weVJlZigpKTsKICAgICAKICAgICAvLyBTdGFydCBjaGVja2luZyBmcm9tIGJlZ2lu
bmluZyBvZiBwYXJhZ3JhcGgsIGJ1dCBza2lwIHBhc3QgcmVzdWx0cyB0aGF0IG9jY3VyIGJlZm9y
ZSB0aGUgc3RhcnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZS4KLSAgICBmb3IgKGludCBz
dGFydE9mZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkg
eworICAgIGZvciAoQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8
IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKICAgICAgICAgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+IGdyYW1tYXJEZXRhaWxzOwogICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9u
ID0gLTE7CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKLSAgICAgICAg
bV9jbGllbnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyhw
YXJhZ3JhcGgudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywg
JmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOworICAg
ICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3Jh
cGgudGV4dCgpLnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3Jh
bW1hclBocmFzZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VS
VChiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwpAQCAtNTA2LDcgKzUwMyw3IEBAIFN0
cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFp
bCYgb3V0R3JhbW1hckRldGFpbCwKICAgICAgICAgLy8ga2VwdCBnb2luZyBzbyB3ZSBjb3VsZCBt
YXJrIGFsbCBpbnN0YW5jZXMpLgogICAgICAgICBpZiAoYmFkR3JhbW1hckluZGV4ID49IDAgJiYg
Zmlyc3RCYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb3V0R3JhbW1h
clBocmFzZU9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHBhcmFncmFwaC5jaGVj
a2luZ1N0YXJ0KCk7Ci0gICAgICAgICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3Jh
cGgudGV4dFN1YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJh
c2VMZW5ndGgpOworICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBo
LnRleHQoKS5zdWJzdHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhy
YXNlTGVuZ3RoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRm91bmQgb25lLiBXZSdy
ZSBkb25lIG5vdywgdW5sZXNzIHdlJ3JlIG1hcmtpbmcgZWFjaCBpbnN0YW5jZS4KICAgICAgICAg
ICAgIGlmICghbWFya0FsbCkKQEAgLTUxOCw3ICs1MTUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRh
aWwsCiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgYmFk
R3JhbW1hclBocmFzZUxlbmd0aDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGZpcnN0QmFkR3Jh
bW1hclBocmFzZTsKKyAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlLnRvU3RyaW5nKCk7
CiB9CiAKIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdApA
QCAtNTI5LDcgKzUyNiw3IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGlj
YWwoKSBjb25zdAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBwYXNzZWQgcmFuZ2Ug
ZXhhY3RseSBjb3JyZXNwb25kcyB0byBhIGJhZCBncmFtbWFyIGRldGFpbCByYW5nZS4gVGhpcyBp
cyBhbmFsb2dvdXMKICAgICAvLyB0byBpc1NlbGVjdGlvbk1pc3NwZWxsZWQuIEl0J3Mgbm90IGdv
b2QgZW5vdWdoIGZvciB0aGVyZSB0byBiZSBzb21lIGJhZCBncmFtbWFyIHNvbWV3aGVyZSBpbiB0
aGUgcmFuZ2UsCiAgICAgLy8gb3Igb3ZlcmxhcHBpbmcgdGhlIHJhbmdlOyB0aGUgcmFuZ2VzIG11
c3QgZXhhY3RseSBtYXRjaC4KLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldDsKKyAgICBDaGFy
YWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0OwogICAgIAogICAgIEdyYW1tYXJEZXRhaWwg
Z3JhbW1hckRldGFpbDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IGZpbmRGaXJzdEJh
ZEdyYW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwpAQCAt
NTQyLDE1ICs1MzksMTUgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNh
bCgpIGNvbnN0CiAgICAgaWYgKGdyYW1tYXJQaHJhc2VPZmZzZXQgPiAwKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAg
ICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRl
dGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5n
ZS5sZW5ndGggPiAwKTsKIAogICAgIC8vIEJhZCBncmFtbWFyLCBidXQgc3RhcnQgb2YgZGV0YWls
IChlLmcuIHVuZ3JhbW1hdGljYWwgd29yZCkgZG9lc24ndCBtYXRjaCBzdGFydCBvZiByYW5nZQot
ICAgIGlmIChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKKyAg
ICBpZiAoZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFy
dCBvZiByYW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5k
IG9mIHJhbmdlCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihncmFtbWFyRGV0YWlsLmxl
bmd0aCkgIT0gY2hhcmFjdGVyQ291bnQobV9yYW5nZSkpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwu
cmFuZ2UubGVuZ3RoICE9IGNoYXJhY3RlckNvdW50KG1fcmFuZ2UpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCB0byBiZSBkaXNw
bGF5aW5nIHRoaXMgZXJyb3IgKHdoZXRoZXIgb3Igbm90IHRoZSBzcGVsbGluZyBwYW5lbCBpcyBv
biBzY3JlZW4pLgpAQCAtNTk0LDggKzU5MSw4IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2lu
Z0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAg
ICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVja2VyKCksIHBhcmFncmFw
aC50ZXh0KCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAg
ICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5n
ZU1hdGNoZXMocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgewotICAgICAgICAgICAg
U3RyaW5nIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCk7Cisg
ICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBw
YXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LnJhbmdlKSkgeworICAgICAgICAg
ICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCku
dG9TdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7
CiAgICAgICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZCht
aXNzcGVsbGVkV29yZCwgU3RyaW5nKCksIGN1cnJlbnRTZWxlY3Rpb24sIGd1ZXNzZXMpOwogICAg
ICAgICAgICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChtaXNz
cGVsbGVkV29yZCk7CkBAIC02MDgsMTIgKzYwNSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hl
Y2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9v
bAogICAgICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVz
dWx0cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hciAmJiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShy
ZXN1bHQucmFuZ2UpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdC5k
ZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sZW5ndGggPiAwKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAg
ICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LmxvY2F0aW9uICsg
ZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKHJlc3VsdC5s
b2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5y
YW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxv
Y2F0aW9uID49IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5n
ZU1hdGNoZXMoeyByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24s
IGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJh
ZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhyZXN1bHQucmFuZ2Uu
bG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBndWVzcyA6IGRldGFpbC5ndWVzc2VzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZ3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOwpAQCAtNjMxLDcgKzYyOCw3IEBAIHZvaWQg
VGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZp
cnN0TWlzc3BlbGxpbmdSYW5nCiB7CiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBv
ZiBmaW5kRmlyc3RNaXNzcGVsbGluZy4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kIHRoZSAi
b3V0IHBhcmFtZXRlciI7CiAgICAgLy8gYWxsIHdlIG5lZWQgdG8gZG8gaXMgbWFyayBldmVyeSBp
bnN0YW5jZS4KLSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25v
cmVkT2Zmc2V0OwogICAgIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGlnbm9yZWRPZmZzZXQsIHRydWUs
IGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTY0MSw3ICs2MzgsNyBAQCB2b2lkIFRl
eHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAgIC8vIFVzZSB0aGUgIm1h
cmtBbGwiIGZlYXR1cmUgb2Ygb2ZpbmRGaXJzdEJhZEdyYW1tYXIuIElnbm9yZSB0aGUgcmV0dXJu
IHZhbHVlIGFuZCAib3V0IHBhcmFtZXRlcnMiOyBhbGwgd2UgbmVlZCB0bwogICAgIC8vIGRvIGlz
IG1hcmsgZXZlcnkgaW5zdGFuY2UuCiAgICAgR3JhbW1hckRldGFpbCBpZ25vcmVkR3JhbW1hckRl
dGFpbDsKLSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVk
T2Zmc2V0OwogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGln
bm9yZWRPZmZzZXQsIHRydWUpOwogfQogI2VuZGlmCkBAIC02NjgsNyArNjY1LDcgQEAgdm9pZCBj
aGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3
IHRleHQsIE9wdGlvblNldDwKICAgICBpZiAoY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hl
Y2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5n
dGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICBmb3IgKGF1dG8mIG1pc3BlbGxpbmcgOiBtaXNw
ZWxsaW5ncykKLSAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2ln
bmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcubG9jYXRpb24pOworICAgICAgICAg
ICAgZ3JhbW1hckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xl
bmd0aCwgbWlzcGVsbGluZy5yYW5nZS5sb2NhdGlvbik7CiAgICAgICAgIGZpbmRHcmFtbWF0aWNh
bEVycm9ycyhjbGllbnQsIHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdy
YW1tYXRpY2FsRXJyb3JzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oCmluZGV4IDNmMzllODY4ZDk5NDFlNWI4ODFiMDYxNmRkZmMxNmIzNDAx
NTExZDQuLjM0NmQ1YTgxOTJlYmRjYjc2M2IwYTVlMDY1ZjgxMTg4Y2YwYTg5ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaApAQCAtMzYsMzQgKzM2LDI4
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdl
PiYmIGNoZWNraW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgZXhwbGljaXQg
VGV4dENoZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFu
Z2U+JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFw
aFJhbmdlKTsKIAotICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwotICAgIFJlZjxSYW5nZT4g
c3VicmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsK
LSAgICBFeGNlcHRpb25PcjxpbnQ+IG9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7Cisg
ICAgQ2hhcmFjdGVyQ291bnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsKKyAgICBSZWY8UmFuZ2U+IHN1
YnJhbmdlKENoYXJhY3RlclJhbmdlKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxDaGFyYWN0ZXJD
b3VudD4gb2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICB2b2lkIGV4cGFuZFJh
bmdlVG9OZXh0RW5kKCk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0
byByZXR1cm4gYSBTdHJpbmdWaWV3LgotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0Owot
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGFuZCBqdXN0IGhhdmluZyB0
aGUgY2FsbGVyIHVzZSB0ZXh0KCkgZGlyZWN0bHkuCi0gICAgaW50IHRleHRMZW5ndGgoKSBjb25z
dCB7IHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KLSAgICBTdHJpbmcgdGV4dFN1YnN0cmluZyh1
bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdCB7IHJldHVybiB0ZXh0
KCkuc3Vic3RyaW5nKHBvcywgbGVuKTsgfQotICAgIFVDaGFyIHRleHRDaGFyQXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiB0ZXh0KClbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KV07IH0K
KyAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwogCi0gICAgaW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdFbmQo
KSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcgY2hl
Y2tpbmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNraW5nU3Rh
cnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ1N0
YXJ0KCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgY2hlY2tpbmdFbmQoKSBjb25zdDsKKyAg
ICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcg
Y2hlY2tpbmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3RyaW5nKGNoZWNr
aW5nU3RhcnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KIAogICAgIC8vIERldGVybWluZXMgdGhl
IHJhbmdlIGluIHdoaWNoIHdlIGFsbG93IGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBh
biBhdXRvbWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgbm90IHBhc3NlZCB0byB0aGUKICAgICAv
LyB0ZXh0IGNoZWNraW5nIHBhcmFncmFwaCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hl
Y2tpbmcgcmFuZ2UuCi0gICAgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsK
LSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKKyAgICBDaGFyYWN0
ZXJDb3VudCBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3Q7CisgICAgQ2hhcmFjdGVy
Q291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKIAotICAgIGJvb2wgY2hl
Y2tpbmdSYW5nZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVy
biBsb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNoZWNraW5nTGVuZ3Ro
KCk7IH0KLSAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQgbG9jYXRpb24sIGlu
dCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiBs
b2NhdGlvbiArIGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9
Ci0gICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkg
Y29uc3QgeyByZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxvY2F0aW9uICsgbGVu
Z3RoID4gY2hlY2tpbmdTdGFydCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhD
aGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPT0gY2hl
Y2tpbmdTdGFydCgpICYmIHJhbmdlLmxlbmd0aCA9PSBjaGVja2luZ0xlbmd0aCgpOyB9CisgICAg
Ym9vbCBpc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0
IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgp
OyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBj
b25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgcmFuZ2UubG9j
YXRpb24gKyByYW5nZS5sZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KICAgICBSYW5nZSYgcGFy
YWdyYXBoUmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTc1LDExICs2OSwxMCBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwogICAgIG11
dGFibGUgUmVmUHRyPFJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV90ZXh0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNraW5nU3RhcnQ7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdFbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxpbnQ+IG1fY2hlY2tpbmdMZW5ndGg7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fYXV0
b21hdGljUmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNv
dW50PiBtX2NoZWNraW5nU3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3Vu
dD4gbV9jaGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50
PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFy
YWN0ZXJDb3VudD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKIH07CiAKIGNsYXNzIFRl
eHRDaGVja2luZ0hlbHBlciB7CkBAIC04OCwxMSArODEsMTEgQEAgcHVibGljOgogICAgIFRleHRD
aGVja2luZ0hlbHBlcihFZGl0b3JDbGllbnQmLCBSYW5nZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdI
ZWxwZXIoKTsKIAotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlz
c3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVs
bGluZ1JhbmdlKTsKLSAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3Vu
ZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CisgICAgU3RyaW5nIGZp
bmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0
LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Cisg
ICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFt
bWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RGb3VuZE9m
ZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CiAgICAgdm9pZCBtYXJrQWxs
TWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAjaWYg
VVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0
LCBib29sIG1hcmtBbGwpIGNvbnN0OworICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdy
YW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFy
UGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogICAgIHZvaWQgbWFya0FsbEJhZEdy
YW1tYXIoKTsKICAgICBib29sIGlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0OwogI2VuZGlmCkBAIC0x
MDQsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKCkgY29uc3Q7CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgaW50IGZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50IGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1h
cmtBbGwpIGNvbnN0OworICAgIGludCBmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3Rv
cjxHcmFtbWFyRGV0YWlsPiYsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biwgQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwg
Ym9vbCBtYXJrQWxsKSBjb25zdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCmluZGV4IGJhMWI3MjBhZWYwMzQ4YmZhOWZlZGQ3ZDNkNjY3MDI4NDA0
MDY3YjUuLjFhY2E3NzNlNDE0NWVhNjU0MmIyYWQ5MjRkNTUxYjE0OTc1N2UyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIzNTEsMTIgKzIzNTEsNiBAQCBD
aGFyYWN0ZXJDb3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRl
eHRJdGVyYXRvckJlaGF2aW9yIGJlaAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLVJlZjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0
ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCkKLXsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBl
bnRpcmVSYW5nZUl0ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3Vi
cmFuZ2UoZW50aXJlUmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBj
aGFyYWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLX0KLQogc3RhdGljIGlubGluZSBib29s
IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiB7CiAgICAg
QVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKQEAgLTIzNjUsODUgKzIzNTksNjAgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0
b3IpCiAgICAgcmV0dXJuIG5vZGUgJiYgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChub2RlLT5y
ZW5kZXJlcigpKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwg
aW50IHJhbmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK0JvdW5kYXJ5
UG9pbnQgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwg
Q2hhcmFjdGVyQ291bnQgbG9jYXRpb24sIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQog
ewotICAgIFJlZjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVS
YW5nZSgpOwotCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5k
ID0gcmFuZ2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5k
ID0gZmFsc2U7Ci0KLSAgICBSZWY8UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50
cygqc2NvcGUpOworICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIHsgbG9j
YXRpb24sIDAgfSwgYmVoYXZpb3IpLnN0YXJ0OworfQogCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRl
eHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IpOwotICAgIAotICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRu
J3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxl
bmd0aCAmJiBpdC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0
UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0
RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHRSYW5nZTsKLSAgICB9CitTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgYmVoYXZpb3IpCit7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IFNpbXBsZVJhbmdl
IHsgcmFuZ2UubG9jYXRpb24gPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCwgKHJhbmdlLmxvY2F0
aW9uIHx8IHJhbmdlLmxlbmd0aCkgPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCB9OworICAgIGF1
dG8gcmFuZ2VFbmQgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICBDaGFyYWN0
ZXJDb3VudCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUsIGJl
aGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0g
aXQucmFuZ2UoKTsKIAotICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Ci0g
ICAgICAgIGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIHRleHRSdW5S
YW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgpKTsKKyAgICAgICAgYXV0byBmb3VuZCA9
IFsmXSAoQ2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IGJvb2wgeworICAgICAgICAg
ICAgcmV0dXJuIHRhcmdldExvY2F0aW9uID49IGxvY2F0aW9uICYmIHRhcmdldExvY2F0aW9uIDw9
IGxvY2F0aW9uICsgbGVuZ3RoOworICAgICAgICB9OwogCi0gICAgICAgIGJvb2wgZm91bmRTdGFy
dCA9IHJhbmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRpb24gPD0g
ZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOwotICAgICAgICBib29sIGZvdW5kRW5kID0gcmFuZ2VF
bmQgPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlRW5kIDw9IGRvY1RleHRQb3NpdGlvbiArIGxl
bmd0aDsKKyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOwor
ICAgICAgICBib29sIGZvdW5kRW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChm
b3VuZEVuZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZv
ciB0aGUgZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0g
ICAgICAgICAgICAvLyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVy
ZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVu
ZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xu
J3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBl
bGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMg
d2l0aCBUZXh0SXRlcmF0b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9u
YWxseSB0byBoZWxwIHVzIGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAg
ICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5z
aWRlUmVwbGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0
UnVuUmFuZ2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24g
cnVuU3RhcnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAg
ICAgICAgUG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCku
ZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51
bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5F
bmQuY29udGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAg
IHRleHRSdW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2lu
dChWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5n
ZS5zdGFydCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAg
ICBzdGFydFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+
c3RhcnRDb250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBy
ZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZz
ZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4
dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Cisg
ICAgICAgIGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9u
KSAtPiBCb3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFu
Z2Uuc3RhcnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2Nh
dGlvbiAtIGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250
YWluZXIuZ2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQg
PSB0ZXh0UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNv
cHlSZWYoKSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6
IHRleHRSdW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQp
CisgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9u
KTsKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBv
ZmZzZXQgPSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1
bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsg
dGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5k
Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3Vs
dFJhbmdlLmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9j
YXRpb24gKz0gbGVuZ3RoOwogICAgIH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJh
bmdlRW5kID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0g
ICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwg
dGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0UmFu
Z2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDA5MTRmN2Jj
YTYxNTA5ZmI1YzNkZWVhYzlkMzhjZTRkNGMzODk2NGIuLmY0ZTQwOGEyMWE1NTZhNThiODQyMzhi
OGUzMmMxMDFhNzM2ZmQ1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJh
bmdlLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTEwMyw5ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIpIGNvbnN0IHsgY29weWFibGVUZXh0KCkuYXBwZW5kVG9TdHJpbmdCdWlsZGVyKGJ1
aWxkZXIpOyB9CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hh
cmFjdGVyUmFuZ2UsIGFuZCBDaGFyYWN0ZXJDb3VudCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFz
cyB0byB0aGUgdG9wIGxldmVsIChib3R0b20gb2YgdGhpcyBmaWxlKS4KLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250
YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9v
bCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIGdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBj
b25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2Us
IGludCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0KCk7CkBAIC0yODksMTMgKzI4OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2RpZExvb2tBaGVhZCB7IHRydWUgfTsKIH07CiAKLXVzaW5nIENoYXJhY3RlckNvdW50ID0gc3Rk
OjpzaXplX3Q7Ci0KLXN0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7Ci0gICAgQ2hhcmFjdGVyQ291bnQg
bG9jYXRpb24geyAwIH07Ci0gICAgQ2hhcmFjdGVyQ291bnQgbGVuZ3RoIHsgMCB9OwotfTsKIAog
V0VCQ09SRV9FWFBPUlQgQ2hhcmFjdGVyQ291bnQgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxl
UmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlv
cik7CitXRUJDT1JFX0VYUE9SVCBCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlv
bihjb25zdCBTaW1wbGVSYW5nZSYsIENoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JCZWhhdmlv
ciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVS
YW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJS
YW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMmI5MzE3YjE3MTNmMjYwYTJkYWYzOGM1YjFmYmE0
ZTA4NGFiN2NhNi4uZTJmOGY1N2IzOTU1MTc3YmNkZWY3M2FhNDJiNzM3OGM4YWM5MzAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtOTcs
NyArOTcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0
UG9zaXRpb25XaXRoUmFuZ2UoVmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIENGUmFuZ2UgcmVzdWx0
UmFuZ2VJbkNvbnRleHQgPSBERFJlc3VsdEdldFJhbmdlKHJlc3VsdCk7CiAgICAgICAgIGlmICho
aXRMb2NhdGlvbiA+PSByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiAmJiAoaGl0TG9jYXRp
b24gLSByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbikgPCByZXN1bHRSYW5nZUluQ29udGV4
dC5sZW5ndGgpIHsKICAgICAgICAgICAgIG1haW5SZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAg
ICBtYWluUmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5n
dGgpOworICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCAqbWFrZUNoYXJhY3RlclJhbmdlKHJlc3Vs
dFJhbmdlSW5Db250ZXh0KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MDgsOSArNTA4LDEyIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRl
bnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiBmcmFnbWVudFJhbmdlczsKICAgICAgICAgUmVmUHRyPFJhbmdl
PiBjdXJyZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2UoKSk7CiAgICAg
ICAgIENGSW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uuc3RhcnQucXVlcnlJbmRleDsK
LSAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkK
LSAgICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0SXRlcmF0b3I6OnN1YnJhbmdl
KCpjdXJyZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVyeVJhbmdlLmVuZC5v
ZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOwotICAgICAgICBlbHNlIHsKKyAgICAg
ICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgeworICAg
ICAgICAgICAgQ2hhcmFjdGVyUmFuZ2UgZnJhZ21lbnRSYW5nZTsKKyAgICAgICAgICAgIGZyYWdt
ZW50UmFuZ2UubG9jYXRpb24gPSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAgICAgICAgICAg
IGZyYWdtZW50UmFuZ2UubGVuZ3RoID0gcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5n
ZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3JlYXRl
TGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY3VycmVudFJhbmdlLCBmcmFnbWVudFJh
bmdlKSkpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFxdWVyeVJhbmdlLnN0
YXJ0Lm9mZnNldCkKICAgICAgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3VycmVu
dFJhbmdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkNjQ4ZmQ3MGZjMzhmYzkyYzI0ZTUxNzg5
MDQ3Y2VmNjI2M2ZhNTA5Li42YmM1YmUxZmU3NGUwNTFhM2E2Y2IwYmM2MWZmMjg4YTRlMTI2OWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29r
dXAubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCkBAIC0yODcsMTAgKzI4Nyw5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0
aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvCiAKICAgICBS
ZWZQdHI8UmFuZ2U+IGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFy
dCwgcGFyYWdyYXBoRW5kKTsKICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxs
Q2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9w
dE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0
ZWRSYW5nZTpyYW5nZVRvUGFzc10pOwotICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVt
LmdldCgpLmhpZ2hsaWdodFJhbmdlOworICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBhZG9w
dE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0
ZWRSYW5nZTpyYW5nZVRvUGFzc10pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCi0gICAgcmV0dXJu
IHsgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRS
YW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJu
IHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJh
bmdlLCAqbWFrZUNoYXJhY3RlclJhbmdlKGhpZ2hsaWdodFJhbmdlKSkpLCBuaWwgfTsKIAogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTM1OCwxMyArMzU3LDEyIEBAIHN0ZDo6
dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlQXRIaXRUZXN0UmVzdWx0CiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2Vs
ZWN0aW9uQ2xhc3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6
QFtbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNl
bGVjdGlvbjpuaWxdOwogCiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1bGxD
aGFyYWN0ZXJSYW5nZSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2Fs
bG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdl
OnNlbGVjdGVkUmFuZ2VdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQo
KS5oaWdobGlnaHRSYW5nZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gbWFrZUNoYXJhY3Rl
clJhbmdlKGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0
cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRSYW5nZSk7
CiAKLSAgICBpZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGln
aGxpZ2h0UmFuZ2UubGVuZ3RoKQorICAgIGlmICghaGlnaGxpZ2h0UmFuZ2UgfHwgIWhpZ2hsaWdo
dFJhbmdlLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAgIAot
ICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwg
aGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9Owor
ICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxD
aGFyYWN0ZXJSYW5nZSwgKmhpZ2hsaWdodFJhbmdlKSksIG5pbCB9OwogICAgIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCmluZGV4IGEyYjgxODI4NzdiMjhhZjI5Yzhh
MDYzOTU0ZDM3NGNkNWFhNWE1ZGEuLmQzY2YwNmM5M2QxOWQ4NWVlNTE0NWQwMmExMmQ1MmI4M2Jj
N2EwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNv
bW1hbmRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNv
bW1hbmRJT1MuY3BwCkBAIC03MiwxMSArNzIsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6
OmRvQXBwbHkoKQogICAgIGlmIChlbmRPZmZzZXQgPCByZXN1bHRMZW5ndGgpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHJvb3QsIGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0
KTsKLSAgICBpZiAoIXJlc3VsdFJhbmdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBtX21l
dGFkYXRhKTsKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIHsgZW5kT2Zmc2V0IC0gcmVzdWx0
TGVuZ3RoLCBlbmRPZmZzZXQgfSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0
aW9uUmVzdWx0TWFya2VyKHJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXggNTEzNWI5MDZkZWUxOGUwMTc3OWVjNjExNDc0MzFj
Nzk1ZTM4YTU4ZS4uNjVkNWRkNTYyZTkzNzBjZWJmY2U1M2MzMjI1ZTI3MzVjNTViNWYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVn
YWN5Lm1tCkBAIC0xNDIsMTQgKzE0MiwxNCBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5T
RGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogCiAg
ICAgTlNSYW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgKmZ1
bGxDaGFyYWN0ZXJTdGFydCwgKnBvc2l0aW9uQm91bmRhcnkgfSksIDApOwogICAgIE5TRGljdGlv
bmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAgICBOU1JhbmdlIGV4dHJhY3RlZFJhbmdlID0gdG9rZW5S
YW5nZShwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZv
cHRpb25zKTsKKyAgICBhdXRvIGV4dHJhY3RlZFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKHRv
a2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNz
LCAmb3B0aW9ucykpOwogCiAgICAgLy8gdG9rZW5SYW5nZSBzb21ldGltZXMgcmV0dXJucyB7TlNO
b3RGb3VuZCwgMH0gaWYgaXQgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSBnb29kIHN0cmluZy4K
ICAgICAvLyBGSVhNRSAoMTU5MDYzKTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgZm9yIHpl
cm8gbGVuZ3RoIGhlcmUuCi0gICAgaWYgKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90
Rm91bmQgfHwgIWV4dHJhY3RlZFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWV4dHJhY3RlZFJhbmdl
IHx8ICFleHRyYWN0ZWRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBu
aWwgfTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCks
IG9wdGlvbnMgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICpleHRyYWN0ZWRSYW5nZSkpLCBvcHRpb25zIH07
CiB9CiAKIHN0YXRpYyB2b2lkIGV4cGFuZFNlbGVjdGlvbkJ5Q2hhcmFjdGVycyhQREZTZWxlY3Rp
b24gKnNlbGVjdGlvbiwgTlNJbnRlZ2VyIG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBOU0lu
dGVnZXImIGNoYXJhY3RlcnNBZGRlZEJlZm9yZVN0YXJ0LCBOU0ludGVnZXImIGNoYXJhY3RlcnNB
ZGRlZEFmdGVyRW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMTIxMDk5NmEzZTEwMDhmMzlkMmQ2
ZWY0MzE1NjhmOGQzNzY3ZmQ5Zi4uYmJmYTAwZDY3YmUwZmUyNzcyODgzMTY4YzEyMDUzODU3YmVh
MmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04MDMsOCArODAzLDcgQEAgdW5zaWduZWQgUGFn
ZTo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0
aW9ucywgdW5zaWcKIAogc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAgICBSZWZQdHI8
Q29udGFpbmVyTm9kZT4gcm9vdDsKLSAgICBzaXplX3QgbG9jYXRpb24geyBub3RGb3VuZCB9Owot
ICAgIHNpemVfdCBsZW5ndGggeyAwIH07CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiB9Owog
CiBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5k
UmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQp
CkBAIC04MTYsMTAgKzgxNSwxMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBh
Z2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmFuZ2VzIGFyZSBz
b3J0ZWQgYnkgdGhlaXIgZW5kIG9mZnNldHMsIHBlciBlZGl0aW5nIGNvbnRhaW5lci4KLSAgICAg
ICAgYXV0byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3Ro
OworICAgICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UucmFuZ2UubG9jYXRpb24g
KyByYW5nZS5yYW5nZS5sZW5ndGg7CiAgICAgICAgIGF1dG8gaW5zZXJ0aW9uSW5kZXggPSByYW5n
ZUxpc3Quc2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZUxpc3QucmJl
Z2luKCk7IGl0ZXJhdG9yICE9IHJhbmdlTGlzdC5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAg
ICAgICAgIGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+bG9j
YXRpb24gKyBpdGVyYXRvci0+bGVuZ3RoOworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZv
cmVJbnNlcnRpb25JbmRleCA9IGl0ZXJhdG9yLT5yYW5nZS5sb2NhdGlvbiArIGl0ZXJhdG9yLT5y
YW5nZS5sZW5ndGg7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0Rm9yUmFuZ2UgPj0gZW5kT2Zm
c2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpbnNlcnRpb25JbmRleC0tOwpAQCAtODYyLDExICs4NjEsMTEgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFu
Z2U+JiByYW5nZXMKICAgICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMg
d2hlbiByZXBsYWNpbmcgdGV4dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMg
ZG9uJ3QgY2xvYmJlciByZXBsYWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8m
IHJhbmdlcyA9IHJhbmdlc0J5Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwog
ICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9
IHJhbmdlcy5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwg
aXRlcmF0b3ItPmxvY2F0aW9uLCBpdGVyYXRvci0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICgh
cmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgICAgICAgICAgYXV0byByYW5nZSA9IHJl
c29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmNvbnRh
aW5lciksIGl0ZXJhdG9yLT5yYW5nZSk7CisgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2Vk
KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBE
T1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2Vt
ZW50VGV4dCwgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVw
bGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAg
IH0KQEAgLTg5OCw3ICs4OTcsNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRl
eHQoY29uc3QgVmVjdG9yPFJlZjxSYW5nZT4+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAgICAgIGlm
IChyZXBsYWNlbWVudExvY2F0aW9uID09IG5vdEZvdW5kIHx8ICFyZXBsYWNlbWVudExlbmd0aCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVu
ZCh7IFdURk1vdmUoaGlnaGVzdFJvb3QpLCByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVu
dExlbmd0aCB9KTsKKyAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZSho
aWdoZXN0Um9vdCksIHsgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSB9
KTsKICAgICB9CiAKICAgICByZXBsYWNlUmFuZ2VzKCp0aGlzLCByZXBsYWNlbWVudFJhbmdlcywg
cmVwbGFjZW1lbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oCmluZGV4IGQwZDAwYzZiZDU3MzI3NzNjMGEzN2U4YmI1MzY1N2ViMzQ3N2RlYjMuLmQy
NDVjY2Q5ZWM5MTIwMmVjM2QwZjQ5ZWQ1NTRjMzA1MGVlOTdjZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMTAgKzMxLDkgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02Mywx
NiArNjIsMTQgQEAgZW51bSBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB7CiB9OwogCiBzdHJ1Y3Qg
R3JhbW1hckRldGFpbCB7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAg
Q2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBT
dHJpbmcgdXNlckRlc2NyaXB0aW9uOwogfTsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7
CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQg
bGVuZ3RoOworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxHcmFtbWFyRGV0
YWlsPiBkZXRhaWxzOwogICAgIFN0cmluZyByZXBsYWNlbWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWYyN2I5OWYzODdjMTI4YWZmYjQzNjlhYjRlYzNhOWMw
YmZmYzI5OC4uMTM0ZWEzMWZjZThmOTg4OTExMmNjMTRjMDdmZDE3NGRiZTViY2U1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA0NCw5ICsyMDQ0LDkgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjppbnZhbGlkYXRlQ29udHJvbFRpbnRzKCkKICAgICByZXR1
cm4geyB9OwogfQogCi1SZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5n
dGgpCitSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
RWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVu
Z3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKCZzY29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhzY29wZSksIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGggfSkpOwogfQogCiB1
bnNpZ25lZCBJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25z
dCBSYW5nZSYgcmFuZ2UpCkBAIC0yMDc1LDkgKzIwNzUsOSBAQCBTdHJpbmcgSW50ZXJuYWxzOjpy
YW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkK
ICAgICByZXR1cm4gcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5n
KHJhbmdlKTsKIH0KIAotUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5n
ZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZjxSYW5nZT4gSW50ZXJu
YWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2ln
bmVkIHJhbmdlTGVuZ3RoKQogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJh
bmdlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocmFuZ2UsIHsgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VM
ZW5ndGggfSkpOwogfQogCiBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VPZlN0cmluZ05l
YXJMb2NhdGlvbihjb25zdCBSYW5nZSYgc2VhcmNoUmFuZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCwg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0KQpAQCAtMjQzMiw4ICsyNDMyLDcgQEAgdm9pZCBJbnRlcm5h
bHM6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNp
Z25lZCBsb2NhdGkKIAogICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpOb25lOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IGxv
Y2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0g
eyBsb2NhdGlvbiwgbGVuZ3RoIH07CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gY2FuZGlkYXRl
OwogICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5oYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZTIzNTIzNDFkYjhjMTVkNDI5ZjljZWZkMjg5ZGY1MjI3MGU1YWM3Yy4uY2Y3OWU1MGM3Yjg0NzNm
NmZlMjUyZjhjYzc2ODU5YzZmOTE1NzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC0yOTUsMTIgKzI5NSwxMiBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBp
bnZhbGlkYXRlQ29udHJvbFRpbnRzKCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJh
bmdlTGVuZ3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxl
bmd0aCk7CiAgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNv
bnN0IFJhbmdlJik7CiAgICAgdW5zaWduZWQgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3Bl
LCBjb25zdCBSYW5nZSYpOwogICAgIFN0cmluZyByYW5nZUFzVGV4dChjb25zdCBSYW5nZSYpOwog
ICAgIFN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJh
bmdlJik7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIGludCByYW5nZUxvY2F0aW9u
LCBpbnQgcmFuZ2VMZW5ndGgpOworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCB1bnNp
Z25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmUHRyPFJhbmdlPj4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQg
eCwgaW50IHkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihj
b25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IDE2MmZhZjQ5NDZlYWFkZDk4MGU1Nzg5YTE4YmJkZWM1NTgz
ZjYzMjMuLjM3NTc5MDc3MDRmOTMxM2U2ODQxNGMwMDU1OTE3NDFlNDZhMjVkY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMyNSwxMiArMzI1LDEyIEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNjcm9sbEVs
ZW1lbnRUb1JlY3QoRWxlbWVudCBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25n
IGgpOwogCi0gICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2Nv
cGUsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2U/IHJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIHVuc2lnbmVkIGxvbmcgcmFu
Z2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgdW5z
aWduZWQgbG9uZyBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwog
ICAgIERPTVN0cmluZyByYW5nZUFzVGV4dChSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJh
bmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoUmFuZ2UgcmFuZ2UpOwotICAgIFJh
bmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VM
ZW5ndGgpOworICAgIFJhbmdlIHN1YnJhbmdlKFJhbmdlIHJhbmdlLCB1bnNpZ25lZCBsb25nIHJh
bmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gUmFuZ2U/IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24obG9uZyB4
LCBsb25nIHkpOwogICAgIFJhbmdlPyByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKFJhbmdlIHJh
bmdlLCBET01TdHJpbmcgdGV4dCwgbG9uZyB0YXJnZXRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmNwcAppbmRleCBiODk5MzNmZmExYmYyODQzYzI2ZmRiZDY2ZDI5MjZl
ZDAwYzVmNmExLi43NmVmNDcyMmQ3NTFjZjZlNTlhYWI5ZWRmYWI2NjU2ZTcwNGYxNmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTMzLDQyICszMywzMiBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6
OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdl
LCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQorUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUm
IGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIGJhc2UpCiB7Ci0gICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5k
KTsKKyAgICBBU1NFUlQoZWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKTsKKyAgICBX
ZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZSByYW5nZSB7IGVkaXRpbmdSYW5nZS5sb2NhdGlvbiwgZWRp
dGluZ1JhbmdlLmxlbmd0aCB9OwogCi0gICAgLy8gU2FuaXRpemUgdGhlIGlucHV0LCBiZWNhdXNl
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGFrZXMgc2lnbmVkIGlu
dGVnZXJzLgotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGludCBsZW5ndGg7Ci0gICAgaWYgKHJhbmdlLmxlbmd0aCA8PSBJTlRf
TUFYICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoIDw9IElOVF9NQVgpCi0gICAgICAg
IGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4ocmFuZ2UubGVuZ3RoKTsKLSAgICBlbHNlCi0gICAg
ICAgIGxlbmd0aCA9IElOVF9NQVggLSByYW5nZS5sb2NhdGlvbjsKLQotICAgIGlmIChlZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJv
b3QpIHsKKyAgICBpZiAoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxl
Um9vdCkgewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMg
Y29kZSBwYXRoIGlzIGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAgICAgLy8gY29u
Y2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbi4KICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5kIHRleHRh
cmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgICAgIC8vIGRpcmVjdGx5IGluIHRo
ZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1
dGlvbiBpcwogICAgICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0
aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAgICAgIC8vIFRo
YXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
ZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCks
IHN0YXRpY19jYXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOworICAgICAgICBhdXRv
KiBlbGVtZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1l
bnRFbGVtZW50KCk7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCByYW5nZSkpOwog
ICAgIH0KIAotICAgIEFTU0VSVChlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPT0gRWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwotCi0gICAgYXV0byYgc2VsZWN0aW9uID0gZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgaWYgKCFzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGJhc2UgPT0g
RWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwogCi0gICAgYXV0byBwYXJhZ3Jh
cGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnZp
c2libGVTdGFydCgpKSk7CisgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBv
aW50KHN0YXJ0T2ZQYXJhZ3JhcGgoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRy
ZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBX
ZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0
IH0pOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIHJhbmdlLmxvY2F0aW9u
LCBsZW5ndGgpOworICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSku
ZW5kOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCBy
YW5nZSkpOwogfQogCiBFZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29y
ZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRpbmdSYW5nZS5oCmluZGV4IDk0NzM4YjdmODhlOWUwNThkYTJlZDI1NGExNjA0NGViYzZiOTMw
NjkuLmUwNDNmOTcyNDBlNDI1ZWNkMjVhNDI3ZWRkOTI3YWNiNzQ1ZTM2MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRpbmdSYW5nZS5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAorLy8g
RklYTUU6IFJlcGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVj
dCBFZGl0aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24o
bm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBiMzA3YWEyNTg5ZWY4MTQwZWFmNzU5MDQxOGViZTgxYWJjMWE5MTgwLi5mYWI0
ODRkZWFhMTgyYjQ2YjVkZjNiYTlkNGFhNmQzY2JkMGNjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8vIEZJWE1F
OiBTZWVtcyBsaWtlIHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRoZSBjb2Rl
IGJlbG93IGEgbG90IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENhY2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENh
Y2hlUXVlcnlPcHRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENoYXJhY3Rl
clJhbmdlJiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
YW5nZS5sb2NhdGlvbik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFu
Z2UubGVuZ3RoKTsKK30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8
Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDx1aW50NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAo
IWxvY2F0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKmxvY2F0
aW9uLCAqbGVuZ3RoIH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsK
QEAgLTIwNTMsMjIgKzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAogdm9pZCBB
cmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgR3JhbW1hckRldGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxvY2F0
aW9uOwotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGRldGFp
bC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29kZXIgPDwg
ZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJn
dW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAg
IGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRp
b25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0
aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiBy
YW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIwOTgsNyBA
QCBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpsb2NhdGlv
biksIFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVz
Y3JpcHRpb24pIH19OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwg
V1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBU
ZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBUZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVz
dWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYg
cmVzdWx0KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0gICAgZW5j
b2RlciA8PCByZXN1bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVuZ3RoOwor
ICAgIGVuY29kZXIgPDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LmRldGFp
bHM7CiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5LDE0ICsy
MTQ1LDkgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlv
bmFsPGludD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxv
Y2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50
PiBsZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAg
T3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2MCw3IEBA
IE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIFdURk1v
dmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1v
dmUoKnJlcGxhY2VtZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92
ZSgqZGV0YWlscyksIFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQgQXJndW1l
bnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBV
c2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0
YTIxNmU4NGYwMTcuLjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2MjdkMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjks
NiArNjksNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKwogY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYsNiArMTE3
LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsK
IAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3Ry
dWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwog
c3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IFZl
bG9jaXR5RGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CiAgICAgCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJl
Y3RFZGdlczxmbG9hdD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsyMTgsMTEg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q2hhcmFjdGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdl
YkNvcmU6OkNoYXJhY3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDBmZDJlNTYyODk1YjMxNjNl
ZjZlNzk2YjgzZGEwZmU1NjI0MThjMWUuLjI5YmQxOGY3ZGEzMjIwZjE5MTZjMWE3NjY4YjVhM2Rl
YTRjMTQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCkBAIC0zMzY2LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkKIAogc3Rh
dGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAg
IE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hl
Y2tpbmdUeXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5n
ZSk7CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3Jh
bW1hckRldGFpbC5jcHAKaW5kZXggNmVlNDQxYjExYTIzOTA1ZTMzYzM5ZDhhOWUwMGQzOTdmOTZm
NTJiMS4uMDZkNWNlY2M0ZTg1MGE1MmI0Yzc5NGNlMjE2MDU2NTQwZjk1MGVmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTQ0LDggKzQ0LDgg
QEAgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBncmEKIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1h
ckRldGFpbChpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNv
bnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIG1fZ3JhbW1hckRldGFpbC5sb2Nh
dGlvbiA9IGxvY2F0aW9uOwotICAgIG1fZ3JhbW1hckRldGFpbC5sZW5ndGggPSBsZW5ndGg7Cisg
ICAgbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgbV9ncmFt
bWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKIAogICAgIHNpemVfdCBudW1HdWVzc2Vz
ID0gZ3Vlc3Nlcy0+c2l6ZSgpOwogICAgIG1fZ3JhbW1hckRldGFpbC5ndWVzc2VzLnJlc2VydmVD
YXBhY2l0eShudW1HdWVzc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdyYW1tYXJEZXRhaWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJE
ZXRhaWwuaAppbmRleCBjOWI3NTUzY2Q3YjA4ZWVhYzdkODIzMzhiMTEwZjRhZWRkOWVmNmFjLi4z
OTBiNGE1ZjdiOWVhYzYzMWZkNzMyNDE2NTdlMjIxZGE1YzE5NWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGlu
dCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0
aW9uKTsKICAgICBzdGF0aWMgUmVmPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFtbWFyRGV0YWlsJik7CiAKLSAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2dyYW1tYXJEZXRhaWwubG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxlbmd0aDsgfQorICAgIGludCBsb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbjsgfQorICAgIGludCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoOyB9CiAgICAg
UmVmPEFQSTo6QXJyYXk+IGd1ZXNzZXMoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVzZXJE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRp
b247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVj
a2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5j
cHAKaW5kZXggNDEwOGZhZDZkMjY2NTdlYWRlOTA4NmMxNmNmZGYyMTgxMDdjY2IyNS4uMWRhOTBl
ZWM0ZGI3MGI1MTBhMTNlYWE3ZGUzZTUwNWJmZDVmNDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yNjksOCArMjY5LDggQEAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KFNwZWxsRG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgbWlzc3Bl
bGxpbmdSZXN1bHQ7CiAgICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQubG9jYXRpb24gPSBv
ZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5s
ZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKKyAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQucmFu
Z2UubG9jYXRpb24gPSBvZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICBtaXNz
cGVsbGluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAg
cGFyYWdyYXBoQ2hlY2tpbmdSZXN1bHQuYXBwZW5kKG1pc3NwZWxsaW5nUmVzdWx0KTsKICAgICAg
ICAgb2Zmc2V0ICs9IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aDsKICAg
ICAgICAgLy8gR2VuZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJh
dG9yLCBtb3ZlIHRvIHRoZSBhZGphY2VudCB3b3JkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1RleHRDaGVja2VySU9TLm1tCmluZGV4IDkyMDBlYjYwOGIzYTE1MWY3NmMwODY4ZGM0
ODgzMGFmZmRjNDcxZmUuLmY2MDhjOGRiNWM2MDY1MzBjYWE1OTZlZDZhYjVlOTVkNmNlZGU1OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KQEAg
LTIxMiw4ICsyMTIsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogCiAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG1pc3NwZWxsZWRSYW5n
ZS5sb2NhdGlvbjsKLSAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRSYW5nZS5sZW5n
dGg7CisgICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobWlzc3BlbGxl
ZFJhbmdlKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoV1RGTW92ZShyZXN1bHQpKTsKIAogICAg
ICAgICBvZmZzZXRTb0ZhciA9IG1pc3NwZWxsZWRSYW5nZS5sb2NhdGlvbiArIG1pc3NwZWxsZWRS
YW5nZS5sZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4
dENoZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJN
YWMubW0KaW5kZXggMGNhMTMzYTJhZGNlNDFhN2NmY2YzYTBkNDE0YWI0ZmZiODRlZTYzNC4uYWMz
YmVlMDBiMTY1OTNhY2Y0NTcxZWE5OWMxMTAxNmNjMTRmNDUyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtMzM0LDIyICszMzQsMjAgQEAg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J0aG9ncmFwaHk6TlVMTAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdvcmRDb3VudDpOVUxMXTsKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0
ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSBy
ZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNr
aW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAg
ICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVz
dWx0LnJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21p
bmdSZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAq
bWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jl
c3VsdCBncmFtbWFyRGV0YWlsc107CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppbmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGluY29taW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFt
bWFyRGV0YWlsIGRldGFpbDsKQEAgLTM1OCw4ICszNTYsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRh
ZyBzcAogICAgICAgICAgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5n
ZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNS
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24g
PSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGgg
PSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAq
bWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFp
bC51c2VyRGVzY3JpcHRpb24gPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1h
clVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtp
bmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAg
ICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC0zNzAsMzYgKzM2
NywzMSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkxpbmspKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbW2luY29taW5nUmVzdWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6UXVvdGUpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpR
dW90ZTsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlw
ZSA9PSBOU1RleHRDaGVja2luZ1R5cGVEYXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6RGFzaCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OlJlcGxhY2VtZW50OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAg
ICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmdd
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlm
IChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdl
OwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxh
Y2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAg
ICAgIH0KQEAgLTQ0MywxNyArNDM1LDIwIEBAIHZvaWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxs
aW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyCiAKIHZv
aWQgVGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhTcGVsbERv
Y3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmIGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBj
b3JyZWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbC5ndWVzc2VzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIE5TU3RyaW5nICpndWVzcyA9IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsK
LSAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CisgICAgYXV0byBjb3JyZWN0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAo
YXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcg
Kmd1ZXNzTlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpn
dWVzc05TU3RyaW5nXTsKICAgICB9CiAKLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5nZSA9IE5TTWFr
ZVJhbmdlKGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAg
ICBOU1N0cmluZyAqZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRhaWwudXNlckRl
c2NyaXB0aW9uOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGdyYW1tYXJEZXRhaWxEaWN0
ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3Jh
bW1hclVzZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9u
cy5nZXQoKSwgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF0pOworICAgIE5TU3RyaW5nICpkZXNj
cmlwdGlvbk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNE
aWN0aW9uYXJ5ICpkZXRhaWwgPSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVl
IHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBOU0dyYW1tYXJV
c2VyRGVzY3JpcHRpb24gOiBkZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBOU0dyYW1tYXJD
b3JyZWN0aW9ucyA6IGNvcnJlY3Rpb25zLmdldCgpLAorICAgIH07CiAKLSAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFy
U3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0LmdldCgpXTsK
KyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQ
YW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRldGFpbF07CiB9
CiAKIHZvaWQgVGV4dENoZWNrZXI6OmdldEd1ZXNzZXNGb3JXb3JkKFNwZWxsRG9jdW1lbnRUYWcg
c3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIGludDMyX3QgaW5zZXJ0aW9uUG9pbnQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzLCBib29s
IGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250
cm9sbGVyUHJveHkubW0KaW5kZXggZjE4Y2FhNzJjYmQ5NjUzMTc1NWU5MmVjZmIyMGVmNGRiOGNh
NTNhZi4uNzBhMzkwMzVkNThjODEyYzJjYjAxMzE5ZjVhMTZjNmZhNTlmNWQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtODcsNyArODcsNyBAQCBPcHRp
b25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveAogICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2Uocm9vdCwgcmFuZ2UuZ2V0KCksIHNlbGVjdGlvbkxvY2F0aW9uLCBzZWxlY3Rp
b25MZW5ndGgpOwogICAgIHNlbGVjdGlvbkxvY2F0aW9uICs9IG9mZnNldDsKIAotICAgIHJldHVy
biB7eyBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVj
dGlvbkxvY2F0aW9uLCBsZW5ndGgpLCBzZWxlY3Rpb25Mb2NhdGlvbiB9fTsKKyAgICByZXR1cm4g
e3sgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uLCBsZW5ndGgp
LCBzZWxlY3Rpb25Mb2NhdGlvbiB9fTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3Rh
dGVkU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50
NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFj
ZW1lbnRMZW5ndGgpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4K
IAogICAgICAgICAgICAgICAgIHNpemVfdCBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSA9IGxv
Y2F0aW9uSW5Sb290IC0gc2VsZWN0aW9uT2Zmc2V0OwogICAgICAgICAgICAgICAgIGlmIChyZXN0
b3JlU2VsZWN0aW9uICYmIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID4gbG9jYXRpb25JblJv
b3QgKyByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24gKyByZWxhdGl2ZVJlcGxhY2VtZW50TGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9SZXN0b3JlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBzZWxlY3Rpb25Mb2Nh
dGlvblRvUmVzdG9yZSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uVG9S
ZXN0b3JlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9S
ZXN0b3JlLCAwKTsKICAgICAgICAgICAgICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHNl
bGVjdGlvblRvUmVzdG9yZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojpy
ZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFuCiAgICAgfQogCiAg
ICAgW2Fubm90YXRlZFN0cmluZy5zdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW2Fubm90YXRlZFN0cmluZy5zdHJpbmcgbGVuZ3RoXSkgb3B0aW9uczowIHVz
aW5nQmxvY2s6XihOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nS2V5LCBpZD4gKmF0dHJz
LCBOU1JhbmdlIGF0dHJpYnV0ZVJhbmdlLCBCT09MICpzdG9wKSB7Ci0gICAgICAgIGF1dG8gYXR0
cmlidXRlQ29yZVJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChyb290LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxvY2F0aW9uLCBhdHRyaWJ1
dGVSYW5nZS5sZW5ndGgpOworICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShyb290LCBsb2NhdGlvbkluUm9vdCArIGF0dHJpYnV0ZVJhbmdlLmxv
Y2F0aW9uLCBhdHRyaWJ1dGVSYW5nZS5sZW5ndGgpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZUNv
cmVSYW5nZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk5LDcgKzE5OSw3IEBAIEF0dHJp
YnV0ZWRTdHJpbmcgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJp
bmdCZXR3ZWVuUG9zaXRpb25zCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIGF1dG8mIHRleHRDaGVja2luZ0RhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6UGxh
dGZvcm1UZXh0Q2hlY2tpbmdEYXRhPihtYXJrZXItPmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRv
IHN1YnJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjcmVhdGVMaXZlUmFuZ2UoY3VycmVu
dFRleHRSYW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRPZmZzZXQoKSAt
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9m
ZnNldCgpKTsKIAogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTG9jYXRpb247CiAgICAgICAg
ICAgICBzaXplX3Qgc3VicmFuZ2VMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQyYjNhMTRiNTlhNGU3ODg0MjdjZjkxNGI3YjIzMmRh
MTBjMjgwNWEuLjdhYjEwNmExYjkxZDY2M2QwNjY2Y2U1NmZkYTJkMDU0Y2M5NzNhYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01NDIwLDIw
ICs1NDIwLDIzIEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91bmRpbmcoaW50NjRfdCBvZmZz
ZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IHRh
cmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24g
PSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlv
bi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9
IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHN1cnJvdW5kaW5nUmFuZ2UgPSBt
YWtlUmFuZ2Uoc3RhcnRPZkVkaXRhYmxlQ29udGVudChzZWxlY3Rpb25TdGFydCksIHNlbGVjdGlv
blN0YXJ0KTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291
bnQoKnN1cnJvdW5kaW5nUmFuZ2UpOwotICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdS
YW5nZS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIGF1dG8g
c2VsZWN0aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KCZyb290Tm9kZSwgY3Vyc29yUG9zaXRpb24gKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLSAg
ICBpZiAoIXNlbGVjdGlvblJhbmdlKQorICAgIGlmICghc3Vycm91bmRpbmdSYW5nZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byYgcm9vdE5vZGUgPSBzdXJyb3VuZGluZ1JhbmdlLT5zdGFy
dENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisgICAgQ2hhcmFjdGVyUmFuZ2Ug
Y2hhcmFjdGVyUmFuZ2U7CisgICAgY2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBXZWJDb3JlOjpj
aGFyYWN0ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSkgKyBvZmZzZXQ7CisgICAgY2hhcmFjdGVy
UmFuZ2UubGVuZ3RoID0gY2hhcmFjdGVyQ291bnQ7CisgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMocm9v
dE5vZGUpLCBjaGFyYWN0ZXJSYW5nZSk7CisKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0
SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnNlbGVjdGlvblJhbmdlLCBTRUxfREVG
QVVMVF9BRkZJTklUWSkpOworICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVs
ZXRlKGZhbHNlKTsKICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9u
Q2hhbmdlcyhmYWxzZSk7CiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE4
N2RiZWY1NDcyMDcxNTE3NWNlNzI1NjRjNmE4ZjVhYWMxNDFjN2IuLmFjMzUzNTFiOWQzZDA4ZWYw
ZTY4Yzc5YzNiOWFlMDRjNzEyY2E1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MDY2LDggKzQwNjYsOCBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEs
IGludDY0X3QgbGVuZ3RoRGVsdAogICAgIHNpemVfdCBzZWxlY3Rpb25MZW5ndGg7CiAgICAgVGV4
dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQo
KSwgc2VsZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAKLSAgICBDaGVja2VkSW50
NjQgbmV3U2VsZWN0aW9uTG9jYXRpb24geyBzZWxlY3Rpb25Mb2NhdGlvbiB9OwotICAgIENoZWNr
ZWRJbnQ2NCBuZXdTZWxlY3Rpb25MZW5ndGggeyBzZWxlY3Rpb25MZW5ndGggfTsKKyAgICBDaGVj
a2VkPENoYXJhY3RlckNvdW50LCBSZWNvcmRPdmVyZmxvdz4gbmV3U2VsZWN0aW9uTG9jYXRpb24g
eyBzZWxlY3Rpb25Mb2NhdGlvbiB9OworICAgIENoZWNrZWQ8Q2hhcmFjdGVyQ291bnQsIFJlY29y
ZE92ZXJmbG93PiBuZXdTZWxlY3Rpb25MZW5ndGggeyBzZWxlY3Rpb25MZW5ndGggfTsKICAgICBu
ZXdTZWxlY3Rpb25Mb2NhdGlvbiArPSBsb2NhdGlvbkRlbHRhOwogICAgIG5ld1NlbGVjdGlvbkxl
bmd0aCArPSBsZW5ndGhEZWx0YTsKIApAQCAtNDA3Niw4ICs0MDc2LDEyIEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRf
dCBsZW5ndGhEZWx0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXV0byByYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbmV3U2Vs
ZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCksIG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQo
KSkpCi0gICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdl
dCgpLCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgQ2hhcmFjdGVyUmFuZ2UgbmV3U2VsZWN0aW9u
UmFuZ2U7CisgICAgbmV3U2VsZWN0aW9uUmFuZ2UubG9jYXRpb24gPSBuZXdTZWxlY3Rpb25Mb2Nh
dGlvbi51bnNhZmVHZXQoKTsKKyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sZW5ndGggPSBuZXdTZWxl
Y3Rpb25MZW5ndGgudW5zYWZlR2V0KCk7CisKKyAgICBhdXRvIHJlc29sdmVkUmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwg
bmV3U2VsZWN0aW9uUmFuZ2UpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlZFJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTQxOTIsMTYgKzQxOTYsMTUg
QEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVk
aXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHJvb3RDb250YWluZXJOb2RlID0gcm9vdE5vZGUtPmlzQ29udGFpbmVyTm9kZSgpID8gZG93bmNh
c3Q8Q29udGFpbmVyTm9kZT4ocm9vdE5vZGUuZ2V0KCkpIDogcm9vdE5vZGUtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShy
b290Q29udGFpbmVyTm9kZS5nZXQoKSwgcmFuZ2VPZkludGVyZXN0LmdldCgpLCByYW5nZU9mSW50
ZXJlc3RMb2NhdGlvbiwgcmFuZ2VPZkludGVyZXN0TGVuZ3RoKTsKIAotICAgICAgICBDaGVja2Vk
U2l6ZSBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKKyAgICAg
ICAgQ2hlY2tlZDxDaGFyYWN0ZXJDb3VudCwgUmVjb3JkT3ZlcmZsb3c+IG1pZHBvaW50TG9jYXRp
b24geyByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiB9OwogICAgICAgICBtaWRwb2ludExvY2F0aW9u
ICs9IHJhbmdlT2ZJbnRlcmVzdExlbmd0aCAvIDI7CiAgICAgICAgIGlmIChtaWRwb2ludExvY2F0
aW9uLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWlkcG9p
bnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdENv
bnRhaW5lck5vZGUuZ2V0KCksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0KCksIDApOworICAg
ICAgICBhdXRvIG1pZHBvaW50ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3RDb250
YWluZXJOb2RlKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNhZmVHZXQoKSkpOwogCi0gICAgICAgIGF1
dG8gbWlkcG9pbnQgPSBtaWRwb2ludFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIHN0
YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IHN0YXJ0T2ZXb3JkKG1pZHBvaW50KTsK
ICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA8IHJhbmdlT2ZJ
bnRlcmVzdFN0YXJ0KSB7CiAgICAgICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxl
Y3Rpb24gPSBlbmRPZldvcmQobWlkcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGNhNDc5
MzEwNTRiODAyNjI2ODczZTNmNTNmYjVlZTMwNTRlOTg1MTMuLjNiOTQ2MzA0ZGZiNzUyMTE0MTNl
OWY4ZDExMDdmNmY4NzY1OTlkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTg2NSwxMiArODY1
LDExIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKICAgICBOU0FycmF5ICppbmNvbWluZ1Jl
c3VsdHMgPSBbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gY2hlY2tTcGVsbGlu
Z09mU3RyaW5nOnN0cmluZy5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldOwog
ICAgIGZvciAoTlNWYWx1ZSAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0g
ICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VWYWx1ZV07
Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIHJl
c3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFu
Z2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5n
UmVzdWx0LnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQu
cmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUpOwog
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgIH0KIApAQCAtOTM5LDExICs5Mzgs
OSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmll
dyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogICAgICAgICBHcmFtbWFyRGV0YWlsIGdyYW1t
YXJEZXRhaWw7CiAgICAgICAgIE5TVmFsdWUgKmRldGFpbFJhbmdlQXNOU1ZhbHVlID0gW2RldGFp
bCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyUmFuZ2VdOwogICAgICAgICBBU1NFUlQoZGV0YWlsUmFu
Z2VBc05TVmFsdWUpOwotICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFu
Z2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sZW5n
dGggPiAwKTsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5s
ZW5ndGg7CisgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFs
dWUucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKKyAgICAgICAgZ3JhbW1hckRldGFpbC5yYW5nZSA9
ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZSk7CiAg
ICAgICAgIGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2RldGFpbCBvYmplY3RGb3JL
ZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9
IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgZm9y
IChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk1NywyMiArOTU0LDIwIEBAIHN0YXRp
YyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0
cywgT3B0aW9uU2V0PFRleHRDCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0
czsKIAogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGlu
Y29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5n
UmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBb
aW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5s
b2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0
aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0g
TlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGgg
PiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5j
b21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
ICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0g
ICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICBy
ZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJl
c3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5
cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsK
ICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJl
c3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkg
KmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5j
b21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAt
OTgxLDggKzk3Niw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5T
QXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgICAgICAgICAg
TlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVd
OwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90
Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDAp
OwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0
YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtp
bmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAg
ICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZv
cktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0cmlu
ZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk5MywzNiArOTg3LDMxIEBAIHN0YXRpYyBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9u
U2V0PFRleHRDCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2lu
Z1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6TGlu
aykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAg
ICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSBy
ZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdS
ZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdU
eXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90
ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAg
ICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAgICAgcmVz
dWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQu
bGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0g
cmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdS
ZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVz
dWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlw
ZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3Vs
dFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0
IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7
CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVSZXBs
YWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxh
Y2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAg
ICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVj
a2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3Jy
ZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTA0OSwxNiArMTAz
OCwxOCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1h
clBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBOU011
dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ldOwot
ICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBOU011dGFibGVBcnJh
eSAqY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAoYXV0byYg
Z3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcgKmd1ZXNz
TlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc05T
U3RyaW5nXTsKICAgICB9Ci0gICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShn
cmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7Ci0gICAgTlNTdHJp
bmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlv
bjsKLSAgICBOU0RpY3Rpb25hcnkqIGdyYW1tYXJEZXRhaWxEaWN0ID0gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1t
YXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1t
YXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmls
XTsKLSAgICAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRl
U3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdy
YW1tYXJEZXRhaWxEaWN0XTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiA6
IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDogY29y
cmVjdGlvbnMsCisgICAgfTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2Ug
ZGV0YWlsOmRpY3Rpb25hcnldOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQpA
QCAtMTE5NCw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0IGEKICAgICBpZiAoW3Zp
ZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgewogICAgICAgICB1bnNpZ25l
ZCByZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0
aCgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICBO
U1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5sb2Nh
dGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJh
bmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUucmFuZ2UubG9jYXRpb24sIHJlcGxh
Y2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ugc29mdFNwYWNlUmFuZ2UgPSBOU01h
a2VSYW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0gMSwgMSk7CiAgICAgICAgICAgICBp
ZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoIiAiKSkKICAgICAgICAg
ICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNl
UmFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggZWQ1ZWQyMDQwMjk1NTc4ZWJlOTllYjgwNzc0MmQ3ZTA2YjA0OWUzMC4uZGQ4N2FkNDlhMzVh
ODJlMzJkZjJiY2VjZjVkZTJmZTc1ZmI2ODQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MjEsMTAgKzgyMSw5IEBAIC0gKFJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKIAogLSAoUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSBy
YW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8K
IHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgYXV0byByYW5nZSA9
IFdlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFY
IHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAg
IG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CiAKICAgICBpZiAo
cmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkg
ewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBw
YXRoIGlzIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAtODM2LDcgKzgzNSw3
IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jhbmdl
KW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3Ro
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgKnJhbmdlKSk7CiAgICAg
fQogCiAgICAgQVNTRVJUKHJhbmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNSZWxhdGl2ZVRv
OjpQYXJhZ3JhcGgpOwpAQCAtODQ0LDEwICs4NDMsOSBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFu
Z2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRv
OgogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFy
YWdyYXBoKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2li
bGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50
cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0g
V2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFy
dCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBuc3JhbmdlLmxvY2F0
aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5y
b290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQpIH0s
ICpyYW5nZSkpOwogfQogCiAtIChET01SYW5nZSAqKV9jb252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6
KE5TUmFuZ2UpbnNyYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDVkZGYyM2VjZjNjYmE1YjliYzllYTlmMjZlZWRjZjAzNzk5NTY4OGMuLjZmOTFl
ZmI5YTkwMWFlMWNjYmFlNTZjOWIyZmQ5OWMxNDA5OTUyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTcyNzgsMTIgKzcyNzgsOSBAQCBjb25zdGV4
cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRD
aGVja2luZ1R5cGUgdHlwZQogCiBzdGF0aWMgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHRl
eHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdChOU1RleHRDaGVja2luZ1Jl
c3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IG5zUmVzdWx0LnJh
bmdlOwotCiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1
bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAg
IHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0gKldlYkNvcmU6Om1h
a2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50
ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDhkZjFjNzIxYmI2OGY2ZTAxMDE3ZTY1NTI0YzkzYzBkZmVl
Mjg4NDYuLjQ2OTc5ZDcxYWZmNzUxOWFlMGE0YWVmOTIxZjlkYzllOGE1MDQxZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcApAQCAtNzkwLDE0ICs3OTAsMTkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRh
aWwKICAgICAgICAgaWYgKGVudW1EZXRhaWxzT2JqLT5OZXh0KDEsICZkZXRhaWxPYmosICZmZXRj
aGVkKSAhPSBTX09LKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgR3JhbW1hckRldGFp
bCBkZXRhaWw7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sZW5ndGgoJmRldGFpbC5s
ZW5ndGgpKSkKKyAgICAgICAgaW50IGxlbmd0aDsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxP
YmotPmxlbmd0aCgmbGVuZ3RoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYg
KEZBSUxFRChkZXRhaWxPYmotPmxvY2F0aW9uKCZkZXRhaWwubG9jYXRpb24pKSkKKyAgICAgICAg
aW50IGxvY2F0aW9uOworICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+bG9jYXRpb24oJmxv
Y2F0aW9uKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQlN0cmluZyB1c2VyRGVz
YzsKICAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPnVzZXJEZXNjcmlwdGlvbigmdXNlckRl
c2MpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0
YWlsOworICAgICAgICBkZXRhaWwucmFuZ2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAg
ZGV0YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlw
dGlvbiA9IFN0cmluZyh1c2VyRGVzYywgU3lzU3RyaW5nTGVuKHVzZXJEZXNjKSk7CiAKICAgICAg
ICAgQ09NUHRyPElFbnVtU3BlbGxpbmdHdWVzc2VzPiBlbnVtR3Vlc3Nlc09iajsKQEAgLTgyNiw3
ICs4MzEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFt
bWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjbwogICAgICAgICBndWVzc2VzQlNUUnMu
YXBwZW5kKGd1ZXNzLnJlbGVhc2UoKSk7CiAgICAgfQogICAgIEJTdHJpbmcgdXNlckRlc2NyaXB0
aW9uQlNUUihkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKLSAgICBlZC0+dXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLmxvY2F0aW9uLCBkZXRh
aWwubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50
KWd1ZXNzZXNCU1RScy5zaXplKCkpOworICAgIGVkLT51cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1t
YXJTdHJpbmcoQlN0cmluZyhzdHJpbmcpLCBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5y
YW5nZS5sZW5ndGgsIHVzZXJEZXNjcmlwdGlvbkJTVFIsIGd1ZXNzZXNCU1RScy5kYXRhKCksIChp
bnQpZ3Vlc3Nlc0JTVFJzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGd1
ZXNzZXNCU1RScy5zaXplKCk7IGkrKykKICAgICAgICAgU3lzRnJlZVN0cmluZyhndWVzc2VzQlNU
UnNbaV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkNzA1M2VjMzIw
NGNhYWVlMGU0OWE4MWUxNWJlMTEyODM0OThjZGM0Li4xN2FlNWIwYTU2OGM2Mzc1NTdhNDUyYzU1
YWQzMzI4YjkzNzFiZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNzc2
MSwyMyArNzc2MSwyMSBAQCBIUkVTVUxUIFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlRm9yVGVzdGluZyhVSU5UIGxvY2F0aW9uLCBVSU5UIGxlbmd0aAogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSW50UmVjdCByZXN1bHRJbnRSZWN0Owot
ICAgIHJlc3VsdEludFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQoMCwgMCkpOwotICAgIHJlc3Vs
dEludFJlY3Quc2V0U2l6ZShJbnRTaXplKDAsIDApKTsKLSAgICAKLSAgICBpZiAobG9jYXRpb24g
PiBJTlRfTUFYKQorICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZnJhbWUuc2VsZWN0aW9u
KCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGlmIChsZW5ndGggPiBJTlRfTUFYIHx8
IGxvY2F0aW9uICsgbGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbGVuZ3RoID0gSU5UX01BWCAt
IGxvY2F0aW9uOwotICAgICAgICAKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBsb2NhdGlvbiwgbGVu
Z3RoKTsKKworICAgIENoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJhY3Rl
clJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgY2hhcmFjdGVyUmFuZ2UubGVuZ3RoID0g
bGVuZ3RoOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2
ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCks
IGNoYXJhY3RlclJhbmdlKSk7CiAKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwotICAgICAKKwogICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLmVkaXRvcigpLmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICByZXN1bHRJbnRSZWN0ID0gZnJhbWUudmlldygp
LT5jb250ZW50c1RvV2luZG93KHJlY3QpOworICAgIEludFJlY3QgcmVzdWx0SW50UmVjdCA9IGZy
YW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKIAogICAgIHJlc3VsdEludFJlY3Qu
c2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9UZXN0
V2ViS2l0QVBJLnhjc2NoZW1lIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWUKaW5k
ZXggNWY1ZWMyZTRhZWMzOWVkYzM5ZmM3Zjg1YzdkOTY3ZTVjNDk0Njk0ZS4uMDU1ZTdmNjg5ZTZk
ZTEwNmVmYzE0OGZiZjg1ZDQ0YjhjZGU3NWI5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RX
ZWJLaXRBUEkueGNzY2hlbWUKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWUK
QEAgLTUwLDYgKzUwLDIwIEBACiAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNv
bnRhaW5lcjpUZXN0V2ViS2l0QVBJLnhjb2RlcHJvaiI+CiAgICAgICAgICA8L0J1aWxkYWJsZVJl
ZmVyZW5jZT4KICAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgICAgPENvbW1h
bmRMaW5lQXJndW1lbnRzPgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAgICAg
ICAgIGFyZ3VtZW50ID0gIi0tZ3Rlc3RfbGlzdF90ZXN0cyIKKyAgICAgICAgICAgIGlzRW5hYmxl
ZCA9ICJOTyI+CisgICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICAgICA8Q29t
bWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiLS1ndGVzdF9maWx0ZXI9
RG9jdW1lbnRFZGl0aW5nQ29udGV4dC5TaW1wbGUiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAi
WUVTIj4KKyAgICAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudD4KKyAgICAgICAgIDxDb21tYW5k
TGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9ICItLWhlbHAiCisgICAgICAgICAg
ICBpc0VuYWJsZWQgPSAiTk8iPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAg
ICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2Zp
bGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZk
MGYwYWQ5MGFjOTlkM2QyZDY2NGJjYzE0YjEwNGMxOWE5YjUzYjguLmIyN2M3YTE0MTIwZjkyZmQx
ZjJiNTE0ZTg4NGYxMjU1MDg5ZTdmMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAyMC0wMy0y
MiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMjAtMDMtMjcgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2lkZXdheXMgamlnZ2xl
cyB3aGVuIHNjcm9sbGluZyB0aGUgc2hlbHZlcyBvbiBiZXRhLm11c2ljLmFwcGxlLmNvbQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5k
ZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVj
dGVkLnR4dAppbmRleCAwZjQwZWZkODNjYmE4MDAyZDE4YTE2MDdiOWM1ODcyZWZlMWRlNzJjLi4y
MzRkMzM5NjczYTIzNjhhM2U4NDI2MTc4ZTcxMjEzZjg0MWEwZjE1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91
bmRzLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dApA
QCAtMSwxMiArMSwxMiBAQAogdGV4dAogdGV4dAogdGV4dAotVGhpcyB2ZXJpZmllcyB0aGF0IHRl
eHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggb3V0IG9m
IGJvdW5kcworVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNy
YXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggZ3JlYXRlciB0aGFuIDJeMzEKIAogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCiAKLVBBU1MgaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4
dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkgaXMgZmFsc2UKK1BBU1MgaXRlbTEuaXNUZXh0
TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRl
eC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKaW5kZXggMGFi
MmYxNzk1OThkYmEwNzVjMDZlZDcyOGFmMTEwNjk2ZDVlNzJhMS4uNmFjN2Y5ZjY3MmNiNjg1MTVl
MDdhM2M1MDEwZWU2ODAwYTMxYmJlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91
dC1vZi1ib3VuZHMtY3Jhc2guaHRtbApAQCAtMTQsMTIgKzE0LDEyIEBAIHRleHQKIAogPHNjcmlw
dD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvcklu
ZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBvdXQgb2YgYm91bmRzIik7Cisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9y
IG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAyXjMxIik7CiAKICAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7CiAgICAgICAgIHZhciBpdGVtMSA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICBzaG91bGRCZUZh
bHNlKCJpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5
OTk5OTk5OTkpKSIpOyAgICAgICAKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpdGVtMS5pc1RleHRN
YXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSIpOwogICAg
IH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1l
eHBlY3RlZC50eHQKaW5kZXggNmE0ODVhZWIyODI2NTU4N2UzZDNjYzY0NDk3NDNiZGI1NmUwMzlh
Mi4uYmIwMmM3YmUxMjBlODA3MGYyMDQ1ZGEzNjVkMmQwOWQzNDY2YjNiZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
cGxhaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2Zp
cnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dApAQCAtMSwyMCArMSwx
NyBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5n
ZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJW
aWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IDEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAotNTgsNTcyLDAs
MTgKLTEwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci0x
MCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xOCw1NzIsNDAsMTgKLTAs
MCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKK2NhcmV0IGF0IHRoZSBiZWdpbm5pbmc6
ICgwLDApLCAoMTAsNTcyLDAsMTgpCitjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyOiAo
MSwwKSwgKDE4LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lOiAoNiwwKSwgKDU4
LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lOiAoNiwxMDApLCAoNTgsNTcyLDAs
MTgpCitmaXJzdCBjaGFyYWN0ZXI6ICgwLDEpLCAoMTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rl
cjogKDUsMSksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwyKSwgKDUwLDU3Miw4
LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEwMCksICg1MCw1NzIsOCwxOCkKK2ZpcnN0IGxpbmU6
ICgwLDYpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNyksICgxMCw1NzIsNDgsMTgp
CitmaXJzdCBsaW5lOiAoMCw0Mjk0OTY3Mjk1KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmUg
d2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyOiAoMSw0Mjk0OTY3Mjk1KSwgKDE4LDU3Miw0MCwx
OCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsMCksICg1OCw1NzIsMCwx
OCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDEwMDAsMCksICg1OCw1NzIs
MCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsMSksICg1OCw1NzIs
MCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsNDI5NDk2NzI5NSks
ICg1OCw1NzIsMCwxOCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0
L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sCmluZGV4
IDc5MjU4YjE5YWVmMWNmNmJhYmY5Y2E1Y2UzZGQ1ZDhkMjI2ZDYwZGUuLjYyY2RjOWI4MjZmOTY1
Zjg1NWQ3ZDVjODdhZTdlNTkwZDQ0NjI5ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
cGxhaW4uaHRtbApAQCAtMSwxMCArMSw1IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdD4KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgdGVzdFJ1bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNr
cygpOwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4KIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAw
IH0KIDwvc3R5bGU+CkBAIC0xMiw3ICs3LDYgQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6
IDAgfQogPGJvZHkgY29udGVudGVkaXRhYmxlPgogMTIzNDU2CiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0KIAl2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIm9sIik7CiAJCiAJZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yMSw0MCArMTUsNDIg
QEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogCQlpdGVtLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKIAkJY29uc29sZV9tZXNzYWdlcy5hcHBl
bmRDaGlsZChpdGVtKTsKIAl9Ci0JCisKKyAgICBmdW5jdGlvbiBsb2dSZWN0KGNvbW1lbnQsIHN0
YXJ0LCBsZW5ndGgpCisgICAgeworICAgICAgICBsb2coY29tbWVudCArICI6ICgiICsgc3RhcnQg
KyAiLCIgKyBsZW5ndGggKyAiKSwgKCIKKyAgICAgICAgICAgICsgdGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShzdGFydCwgbGVuZ3RoKSArICIpIik7CisgICAg
fQorCiAJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0JCQogCQl0cnkgewotCQkKIAkJCXRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotCQkKLQkJCXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMCkpOyAvLyBjYXJldCBhdCB0aGUgYmVnaW5uaW5n
IAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
MSwgMCkpOyAvLyBjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIAotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMCkpOyAvLyBjYXJl
dCBhdCB0aGUgZW5kIG9mIGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDYsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDEpKTsgLy8gZmlyc3QgY2hhcmFj
dGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSg1LCAxKSk7IC8vIGxhc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5m
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAyKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1
dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMTAwKSk7IC8vIC0iLQot
CQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwg
NikpOyAvLyBmaXJzdCBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSgwLCA3KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDQy
OTQ5NjcyOTUpKTsgLy8gZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDAp
KTsgLy8gb3V0IG9mIGJvdW5kcywgc2hvdWxkIGJlIHplcm8gcmVjdAotCQkJbG9nKHRleHRJbnB1
dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMTAwMCwgMCkpOyAvLyAtIi0K
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcs
IDEpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg3LCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQorCQkJd2luZG93LmdldFNlbGVjdGlv
bigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDApOwogCisJCQlsb2dSZWN0KCJjYXJldCBh
dCB0aGUgYmVnaW5uaW5nIiwgMCwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhZnRlciB0aGUgZmly
c3QgY2hhcmFjdGVyIiwgMSwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxp
bmUiLCA2LCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYsIDEw
MCk7CisJCQlsb2dSZWN0KCJmaXJzdCBjaGFyYWN0ZXIiLCAwLCAxKTsKKwkJCWxvZ1JlY3QoImxh
c3QgY2hhcmFjdGVyIiwgNSwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDIp
OworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxMDApOworCQkJbG9nUmVjdCgiZmly
c3QgbGluZSIsIDAsIDYpOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDcpOworCQkJbG9n
UmVjdCgiZmlyc3QgbGluZSIsIDAsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgiZmlyc3QgbGlu
ZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1Jl
Y3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDApOworCQkJbG9nUmVj
dCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgMTAwMCwgMCk7CisJCQlsb2dS
ZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAxKTsKKwkJCWxvZ1Jl
Y3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDQyOTQ5NjcyOTUpOwog
CQl9IGNhdGNoIChleCkgewogCQkJbG9nKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7
CiAJCX0KLQkJCisKIAkJdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7
CiAJCWNvbnNvbGUuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CiAJCWRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7Ci0JCQogCX0gZWxzZSB7CiAJCWRvY3VtZW50LndyaXRl
KCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOwogCX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CmluZGV4IGFjZmQ1MmYwYjk0OGE2NTNm
YzA2ZjI4YzUzZmQyNzIxNjQwYThhZDQuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlk
MzQ2NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4
cGVjdGVkLnR4dApAQCAtMSwyNCArMSwxNyBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVn
aW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KIDEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci01OCw1NzIsMCwx
OAotNTgsNTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUw
LDU3Miw4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xOCw1
NzIsNDAsMTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKK2NhcmV0IGF0IHRo
ZSBiZWdpbm5pbmc6ICgwLDApLCAoMTAsNTcyLDAsMTgpCitjYXJldCBhZnRlciB0aGUgZmlyc3Qg
Y2hhcmFjdGVyOiAoMSwwKSwgKDE4LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5l
OiAoNiwwKSwgKDU4LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lOiAoNiwxMDAp
LCAoNTgsNTcyLDAsMTgpCitmaXJzdCBjaGFyYWN0ZXI6ICgwLDEpLCAoMTAsNTcyLDgsMTgpCits
YXN0IGNoYXJhY3RlcjogKDUsMSksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwy
KSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEwMCksICg1MCw1NzIsOCwxOCkK
K2ZpcnN0IGxpbmU6ICgwLDYpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNyksICgx
MCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw0Mjk0OTY3Mjk1KSwgKDEwLDU3Miw0OCwxOCkK
K2ZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyOiAoMSw0Mjk0OTY3Mjk1KSwg
KDE4LDU3Miw0MCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsMCks
ICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDEwMDAs
MCksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcs
MSksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZDogKDcs
NDI5NDk2NzI5NSksICg1OCw1NzIsMCwxOCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLmh0bWwKaW5kZXggZmRjZmM2ZDRiMzc3OWI5YmQzOWQ4NzcxY2QyZmIwZGJhNjMwZjIxZS4u
ZTViZjI4NjYwY2MzNzhiNmFlZWJiYzM2ZDNiZTlmOTI5OWRlZmE5NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9y
Y2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVt
cEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFyZ2lu
OiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMjEsMzMgKzE2LDM2IEBAIGJvZHkgeyBt
YXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRl
bSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9nUmVjdChjb21tZW50LCBzdGFydCwgbGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQgKyAiOiAoIiArIHN0YXJ0ICsgIiwiICsgbGVu
Z3RoICsgIiksICgiCisgICAgICAgICAgICArIHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0aCkgKyAiKSIpOworICAgIH0KKwogCWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5IHsKLQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLQkJCisKIAkJCXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1
bWVudC5ib2R5LCA0KTsKICAgICAgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2Vk
VGV4dCgiNTYiLCAwLCAxKTsKIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMCkpOyAvLyBjYXJldCBhdCB0aGUgYmVnaW5uaW5nIAotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgMCkp
OyAvLyBjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIAotCQkJbG9nKHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMCkpOyAvLyBjYXJldCBhdCB0
aGUgZW5kIG9mIGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDYsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDEpKTsgLy8gZmlyc3QgY2hhcmFjdGVyCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAx
KSk7IC8vIGxhc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAyKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMTAwKSk7IC8vIC0iLQotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNikpOyAv
LyBmaXJzdCBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSgwLCA3KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDQyOTQ5Njcy
OTUpKTsgLy8gZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDApKTsgLy8g
b3V0IG9mIGJvdW5kcywgc2hvdWxkIGJlIHplcm8gcmVjdAotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMTAwMCwgMCkpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDEpKTsg
Ly8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSg3LCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUg
YmVnaW5uaW5nIiwgMCwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hh
cmFjdGVyIiwgMSwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2
LCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYsIDEwMCk7CisJ
CQlsb2dSZWN0KCJmaXJzdCBjaGFyYWN0ZXIiLCAwLCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hh
cmFjdGVyIiwgNSwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDIpOworCQkJ
bG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgbGlu
ZSIsIDAsIDYpOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDcpOworCQkJbG9nUmVjdCgi
Zmlyc3QgbGluZSIsIDAsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSB3aXRo
b3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoIm91
dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDApOworCQkJbG9nUmVjdCgib3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgMTAwMCwgMCk7CisJCQlsb2dSZWN0KCJv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAxKTsKKwkJCWxvZ1JlY3QoIm91
dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDQyOTQ5NjcyOTUpOwogCQl9IGNh
dGNoIChleCkgewogCQkJbG9nKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CiAJCX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5
YjNkNzA3MjQyN2RjZWQwNWUzNjY4Yjg2Nzg5MjdiZDJhNTAxM2UwLi5jNTUzN2U0N2I2Zjk5MzU4
YWU1MWNlNmQ3MDAyODFiN2FjZDA4NzdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NDksNyArODQ5LDEwIEBAIHdlYmtpdC5vcmcvYi8y
MDM1MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNpemluZy9keW5h
bWljLWF2YWlsCiAjIFN0YWxlLXdoaWxlLXJldmFsaWRhdGUgaXMgbm90IHN1cHBvcnRlZCBvbiBX
SzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2
YWxpZGF0ZSBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjA1MzE0IFsgQ2F0YWxpbmEgXSBlZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZh
aWx1cmUgXQorIyBSZXN1bHRzIGFyZSBnb29kIG9uIENhdGFsaW5hIGFuZCBuZXdlci4gRGVsZXRl
IHRoZXNlIGxpbmVzIHdoZW4gd2Ugc3RvcCBzdXBwb3J0aW5nIHRoZXNlIG9sZGVyIHZlcnNpb25z
IG9mIG1hY09TLgorWyBTaWVycmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBIaWdoU2llcnJhIF0gZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWls
dXJlIF0KK1sgTW9qYXZlIF0gZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNTQxMiBbIE1v
amF2ZSBEZWJ1ZyBdIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXct
Y2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogCkBAIC05NjMsNCArOTY2LDQgQEAgd2Via2l0Lm9yZy9i
LzIwOTQ5NCBmYXN0L2V2ZW50cy9tb3VzZS1jdXJzb3Itbm8tbW91c2Vtb3ZlLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA5NTYwIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL3NlbmQtcmVzcG9uc2UtdXBsb2FkLWV2ZW50LXByb2dyZXNzLmh0bSBbIFBh
c3MgQ3Jhc2ggRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hp
bGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA5NjIxIGZhc3QvbG9hZGVy
L2NoaWxkLWZyYW1lLWFkZC1hZnRlci1iYWNrLWZvcndhcmQuaHRtbCBbIFBhc3MgVGltZW91dCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
YWNiMWVmNmMzM2YxZGNmNDk2YjZkYTdhZmU3NWFlZGQ3MTFhYWU5ZC4uZjQyNDRkYmYxMzhmYjlj
ODI0N2MyMzkyZTM3MmE4NDliYTU0Y2ZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjIzLDkgKzIyMyw5IEBAIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYmVnaW5uaW5nLW9mLWF1
dG9jb3JyZWN0CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92
aW5nLXVuZGVybGluZS1hZnRlci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1
YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9z
cGVsbGluZy9hY2NlcHQtY2FuZGlkYXRlLWFsbG93cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQu
aHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGlu
Zy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtl
ci1pbmNsdWRlcy1oeXBoZW4uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmct
bGluZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2Ut
Zm9udC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWluY2x1ZGVzLWh5cGhlbi5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5n
bGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0
LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIApAQCAtMTA3
NCw0ICsxMDc0LDQgQEAgd2Via2l0Lm9yZy9iLzIwOTYyNCBbIFJlbGVhc2UgXSB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9maXhlZC9mb3VyLWJhcnMtem9vbWVkLmgKIAogd2Via2l0Lm9yZy9iLzIw
OTY3MiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0
Y2guaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8yMDk2
ODggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyLXN1cHBvcnQvc2NydWJiZXIt
c3VwcG9ydC1jbGljay5odG1sIFsgUGFzcyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQord2Via2l0Lm9yZy9iLzIwOTY4OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2Ny
dWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBwb3J0LWNsaWNrLmh0bWwgWyBQYXNzIENyYXNoIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzM3MDZjMTk1
YzI0ZmU5MDY5M2EyYmFjYjgyNzNhMjVjZGZiNTZhMC4uNWU5NmI3OTlmOTk0MjNjMDNmMTFiYTg4
ZjQ5MDVmNzZlM2E2OTE5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE4NzIsNyArMTg3Miw3IEBAIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGlu
YSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTYuaHRtbCBbIEltYWdlT25seUZhaWx1CiB3ZWJr
aXQub3JnL2IvMjA0ODIwIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci04Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsg
XSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjA0MjQ2IFsgQ2F0YWxpbmEgXSBlZGl0aW5nL21hYy9zZWxlY3Rpb24vY29u
dGV4dC1tZW51LXNlbGVjdC1lZGl0YWJpbGl0eS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMjA0MjQ2IFsgQ2F0YWxpbmEgXSBlZGl0aW5nL21hYy9zZWxlY3Rpb24vY29udGV4dC1tZW51
LXNlbGVjdC1lZGl0YWJpbGl0eS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzIwNDI0NyBbIENhdGFsaW5hIF0gd2ViYXVkaW8vc2lsZW5jZS1hZnRlci1wbGF5YmFjay5odG1s
IFsgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDI0Y2MxMTUxOTBmZjc0ZDViOGZlNGNjMjZkNGIyZDI2NGMyZWU1YzAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdl
LXN0eWxlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdp
bkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3Rl
eHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBJID4g
QiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0
ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gSSA+
IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotMTIzNDU2Ci0xMCw1NzIsMCwxOAot
MTgsNTcyLDAsMTgKLTYxLDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUyLDU3
Miw5LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUx
LDE4Ci0xMCw1NzIsNTEsMTgKLTE4LDU3Miw0MywxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAs
MAotMCwwLDAsMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UtMDAxLWV4cGVjdGVkLnR4dAppbmRleCA1YWFjZTA3NDAxMDEwNjBlY2NjNDkyMDU3NDg3
YmM2YmQ4MzAzNzM5Li43NTg1OGNlNjUzOGE3YzUyZDA4ZGY1YzNkMzJjNDEyMWUwNDI3NDQxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQt
c3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAx
LWV4cGVjdGVkLnR4dApAQCAtOCw1ICs4LDUgQEAgVGVzdGluZyB0ZXh0IHdpdGggYnIgZWxlbWVu
dHMgKDxkaXY+PGJyPjwvZGl2PmhlbGxvPGJyPikKICgxLCAxMDApOiBoZWxsbwogKDYsIDEpOgog
KDcsIDEpOgotKDEwMCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAw
LCAwKToKKygxMDAsIDEwMCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UtMDAxLmh0bWwKaW5kZXggM2E5MzAzMjhlMTA2MDM5ZjE1MzEzZjRkYzQyYTE0NGVkZDhl
YjQ1Yi4uOTQzMWEzOWU0ZTQ1M2IwYmE4ZTY1NTA4MTJiNzc4ZjMyYmRmNWVkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLTAwMS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbApAQCAtMzQsOCAr
MzQsOCBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2co
IigxLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlKDEsIDEwMCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNiwgMSk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNiwgMSkuc3Ry
aW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNywgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNywgMSkuc3RyaW5nKCkpOyAvLyBzaG91bGQg
YmUgZW1wdHkKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9s
bGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSB1
bmRlZmluZWQKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRy
b2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQg
YmUgdW5kZWZpbmVkCisgICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQg
YmUgZW1wdHkKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRy
b2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQg
YmUgZW1wdHkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhU
TUwgPSAiIjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5n
ZS1leHBlY3RlZC50eHQKaW5kZXggZDc5N2QyMjMxMWMxZTNmOWU1NmUxN2VhMTczNThlYTFjMjlk
ZDZlNi4uNjgwMTI3OTA2YzFlODY3YmJmNmU4MTI0MTc2Y2UxMjFlNDY4M2JmZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CkBA
IC03LDggKzcsOCBAQCBUZXN0aW5nIHN0eWxlZCB0ZXh0ICgxMjxiPjM8aT40NTY8L2k+PC9iPikK
ICgwLCAxMDApOiAxMjM0NTYKICg1LCAxKTogNgogKDUsIDIpOiA2Ci0oMTAwLCAwKTogdW5kZWZp
bmVkCi0oMTAwLCAxMDApOiB1bmRlZmluZWQKKygxMDAsIDApOiAKKygxMDAsIDEwMCk6IAogCiBU
ZXN0aW5nIHByb3BlciBzcGFjZSBydW5zICgxLl8yLl9fMy5fX180XzUpCiB0b3RhbCBsZW5ndGg6
IDE1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJp
YnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sCmluZGV4IDg3
MWRjN2IyN2FkZWVhNGUyNTM4NWViZmIzY2E0MzRmMjI4OWIwYzMuLmNmNmM5MTFkNGI1NzViMmY3
OTY0YzcxZWY1NjA3MzNlOTc1ZGJmNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmct
ZnJvbS1yYW5nZS5odG1sCkBAIC0zNCw4ICszNCw4IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRk
aW5nOiAwIH0KICAgICAgICAgICAgIGxvZygiKDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9s
bGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMCwgMTAwKS5zdHJpbmcoKSk7CiAgICAg
ICAgICAgICBsb2coIig1LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1
YnN0cmluZ0Zyb21SYW5nZSg1LCAxKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2coIig1LCAy
KTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg1
LCAyKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0
Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91
bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5w
dXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8g
c2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJ
bnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8g
c2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5w
dXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8g
c2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGxvZygiXG5UZXN0aW5n
IHByb3BlciBzcGFjZSBydW5zICgxLl8yLl9fMy5fX180XzUpIik7CiAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmlubmVySFRNTCA9ICIxICZuYnNwOzIgJm5ic3A7Jm5ic3A7MyAmbmJzcDsmbmJz
cDsmbmJzcDs0Jm5ic3A7NSI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394848</attachid>
            <date>2020-03-28 17:38:10 -0700</date>
            <delta_ts>2020-03-28 19:26:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328173809.patch</filename>
            <type>text/plain</type>
            <size>193245</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU2MjliNjdkMjE2NDNm
YzNkM2U5ODQ5N2M2ZGMxMWQ5OTY4N2YxOC4uYzM5ZDc3YjQwZjEyYjY4NDBlNWUyY2RmYTI5ZjIx
NmFkNzlkNzJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yOCAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2aWV3
ZWQgYnVpbGQgZml4IGZvciBXaW5DYWlybyBEZWJ1ZyBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2RkZTI2
ZDA1MTQwZDkyNDA5Y2FmMWIyMGI4ZmY4ODc1ZDVmNTQyMi4uMjNhOWY0N2RmMGQyZjc4NDJlMzFj
YTljNGI2N2RjNWJiZGI3YWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAyMC0wMy0y
MiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMjAtMDMtMjggIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUg
aW5qZWN0ZWQgYnVuZGxlIHBhZ2UgZ3JvdXAgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQzNGRmOGRmNTRjNzkwMTc3Zi4uYzRkNjM2OGE2
NzlhYjg1YWY5MDliOWNlNzMyMTNmOGQxN2ZhNDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBzaG91bGQgYXZvaWQgcmVh
ZGluZyBVUkwgc3RyaW5ncyBmcm9tIHRoZSBwYXN0ZWJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmluZGV4IDM3MmU2ZjEzODg5NmIyMTFmZjJiNzBjZTA1OTk3
NzY4YTBiYzhlMjguLjE1NjIxZGZmZGRiMjhkZDlhMTcyOTEyYTI4YmZhYzc2NWNkNGFjYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCkBAIC01MzgsMTUgKzUz
OCwxNSBAQCBkZWYgY2xvb3BFbWl0T3BBbmRCcmFuY2hJZk92ZXJmbG93KG9wZXJhbmRzLCBvcGVy
YXRvciwgdHlwZSkKIAogICAgICMgRW1pdCB0aGUgb3ZlcmZsb3cgdGVzdCBiYXNlZCBvbiB0aGUg
b3BlcmFuZHMgYW5kIHRoZSB0eXBlOgogICAgIGNhc2Ugb3BlcmF0b3IKLSAgICB3aGVuICIrIjsg
b3BlcmF0aW9uID0gImFkZCIKLSAgICB3aGVuICItIjsgb3BlcmF0aW9uID0gInN1YiIKLSAgICB3
aGVuICIqIjsgb3BlcmF0aW9uID0gIm11bHRpcGx5IgorICAgIHdoZW4gIisiOyBzYWZlT3BlcmF0
aW9uID0gInNhZmVBZGQiCisgICAgd2hlbiAiLSI7IHNhZmVPcGVyYXRpb24gPSAic2FmZVN1YnRy
YWN0IgorICAgIHdoZW4gIioiOyBzYWZlT3BlcmF0aW9uID0gInNhZmVNdWx0aXBseSIKICAgICBl
bHNlCi0gICAgICAgIHJhaXNlICJVbmltcGxlbWVudGVkIG9wZWFydG9yIgorICAgICAgICByYWlz
ZSAiVW5pbXBsZW1lbnRlZCBvcGVyYXRvciIKICAgICBlbmQKIAogICAgICRhc20ucHV0YyAiICAg
ICN7dGVtcFR5cGV9IHJlc3VsdDsiCi0gICAgJGFzbS5wdXRjICIgICAgYm9vbCBzdWNjZXNzID0g
V1RGOjpBcml0aG1ldGljT3BlcmF0aW9uczwje3RlbXBUeXBlfSwgI3t0ZW1wVHlwZX0sICN7dGVt
cFR5cGV9Pjo6I3tvcGVyYXRpb259KCN7b3BlcmFuZHNbMV0uY2xWYWx1ZSh0eXBlKX0sICN7b3Bl
cmFuZHNbMF0uY2xWYWx1ZSh0eXBlKX0sIHJlc3VsdCk7IgorICAgICRhc20ucHV0YyAiICAgIGJv
b2wgc3VjY2VzcyA9ICN7c2FmZU9wZXJhdGlvbn0oI3tvcGVyYW5kc1sxXS5jbFZhbHVlKHR5cGUp
fSwgI3tvcGVyYW5kc1swXS5jbFZhbHVlKHR5cGUpfSwgcmVzdWx0KTsiCiAgICAgJGFzbS5wdXRj
ICIgICAgI3tvcGVyYW5kc1sxXS5jbExWYWx1ZSh0eXBlKX0gPSAje3RydW5jYXRpb25IZWFkZXJ9
cmVzdWx0I3t0cnVuY2F0aW9uRm9vdGVyfTsiCiAgICAgJGFzbS5wdXRjICIgICAgaWYgKCFzdWNj
ZXNzKSIKICAgICAkYXNtLnB1dGMgIiAgICAgICAgZ290byAje29wZXJhbmRzWzJdLmNMYWJlbH07
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggNWQ4OGQzOTZjODc1OGI3M2Q3ZTcw
NjkxNDUxODY0ZWIwZWRmZDY0MS4uNGU3MDEyNTRlMTg4MzlkMDg5Y2RhY2VlMGFhMDEyM2IxNGVi
NjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpAQCAt
NTYsMzYgKzU1LDI1IEBACiAgKiAgICBhIG5ldyB2YWx1ZS4KICAqCiAgKiBDaGVja2VkPFQ+IHdv
cmtzIGZvciBhbGwgaW50ZWdlciB0eXBlcywgd2l0aCB0aGUgZm9sbG93aW5nIGNhdmVhdHM6Ci0g
KiAgLSBNaXhpbmcgc2lnbmVkbmVzcyBvZiBvcGVyYW5kcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3Ig
dHlwZXMgbmFycm93ZXIgdGhhbgotICogICAgNjRiaXRzLgogICogIC0gSXQgZG9lcyBoYXZlIGEg
cGVyZm9ybWFuY2UgaW1wYWN0LCBzbyB0aWdodCBsb29wcyBtYXkgd2FudCB0byBiZSBjYXJlZnVs
CiAgKiAgICB3aGVuIHVzaW5nIGl0LgorICogIC0gTWl4aW5nIHNpZ25lZG5lc3Mgb2Ygb3BlcmFu
ZHMgbm90IHlldCBzdXBwb3J0ZWQgZm9yIHR5cGVzIG5hcnJvd2VyIHRoYW4KKyAqICAgIDY0IGJp
dHMgb24gY29tcGlsZXJzIHRoYXQgbGFja2luZyB0aGUgR0NDIG92ZXJmbG93IGJ1aWx0LWlucy4K
ICAqCiAgKi8KIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gY2xhc3MgQ2hlY2tlZFN0YXRlIHsK
LSAgICBEaWRPdmVyZmxvdywKLSAgICBEaWROb3RPdmVyZmxvdwotfTsKK2VudW0gY2xhc3MgQ2hl
Y2tlZFN0YXRlIHsgRGlkT3ZlcmZsb3csIERpZE5vdE92ZXJmbG93IH07CiAKIGNsYXNzIEFzc2Vy
dE5vT3ZlcmZsb3cgewogcHVibGljOgotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VS
VCB2b2lkIG92ZXJmbG93ZWQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhck92ZXJmbG93KCkgeyB9Ci0KLSAgICBzdGF0aWMgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNyYXNoKCkKLSAgICB7Ci0gICAgICAgIENSQVNIKCk7
Ci0gICAgfQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIG92ZXJmbG93
ZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY2xlYXJPdmVy
ZmxvdygpIHsgfQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgY3Jhc2go
KSB7IENSQVNIKCk7IH0KIAogcHVibGljOgotICAgIGNvbnN0ZXhwciBib29sIGhhc092ZXJmbG93
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBo
YXNPdmVyZmxvd2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIENvbmRpdGlvbmFs
Q3Jhc2hPbk92ZXJmbG93IHsKQEAgLTEwMywxMCArOTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNPdmVyZmxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvd2VkOyB9CiAgICAgdm9pZCBj
bGVhck92ZXJmbG93KCkgeyBtX292ZXJmbG93ZWQgPSBmYWxzZTsgfQogCi0gICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBjcmFzaCgpCi0gICAgewotICAgICAgICBDUkFTSCgp
OwotICAgIH0KKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNyYXNoKCkg
eyBDUkFTSCgpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX292ZXJmbG93ZWQgeyBmYWxzZSB9
OwpAQCAtMTE1LDUwICsxMDAsMjggQEAgcHJpdmF0ZToKIAogY2xhc3MgQ3Jhc2hPbk92ZXJmbG93
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIG92ZXJm
bG93ZWQoKQotICAgIHsKLSAgICAgICAgY3Jhc2goKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFy
T3ZlcmZsb3coKSB7IH0KLQotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQg
Y3Jhc2goKQotICAgIHsKLSAgICAgICAgQ1JBU0goKTsKLSAgICB9CisgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBvdmVyZmxvd2VkKCkge2NyYXNoKCk7IH0KKyAgICBzdGF0
aWMgdm9pZCBjbGVhck92ZXJmbG93KCkgeyB9CisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9f
Q1JBU0ggdm9pZCBjcmFzaCgpIHsgQ1JBU0goKTsgfQogCiBwdWJsaWM6Ci0gICAgYm9vbCBoYXNP
dmVyZmxvd2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaGFzT3ZlcmZsb3dlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBjbGFzcyBSZWNv
cmRPdmVyZmxvdyB7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVjb3JkT3ZlcmZsb3coKQotICAgICAgICA6
IG1fb3ZlcmZsb3dlZChmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhck92ZXJm
bG93KCkKLSAgICB7Ci0gICAgICAgIG1fb3ZlcmZsb3dlZCA9IGZhbHNlOwotICAgIH0KLQotICAg
IHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgY3Jhc2goKQotICAgIHsKLSAgICAg
ICAgQ1JBU0goKTsKLSAgICB9CisgICAgdm9pZCBjbGVhck92ZXJmbG93KCkgeyBtX292ZXJmbG93
ZWQgPSBmYWxzZTsgfQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgY3Jh
c2goKSB7IENSQVNIKCk7IH0KIAogcHVibGljOgogICAgIGJvb2wgaGFzT3ZlcmZsb3dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3dlZDsgfQogICAgIHZvaWQgb3ZlcmZsb3dlZCgpIHsgbV9v
dmVyZmxvd2VkID0gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIHVuc2lnbmVkIGNoYXIgbV9vdmVy
Zmxvd2VkOworICAgIHVuc2lnbmVkIGNoYXIgbV9vdmVyZmxvd2VkIHsgZmFsc2UgfTsKIH07CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIgPSBDcmFzaE9uT3Zl
cmZsb3c+IGNsYXNzIENoZWNrZWQ7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92
ZUNoZWNrZWQ7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hl
Y2tlZDxUPj47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIgPSBD
cmFzaE9uT3ZlcmZsb3c+IGNsYXNzIENoZWNrZWQ7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJn
ZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVvZihUYXJnZXQp
ID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8
VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2U+IHsKQEAgLTI0MCw2NiArMjAzLDU1
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RhdGljIGlu
bGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZCB7Ci0gICAgdHlwZWRlZiBUIENs
ZWFuVHlwZTsKLSAgICBzdGF0aWMgY29uc3RleHByIENsZWFuVHlwZSBEZWZhdWx0VmFsdWUgPSAw
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNr
ZWQ8VCwgQ29uZGl0aW9uYWxDcmFzaE9uT3ZlcmZsb3c+PiB7Ci0gICAgdXNpbmcgQ2xlYW5UeXBl
ID0gdHlwZW5hbWUgUmVtb3ZlQ2hlY2tlZDxUPjo6Q2xlYW5UeXBlOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgQ2xlYW5UeXBlIERlZmF1bHRWYWx1ZSA9IDA7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgUmVtb3ZlQ2hlY2tlZCB7CisgICAgdXNpbmcgQ2xlYW5UeXBlID0gVDsKIH07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQsIENyYXNo
T25PdmVyZmxvdz4+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNoZWNrZWQ8VD46OkNs
ZWFuVHlwZSBDbGVhblR5cGU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBDbGVhblR5cGUgRGVmYXVs
dFZhbHVlID0gMDsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBSZW1v
dmVDaGVja2VkPENoZWNrZWQ8VCwgVT4+IHsKKyAgICB1c2luZyBDbGVhblR5cGUgPSBUOwogfTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VCwg
UmVjb3JkT3ZlcmZsb3c+PiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFQ+
OjpDbGVhblR5cGUgQ2xlYW5UeXBlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgQ2xlYW5UeXBlIERl
ZmF1bHRWYWx1ZSA9IDA7Ci19OworLy8gUmVzdWx0QmFzZSBhbmQgU2lnbmVkbmVzc1NlbGVjdG9y
IGFyZSB1c2VkIHRvIHdvcmsgYXJvdW5kIHR5cGVvZiBub3QgYmVpbmcgYXZhaWxhYmxlIGluIE1T
VkMuCiAKLS8vIFRoZSBSZXN1bHRCYXNlIGFuZCBTaWduZWRuZXNzU2VsZWN0b3IgYXJlIHVzZWQg
dG8gd29ya2Fyb3VuZCB0eXBlb2Ygbm90IGJlaW5nCi0vLyBhdmFpbGFibGUgaW4gTVNWQwogdGVt
cGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIGJvb2wgdUlzQmlnZ2VyID0gKHNpemVvZihV
KSA+IHNpemVvZihWKSksIGJvb2wgc2FtZVNpemUgPSAoc2l6ZW9mKFUpID09IHNpemVvZihWKSk+
IHN0cnVjdCBSZXN1bHRCYXNlOwogdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0
cnVjdCBSZXN1bHRCYXNlPFUsIFYsIHRydWUsIGZhbHNlPiB7Ci0gICAgdHlwZWRlZiBVIFJlc3Vs
dFR5cGU7CisgICAgdXNpbmcgUmVzdWx0VHlwZSA9IFU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFJlc3VsdEJhc2U8VSwgViwgZmFsc2UsIGZhbHNlPiB7
Ci0gICAgdHlwZWRlZiBWIFJlc3VsdFR5cGU7CisgICAgdXNpbmcgUmVzdWx0VHlwZSA9IFY7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RydWN0IFJlc3VsdEJhc2U8VSwgVSwgZmFsc2Us
IHRydWU+IHsKLSAgICB0eXBlZGVmIFUgUmVzdWx0VHlwZTsKKyAgICB1c2luZyBSZXN1bHRUeXBl
ID0gVTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBib29sIHVJc1Np
Z25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VT46OmlzX3NpZ25lZCwgYm9vbCB2SXNTaWduZWQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPFY+Ojppc19zaWduZWQ+IHN0cnVjdCBTaWduZWRuZXNzU2Vs
ZWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFNpZ25lZG5l
c3NTZWxlY3RvcjxVLCBWLCB0cnVlLCB0cnVlPiB7Ci0gICAgdHlwZWRlZiBVIFJlc3VsdFR5cGU7
CisgICAgdXNpbmcgUmVzdWx0VHlwZSA9IFU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCBmYWxzZSwgZmFsc2U+
IHsKLSAgICB0eXBlZGVmIFUgUmVzdWx0VHlwZTsKKyAgICB1c2luZyBSZXN1bHRUeXBlID0gVTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgU2lnbmVkbmVz
c1NlbGVjdG9yPFUsIFYsIHRydWUsIGZhbHNlPiB7Ci0gICAgdHlwZWRlZiBWIFJlc3VsdFR5cGU7
CisgICAgdXNpbmcgUmVzdWx0VHlwZSA9IFY7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCBmYWxzZSwgdHJ1ZT4g
ewotICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBlOworICAgIHVzaW5nIFJlc3VsdFR5cGUgPSBVOwog
fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBSZXN1bHRCYXNl
PFUsIFYsIGZhbHNlLCB0cnVlPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTaWduZWRuZXNzU2Vs
ZWN0b3I8VSwgVj46OlJlc3VsdFR5cGUgUmVzdWx0VHlwZTsKKyAgICB1c2luZyBSZXN1bHRUeXBl
ID0gdHlwZW5hbWUgU2lnbmVkbmVzc1NlbGVjdG9yPFUsIFY+OjpSZXN1bHRUeXBlOwogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBSZXN1bHQgOiBSZXN1bHRC
YXNlPHR5cGVuYW1lIFJlbW92ZUNoZWNrZWQ8VT46OkNsZWFuVHlwZSwgdHlwZW5hbWUgUmVtb3Zl
Q2hlY2tlZDxWPjo6Q2xlYW5UeXBlPiB7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0
eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBSZXN1bHQ8TEhTLCBS
SFM+OjpSZXN1bHRUeXBlLCAKKyNpZiAhQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZSA9IHR5
cGVuYW1lIFJlc3VsdDxMSFMsIFJIUz46OlJlc3VsdFR5cGUsCiAgICAgYm9vbCBsaHNTaWduZWQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPExIUz46OmlzX3NpZ25lZCwgYm9vbCByaHNTaWduZWQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPFJIUz46OmlzX3NpZ25lZD4gc3RydWN0IEFyaXRobWV0aWNPcGVy
YXRpb25zOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1l
IFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxMSFMsIFJIUywgUmVzdWx0
VHlwZSwgdHJ1ZSwgdHJ1ZT4gewpAQCAtMzEzLDEzICsyNjUsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1l
dGljT3BlcgogCiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChMSFMgbGhzLCBSSFMgcmhzLCBS
ZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNpZiBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAo
X19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSNlbHNlCiAgICAgICAgIGlmIChzaWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAg
aWYgKGxocyA+PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKChzdGQ6Om51bWVyaWNfbGltaXRz
PFJlc3VsdFR5cGU+OjptYXgoKSAtIHJocykgPCBsaHMpCkBAIC0zMzIsMTggKzI3NywxMCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+
IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9IC8vIGlmIHRoZSBzaWducyBkbyBub3Qg
bWF0Y2ggdGhpcyBvcGVyYXRpb24gY2FuJ3Qgb3ZlcmZsb3cKICAgICAgICAgcmVzdWx0ID0gbGhz
ICsgcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRp
YyBpbmxpbmUgYm9vbCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBX
QVJOX1VOVVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0g
ICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZs
b3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAgICAgICBpZiAo
IXNpZ25zTWF0Y2gobGhzLCByaHMpKSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAg
ICAgICAgICAgICAgICBpZiAobGhzID4gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6
bWF4KCkgKyByaHMpCkBAIC0zNTUsMTggKzI5MiwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhT
LCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3Bl
cgogICAgICAgICB9IC8vIGlmIHRoZSBzaWducyBtYXRjaCB0aGlzIG9wZXJhdGlvbiBjYW4ndCBv
dmVyZmxvdwogICAgICAgICByZXN1bHQgPSBsaHMgLSByaHM7CiAgICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBs
aHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAg
ewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7
Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotI2Vsc2UKICAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhzLCByaHMpKSB7
CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAobGhzICYm
IChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykgPCByaHMpCkBA
IC0zODgsNTggKzMxNywzMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMs
IHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9CiAg
ICAgICAgIHJlc3VsdCA9IGxocyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
ICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxzKExIUyBsaHMsIFJIUyByaHMp
IHsgcmV0dXJuIGxocyA9PSByaHM7IH0KLQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExIUywg
dHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJh
dGlvbnM8TEhTLCBSSFMsIFJlc3VsdFR5cGUsIGZhbHNlLCBmYWxzZT4gewogICAgIC8vIExIUyBh
bmQgUkhTIGFyZSB1bnNpZ25lZCB0eXBlcyBzbyBib3VuZHMgY2hlY2tzIGFyZSBuaWNlIGFuZCBl
YXN5CiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRU
eXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNpZiBDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWls
dGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNl
CiAgICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxocyArIHJoczsKICAgICAgICAgaWYgKHRlbXAg
PCBsaHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7
CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGlu
ZSBib29sIHN1YihMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5V
U0VEX1JFVFVSTgogICAgIHsKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAg
UmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMs
IHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQg
PSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCiAgICAgICAgIFJlc3VsdFR5cGUg
dGVtcCA9IGxocyAtIHJoczsKICAgICAgICAgaWYgKHRlbXAgPiBsaHMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBs
aHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAg
ewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7
Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotI2Vsc2UKICAgICAgICAgaWYgKCFsaHMgfHwgIXJocykgewogICAgICAg
ICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDQ4LDIzICsz
NTEsMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmVzdWx0ID0gbGhzICogcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgogICAgIH0KIAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbHMoTEhTIGxocywgUkhT
IHJocykgeyByZXR1cm4gbGhzID09IHJoczsgfQotCiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
UmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5zaWduZWQsIFJl
c3VsdFR5cGUsIHRydWUsIGZhbHNlPiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChpbnQ2
NF90IGxocywgaW50NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkKICAgICB7Ci0jaWYgQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAg
aWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0jZWxzZQogICAgICAgICBpbnQ2NF90IHRlbXAgPSBsaHMgKyByaHM7CiAgICAgICAgIGlm
ICh0ZW1wIDwgc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWluKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzIsMTggKzM2NSwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5zaWduZWQs
IFJlc3VsdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxSZXN1bHRUeXBlPih0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGlubGluZSBib29sIHN1YihpbnQ2NF90IGxocywgaW50
NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkKICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NP
TVBBVElCTEUpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRp
bl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQog
ICAgICAgICBpbnQ2NF90IHRlbXAgPSBsaHMgLSByaHM7CiAgICAgICAgIGlmICh0ZW1wIDwgc3Rk
OjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWluKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00OTEsMTggKzM3NiwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0VHlw
ZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5zaWduZWQsIFJlc3VsdAogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxSZXN1
bHRUeXBlPih0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgbXVsdGlwbHkoaW50NjRfdCBsaHMsIGludDY0X3QgcmhzLCBS
ZXN1bHRUeXBlJiByZXN1bHQpCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQot
ICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJm
bG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKICAgICAgICAgaW50
NjRfdCB0ZW1wID0gbGhzICogcmhzOwogICAgICAgICBpZiAodGVtcCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTEwLDEyICszODcsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFy
aXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5zaWduZWQsIFJlc3VsdAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxSZXN1bHRUeXBlPih0ZW1w
KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgZXF1YWxzKGludCBsaHMsIHVuc2lnbmVkIHJocykKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihsaHMpID09IHN0YXRpY19jYXN0PGludDY0X3Q+KHJo
cyk7CiAgICAgfQogfTsKIApAQCAtNTM0LDcwICs0MDUsODMgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczx1bnNpZ25lZCwgaW50LCBS
ZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVu
c2lnbmVkLCBSZXN1bHRUeXBlPjo6bXVsdGlwbHkobGhzLCByaHMsIHJlc3VsdCk7CiAgICAgfQot
Ci0gICAgc3RhdGljIGlubGluZSBib29sIGVxdWFscyh1bnNpZ25lZCBsaHMsIGludCByaHMpCi0g
ICAgewotICAgICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8aW50LCB1bnNpZ25lZCwg
UmVzdWx0VHlwZT46OmVxdWFscyhyaHMsIGxocyk7Ci0gICAgfQogfTsKIAotdGVtcGxhdGUgPGNs
YXNzIE92ZXJmbG93SGFuZGxlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6Omlz
X3NjYWxhcjxPdmVyZmxvd0hhbmRsZXI+Ojp2YWx1ZT4+Ci1pbmxpbmUgY29uc3RleHByIGJvb2wg
b2JzZXJ2ZXNPdmVyZmxvdygpIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZiAvLyBDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkKKwordGVtcGxhdGU8dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2NhbGFyPE92ZXJmbG93SGFuZGxlcj46
OnZhbHVlPj4KK2NvbnN0ZXhwciBib29sIG9ic2VydmVzT3ZlcmZsb3coKSB7IHJldHVybiB0cnVl
OyB9CiAKLXRlbXBsYXRlIDw+Ci1pbmxpbmUgY29uc3RleHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxv
dzxBc3NlcnROb092ZXJmbG93PigpIHsgcmV0dXJuIEFTU0VSVF9FTkFCTEVEOyB9Cit0ZW1wbGF0
ZTw+Citjb25zdGV4cHIgYm9vbCBvYnNlcnZlc092ZXJmbG93PEFzc2VydE5vT3ZlcmZsb3c+KCkg
eyByZXR1cm4gQVNTRVJUX0VOQUJMRUQ7IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlQWRkKFUgbGhzLCBWIHJo
cywgUiYgcmVzdWx0KQordGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
Uj4gc3RhdGljIGlubGluZSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzYWZlQWRkKFUgbGhzLCBW
IHJocywgUiYgcmVzdWx0KQogeworI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorICAgIHJl
dHVybiAhX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnJlc3VsdCk7CisjZWxzZQog
ICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxVLCBWLCBSPjo6YWRkKGxocywgcmhzLCBy
ZXN1bHQpOwotICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBP
dmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFIsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6
dmFsdWU+PgordGVtcGxhdGU8Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBSLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNf
c2NhbGFyPE92ZXJmbG93SGFuZGxlcj46OnZhbHVlPj4KIHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZl
QWRkKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQogewotICAgIGlmIChvYnNlcnZlc092ZXJmbG93
PE92ZXJmbG93SGFuZGxlcj4oKSkKKyAgICBpZiBjb25zdGV4cHIgKG9ic2VydmVzT3ZlcmZsb3c8
T3ZlcmZsb3dIYW5kbGVyPigpKQogICAgICAgICByZXR1cm4gc2FmZUFkZChsaHMsIHJocywgcmVz
dWx0KTsKICAgICByZXN1bHQgPSBsaHMgKyByaHM7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBSPiBzdGF0aWMgaW5saW5l
IGJvb2wgc2FmZVN1YihVIGxocywgViByaHMsIFImIHJlc3VsdCkKK3RlbXBsYXRlPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgc2FmZVN1YnRyYWN0KFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQogeworI2lmIENP
TVBJTEVSKEdDQ19DT01QQVRJQkxFKQorICAgIHJldHVybiAhX19idWlsdGluX3N1Yl9vdmVyZmxv
dyhsaHMsIHJocywgJnJlc3VsdCk7CisjZWxzZQogICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0
aW9uczxVLCBWLCBSPjo6c3ViKGxocywgcmhzLCByZXN1bHQpOworI2VuZGlmCiB9CiAKLXRlbXBs
YXRlIDxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZs
b3dIYW5kbGVyPjo6dmFsdWU+Pgotc3RhdGljIGlubGluZSBib29sIHNhZmVTdWIoVSBsaHMsIFYg
cmhzLCBSJiByZXN1bHQpCit0ZW1wbGF0ZTxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwh
c3RkOjppc19zY2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6dmFsdWU+Pgorc3RhdGljIGlubGluZSBi
b29sIHNhZmVTdWJ0cmFjdChVIGxocywgViByaHMsIFImIHJlc3VsdCkKIHsKLSAgICBpZiAob2Jz
ZXJ2ZXNPdmVyZmxvdzxPdmVyZmxvd0hhbmRsZXI+KCkpCi0gICAgICAgIHJldHVybiBzYWZlU3Vi
KGxocywgcmhzLCByZXN1bHQpOworICAgIGlmIGNvbnN0ZXhwciAob2JzZXJ2ZXNPdmVyZmxvdzxP
dmVyZmxvd0hhbmRsZXI+KCkpCisgICAgICAgIHJldHVybiBzYWZlU3VidHJhY3QobGhzLCByaHMs
IHJlc3VsdCk7CiAgICAgcmVzdWx0ID0gbGhzIC0gcmhzOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgUj4gc3RhdGljIGlu
bGluZSBib29sIHNhZmVNdWx0aXBseShVIGxocywgViByaHMsIFImIHJlc3VsdCkKK3RlbXBsYXRl
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgc2FmZU11bHRpcGx5KFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQog
eworI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorICAgIHJldHVybiAhX19idWlsdGluX211
bF9vdmVyZmxvdyhsaHMsIHJocywgJnJlc3VsdCk7CisjZWxzZQogICAgIHJldHVybiBBcml0aG1l
dGljT3BlcmF0aW9uczxVLCBWLCBSPjo6bXVsdGlwbHkobGhzLCByaHMsIHJlc3VsdCk7CisjZW5k
aWYKIH0KIAotdGVtcGxhdGUgPGNsYXNzIE92ZXJmbG93SGFuZGxlciwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6Omlz
X3NjYWxhcjxPdmVyZmxvd0hhbmRsZXI+Ojp2YWx1ZT4+Cit0ZW1wbGF0ZTxjbGFzcyBPdmVyZmxv
d0hhbmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFIsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6dmFsdWU+
Pgogc3RhdGljIGlubGluZSBib29sIHNhZmVNdWx0aXBseShVIGxocywgViByaHMsIFImIHJlc3Vs
dCkKIHsKLSAgICBpZiAob2JzZXJ2ZXNPdmVyZmxvdzxPdmVyZmxvd0hhbmRsZXI+KCkpCisgICAg
aWYgY29uc3RleHByIChvYnNlcnZlc092ZXJmbG93PE92ZXJmbG93SGFuZGxlcj4oKSkKICAgICAg
ICAgcmV0dXJuIHNhZmVNdWx0aXBseShsaHMsIHJocywgcmVzdWx0KTsKICAgICByZXN1bHQgPSBs
aHMgKiByaHM7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZUVxdWFscyhVIGxocywgViByaHMpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBjb25zdGV4cHIgYm9vbCBzYWZlRXF1YWxz
KFUgbGhzLCBWIHJocykKIHsKLSAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8VSwgVj46
OmVxdWFscyhsaHMsIHJocyk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NpZ25lZDxVPigp
ID09IHN0ZDo6aXNfc2lnbmVkPFY+KCkpCisgICAgICAgIHJldHVybiBsaHMgPT0gcmhzOworICAg
IGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NpZ25lZDxVPigpKQorICAgICAgICByZXR1cm4g
bGhzID49IDAgJiYgc3RkOjptYWtlX3Vuc2lnbmVkX3Q8VT4obGhzKSA9PSByaHM7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gcmhzID49IDAgJiYgc3RkOjptYWtlX3Vuc2lnbmVkX3Q8Vj4ocmhz
KSA9PSBsaHM7CiB9CiAKIGVudW0gUmVzdWx0T3ZlcmZsb3dlZFRhZyB7IFJlc3VsdE92ZXJmbG93
ZWQgfTsKICAgICAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+
IGNsYXNzIENoZWNrZWQgOiBwdWJsaWMgT3ZlcmZsb3dIYW5kbGVyIHsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4gY2xhc3MgQ2hlY2tlZCA6IHB1YmxpYyBPdmVy
Zmxvd0hhbmRsZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVCwgY2xhc3Mg
X092ZXJmbG93SGFuZGxlcj4gZnJpZW5kIGNsYXNzIENoZWNrZWQ7CiAgICAgQ2hlY2tlZCgpCkBA
IC03NDIsNyArNjI2LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGNv
bnN0IENoZWNrZWQgb3BlcmF0b3ItPShVIHJocykKICAgICB7Ci0gICAgICAgIGlmICghc2FmZVN1
YjxPdmVyZmxvd0hhbmRsZXI+KG1fdmFsdWUsIHJocywgbV92YWx1ZSkpCisgICAgICAgIGlmICgh
c2FmZVN1YnRyYWN0PE92ZXJmbG93SGFuZGxlcj4obV92YWx1ZSwgcmhzLCBtX3ZhbHVlKSkKICAg
ICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
IH0KQEAgLTg4NSw3ICs3NjksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZQogICAgIFYgeSA9
IDA7CiAgICAgYm9vbCBvdmVyZmxvd2VkID0gbGhzLnNhZmVHZXQoeCkgPT0gQ2hlY2tlZFN0YXRl
OjpEaWRPdmVyZmxvdyB8fCByaHMuc2FmZUdldCh5KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJm
bG93OwogICAgIHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSByZXN1bHQgPSAwOwot
ICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVTdWI8T3ZlcmZsb3dIYW5kbGVyPih4LCB5LCByZXN1bHQp
OworICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVTdWJ0cmFjdDxPdmVyZmxvd0hhbmRsZXI+KHgsIHks
IHJlc3VsdCk7CiAgICAgaWYgKG92ZXJmbG93ZWQpCiAgICAgICAgIHJldHVybiBSZXN1bHRPdmVy
Zmxvd2VkOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC05MzQsMTYgKzgxOCwxMyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0
aWMgaW5saW5lIENoZWNrZQogfQogCiAvLyBDb252ZW5pZW5jZSB0eXBlZGVmcy4KLXR5cGVkZWYg
Q2hlY2tlZDxpbnQ4X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50ODsKLXR5cGVkZWYgQ2hl
Y2tlZDx1aW50OF90LCBSZWNvcmRPdmVyZmxvdz4gQ2hlY2tlZFVpbnQ4OwotdHlwZWRlZiBDaGVj
a2VkPGludDE2X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50MTY7Ci10eXBlZGVmIENoZWNr
ZWQ8dWludDE2X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkVWludDE2OwotdHlwZWRlZiBDaGVj
a2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50MzI7Ci10eXBlZGVmIENoZWNr
ZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkVWludDMyOwotdHlwZWRlZiBDaGVj
a2VkPGludDY0X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50NjQ7Ci10eXBlZGVmIENoZWNr
ZWQ8dWludDY0X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkVWludDY0OwotdHlwZWRlZiBDaGVj
a2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRTaXplOwordXNpbmcgQ2hlY2tlZElu
dDMyID0gQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz47Cit1c2luZyBDaGVja2VkVWlu
dDMyID0gQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+OwordXNpbmcgQ2hlY2tlZElu
dDY0ID0gQ2hlY2tlZDxpbnQ2NF90LCBSZWNvcmRPdmVyZmxvdz47Cit1c2luZyBDaGVja2VkVWlu
dDY0ID0gQ2hlY2tlZDx1aW50NjRfdCwgUmVjb3JkT3ZlcmZsb3c+OwordXNpbmcgQ2hlY2tlZFNp
emUgPSBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+OwogCisvLyBGSVhNRTogVGhpcyBj
b252ZXJ0cyBlYWNoIGluZGl2aWR1YWwgYXJndW1lbnQgdG8gdHlwZSBULCB3aGljaCBpcyBub3Qg
d2hhdCB0aGUgIisiIG9wZXJhdG9yIHdvdWxkIGRvLgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTdW0oVSB2YWx1ZSkK
IHsKQEAgLTk5MiwxMCArODczLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
QXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKIHVzaW5nIFdURjo6QXNz
ZXJ0Tm9PdmVyZmxvdzsKIHVzaW5nIFdURjo6Q2hlY2tlZDsKIHVzaW5nIFdURjo6Q2hlY2tlZFN0
YXRlOwotdXNpbmcgV1RGOjpDaGVja2VkSW50ODsKLXVzaW5nIFdURjo6Q2hlY2tlZFVpbnQ4Owot
dXNpbmcgV1RGOjpDaGVja2VkSW50MTY7Ci11c2luZyBXVEY6OkNoZWNrZWRVaW50MTY7CiB1c2lu
ZyBXVEY6OkNoZWNrZWRJbnQzMjsKIHVzaW5nIFdURjo6Q2hlY2tlZFVpbnQzMjsKIHVzaW5nIFdU
Rjo6Q2hlY2tlZEludDY0OwpAQCAtMTAwNyw0ICs4ODQsNyBAQCB1c2luZyBXVEY6OlJlY29yZE92
ZXJmbG93OwogdXNpbmcgV1RGOjpjaGVja2VkU3VtOwogdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3Zl
cmZsb3dzOwogdXNpbmcgV1RGOjpwcm9kdWN0T3ZlcmZsb3dzOwordXNpbmcgV1RGOjpzYWZlQWRk
OwordXNpbmcgV1RGOjpzYWZlU3VidHJhY3Q7Cit1c2luZyBXVEY6OnNhZmVNdWx0aXBseTsKIHVz
aW5nIFdURjo6c3VtT3ZlcmZsb3dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFU
aW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMTNlMDg5OTQ1N2Ux
NTA5YWE3ZDhiMjZmZmRhYzhmY2U2M2M2ZThjZi4uMzBiMjBkZDEwNzY3YWU0NzQ0MDRiZDljNGQz
MTUyNzgxZjVjNDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgTWVk
aWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAog
ICAgICAgICBjb21tb25UaW1lU2NhbGUgPSBNYXhpbXVtVGltZVNjYWxlOwogICAgIGEuc2V0VGlt
ZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CiAgICAgYi5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNj
YWxlKTsKLSAgICB3aGlsZSAoIXNhZmVTdWIoYS5tX3RpbWVWYWx1ZSwgYi5tX3RpbWVWYWx1ZSwg
YS5tX3RpbWVWYWx1ZSkpIHsKKyAgICB3aGlsZSAoIXNhZmVTdWJ0cmFjdChhLm1fdGltZVZhbHVl
LCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgewogICAgICAgICBpZiAoY29tbW9uVGlt
ZVNjYWxlID09IDEpCiAgICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgY29t
bW9uVGltZVNjYWxlIC89IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5YWQ1Mzc4NTMyNGJiMzRj
MGRkYjlkY2MxMTcwYzhjZGQ0YTM2NmE4Li43OTdkM2MxMzk0ODMzYWQ4OGI3NTM0ZGQyNGUzZGZl
Njc2MTlmZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cy5oCiAKKyAgICBlZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKICAgICBlZGl0
aW5nL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hs
aWdodC5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvblVuZGVybGluZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZTcy
MjJhMDY5OGM1MDA5M2EzNDhiYjdiOTUwMzMwNjFiZTk5ZDQwYy4uNWExOTI0ZmIzNjUwOTIyYjhl
MDQxMDkwNTJhZjI1NzcwMzgzN2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiAgICAgICAgICAgICAgICAgaWYgKGFicyhyb3VuZGVkVGltZSAtIHRp
bWUpIDwgcm91bmRpbmdNYXJnaW4gfHwgdGltZVNjYWxlID49IE1lZGlhVGltZTo6TWF4aW11bVRp
bWVTY2FsZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kZWRUaW1lOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFXVEY6OnNhZmVNdWx0aXBseSh0aW1lU2NhbGUsIDIsIHRpbWVTY2Fs
ZSkgfHwgdGltZVNjYWxlID4gTWVkaWFUaW1lOjpNYXhpbXVtVGltZVNjYWxlKQorICAgICAgICAg
ICAgICAgIGlmICghc2FmZU11bHRpcGx5KHRpbWVTY2FsZSwgMiwgdGltZVNjYWxlKSB8fCB0aW1l
U2NhbGUgPiBNZWRpYVRpbWU6Ok1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgICAgICAgICAgICAg
IHRpbWVTY2FsZSA9IE1lZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlYTNjNGI0ZGYxOTQyOTM5NGFmMzgzZmYyNTBmNjAyNTk5Njc5NDJi
Li5jNTkwZTE1ZWIwZmYwZDcxYzM5NjgzNDZjN2U1N2I2NGQ3MDU3MmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzM0LDYg
KzI3MzQsNyBAQAogCQk5M0YxOUIxNzA4MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxp
YiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFE
MzFBMDU1OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0YxRDVC
QjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8q
IFdlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKIAkJOTNGMUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8q
IEpTV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGMUQ1QkYxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4
dC5oICovOyB9OworCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkx
MjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAv
KiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmggKi87IH07CiAJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vw
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1
NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0
MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oICovOyB9OwpA
QCAtMTA5MzQsNiArMTA5MzUsNyBAQAogCQk5M0YxRDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2Vi
R0xMb3NlQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjFENUJFMTJENTMzNTYwMDgz
MkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJHTExvc2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMTG9zZUNvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8q
IENoYXJhY3RlclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJh
Y3RlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVBMTI3Rjcw
QjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYg
LyogV2ViR0xDb250ZXh0RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29u
dGV4dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzU5LDYgKzIx
NzYxLDcgQEAKIAkJCQk5MzMwOUQ4QzA5OUU2NDkxMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3Rl
Q29tbWFuZC5oICovLAogCQkJCUY0RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0
VHlwZUNvbW1hbmQuY3BwICovLAogCQkJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFu
Z2VMaXN0VHlwZUNvbW1hbmQuaCAqLywKKwkJCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyog
Q2hhcmFjdGVyUmFuZ2UuaCAqLywKIAkJCQk3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCiAJCQkJOTMzMDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8q
IENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1
ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLywKQEAgLTI5NjQyLDYgKzI5NjQ1LDcgQEAK
IAkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTAwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NTkyRjc4MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFy
YWN0ZXJQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1
ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QjhGRkQxMTZB
RTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGls
ZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggZDgzMTA3NWNkMzExZDk1MmMyYjE4NjU5YmZlMzQ4NTRl
YTE3Yzc1Yi4uZDU2MjkwOWZmZDIxZDU4NDZhMzc0OGE0NzRkNmUzOWNlYThhNDlhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIzMzgsMTEgKzIzMzgsMTAg
QEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UgKilsaXZlUmFuZ2UKIAogLSAo
UmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogewotICAg
IGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvIHJhbmdlID0gbWFrZUNo
YXJhY3RlclJhbmdlKG5zcmFuZ2UpOworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2Nh
dGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGgg
PSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgCisKICAgICAvLyBvdXIgY3Jp
dGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRo
b2RzIHRoYXQKICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0
aGUgc2VsZWN0aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBm
aWVsZHMgYW5kIHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CkBAIC0yMzUyLDcg
KzIzNTEsOSBAQCAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlu
c3JhbmdlCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRv
Y3VtZW50KCk7CiAgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgp
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgRWxl
bWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChzY29wZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwor
ICAgIGlmICghc2NvcGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqc2NvcGUpLCAqcmFuZ2UpKTsKIH0KIAogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5k
ZWQgdG8gdGFrZSBhIHRleHQgbWFya2VyIHJlcHJlc2VudGluZyBhIFZpc2libGVQb3NpdGlvbiBh
bmQgY29udmVydCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCA4NTkyZjA3MDc4M2RmNWFkMTgzODI3OTRlNWFlOWFmOThjMGVmMmIzLi5hM2Y1M2M4ZTFlYTM2
MzRjNGE4ZTViMDkyYWE4ZjM3MjAwYmZiZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQpAQCAtMTA5OCw5ICsxMDk4LDkgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LAogICAgICAgICBzaXplX3Qgc2l6ZSA9IHJlc3VsdHMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07Ci0gICAgICAgICAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4
dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9j
YXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0
TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRl
LCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQucmFuZ2UubG9jYXRpb24gKyByYW5nZS5sb2NhdGlv
biwgcmVzdWx0LnJhbmdlLmxlbmd0aCkpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1h
cmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VSYW5nZShyZXN1bHQubG9j
YXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOworICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2Vk
TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7CiAjZW5kaWYK
ICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0zNjgwLDE5ICszNjgwLDIxIEBAIC0gKGlk
KV90ZXh0TWFya2VyRm9ySW5kZXg6KE5TSW50ZWdlcil0ZXh0SW5kZXgKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2VsZi5heEJhY2tp
bmdPYmplY3QtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2lu
Z09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIHRl
eHRJbmRleCwgMCk7Ci0gICAgaWYgKCF0ZXh0UmFuZ2UgfHwgIXRleHRSYW5nZS0+Ym91bmRhcnlQ
b2ludHNWYWxpZCgpKQorCisgICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSkgewotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSh0ZXh0UmFu
Z2UsIHRydWUpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOworCisgICAgYXV0
byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGlm
ICghY2FjaGUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGJvdW5kYXJ5ID0gcmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZG9j
dW1lbnRFbGVtZW50KSwgdGV4dEluZGV4KTsKKyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IGNh
Y2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHsg
Ym91bmRhcnksIGJvdW5kYXJ5IH0pLCB0cnVlKTsKKyAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwogfQogCiAvLyBUaGUgUlRGIHJl
cHJlc2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxp
dHkgb2JqZWN0IHRoYXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAKaW5kZXggZjRlNTE3NTAxMWE3YWY4MDQyOWQ2MmQ2MTE5YzA4MzkwM2Nm
YTNkOC4uZTEzZTMzYzhmYTZkODJiNmY4YjZhMjM4NGQ5NWE4YmY0ODE4MGE4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmRldGFjaCgpCiAgICAgbV9w
b3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgPSB7IH07CiB9CiAKLVZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJh
bmdlJiByYW5nZSkKK1ZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4gdGV4dFJhbmdlOwogICAgIGZvciAoVGV4dEl0ZXJhdG9yIHRl
eHRJdGVyYXRvcihyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFk
dmFuY2UoKSkKQEAgLTY4LDEzICs2OCwxMyBAQCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcgogICAg
IHJldHVybiB0ZXh0UmFuZ2U7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjph
ZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7CiAgICAgZm9yIChhdXRv
IHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAgYWRkTWFya2Vy
KHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIodHlwZSwgdGV4dFBp
ZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNldCgpLCBkZXNjcmlwdGlvbikp
OwogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdlJiBy
YW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKK3ZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlKQogewogICAgIGZvciAoYXV0byB0ZXh0UGllY2UgOiBj
b2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0
YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKHR5cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZz
ZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSkpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzTWFya2VyKFJhbmdlJiByCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKFJhbmdlJiByYW5nZSwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGlj
dGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpCiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RU
ZXh0UmFuZ2VzKHJhbmdlKSkKICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250
YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIoRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3VsdCwg
dGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNldCgpLCBTdHJpbmco
KSwgVmVjdG9yPFN0cmluZz4oKSwgbWV0YWRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2OWUyNTRkNWU3MmYxNTc2YzMxZGMxN2Nl
ZjhiNmZjNzg4OWE3ZWM0Li4zNjJkNzQ3NDM0OWU0YmNmOGIzNjM5Y2RmNDEyY2E3OWEzYzhiMGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCkBA
IC00MCw2ICs0MCw4IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlcmVk
RG9jdW1lbnRNYXJrZXI7CiAKK3N0cnVjdCBTaW1wbGVSYW5nZTsKKwogY2xhc3MgRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ4LDE1
ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgfkRvY3VtZW50TWFya2VyQ29udHJvbGxlcigpOwogCiAg
ICAgdm9pZCBkZXRhY2goKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihSYW5n
ZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE1hcmtlcihjb25z
dCBTaW1wbGVSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYsIERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIGFkZE1h
cmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5v
ZGUmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6OkRhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UmLCBib29sIGFjdGl2ZU1hdGNo
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwg
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMsIGNvbnN0IFJldGFpblB0cjxpZD4m
IG1ldGFkYXRhKTsKICAgICB2b2lkIGFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNN
YXJrZXIoUmFuZ2UmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zKTsKLSAg
ICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihSYW5nZSYsIGNvbnN0IFJldGFpblB0cjxp
ZD4mIG1ldGFkYXRhKTsKKyAgICB2b2lkIGFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKTsKICNlbmRpZgogICAg
IHZvaWQgYWRkRHJhZ2dlZENvbnRlbnRNYXJrZXIoUmFuZ2UmKTsKIApAQCAtMTA3LDcgKzEwOSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZE1hcmtlcihOb2RlJiwgY29uc3Qg
RG9jdW1lbnRNYXJrZXImKTsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gY29sbGVjdFRleHRS
YW5nZXMoY29uc3QgUmFuZ2UmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gY29sbGVjdFRl
eHRSYW5nZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRl
cmVkRG9jdW1lbnRNYXJrZXI+IE1hcmtlckxpc3Q7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxOb2RlPiwgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxpc3Q+PiBNYXJrZXJNYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCmluZGV4IDk5M2U5NTFmMWE1MGE0ZGJhOWY5M2MxZTgxZmU1ZTJiMTdhZTdmOTgu
LmMyOGU3MDZiMTA1NmY2ZWE1ZTkwNDlkMDBhNDYyY2QzYTVhMTI3OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9u
JiwgY29uc3QgUG9zaXRpb24mKTsKIAogLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRoaXMg
dG8gIm1ha2UiIGluc3RlYWQgb2YgImNyZWF0ZSIgc2luY2Ugd2Ugbm9ybWFsbHkgdXNlICJjcmVh
dGUiIGZvciBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBoZWFwIG9iamVjdHMuCiBQb3NpdGlvbiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNldCk7Ci1Qb3Np
dGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwor
V0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1w
bGVSYW5nZS5jcHAKaW5kZXggYjRmZTJiODVkM2FmODVjYjgzMDc4ZDdhOWU1MTIxN2YxNDA1MDM2
YS4uYTQzMzhhYjIwZmM1MmYyZmYyN2RjYjViNzAyMDhhN2Y3YjMwNjI3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01Myw0ICs1MywyMyBAQCBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQogICAgIHJldHVybiBhLnN0
YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7CiB9CiAKKy8vIEZJWE1FOiBOb2RlOjpp
c0NoYXJhY3RlckRhdGEgc2hvdWxkIHVzZSBhbiBhbGdvcml0aG0gbGlrZSB0aGlzLCBzaW5jZSBJ
J20gYXNzdW1pbmcgaXQncyBmYXN0ZXIgdGhhbiB0aGUgaXNDaGFyYWN0ZXJEYXRhTm9kZSB2aXJ0
dWFsIGNhbGwgaW4gbW9zdCBjYXNlcy4KK3N0YXRpYyBib29sIGZhc3RJc0NoYXJhY3RlckRhdGEo
Y29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gIW5vZGUuaXNDb250YWluZXJOb2RlKCkg
JiYgKG5vZGUuaXNUZXh0Tm9kZSgpIHx8IG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKTsKK30K
KworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIE5vZGU6Omxlbmd0aCBzaW5jZSB0aGUgRE9NIHNw
ZWNpZmljYXRpb24gY2FsbHMgdGhpcyBhIG5vZGUncyBsZW5ndGguCitzdGF0aWMgdW5zaWduZWQg
bGVuZ3RoKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgaWYgKGZhc3RJc0NoYXJhY3RlckRhdGEo
bm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPihub2RlKS5sZW5n
dGgoKTsKKyAgICByZXR1cm4gbm9kZS5jb3VudENoaWxkTm9kZXMoKTsKK30KKworU2ltcGxlUmFu
Z2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCit7CisgICAgcmV0
dXJuIHsgeyBub2RlLCAwIH0sIHsgbm9kZSwgbGVuZ3RoKG5vZGUpIH0gfTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBhY2Q5ODU1YTg5MTljMzc2ZTE1N2QxY2VkOWM1ZGVl
ZDdhMTk1NzI0Li5iZDBlMWM0ZWNkMGEwMTg0MzdmMTk5MDQ2ZTU1N2RjYTJjYzI3MTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNTEsNiArNTEsOSBAQCBzdHJ1Y3QgU2ltcGxlUmFu
Z2UgewogICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mKTsKIH07CiAKK1NpbXBsZVJh
bmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYpOworV0VCQ09SRV9FWFBPUlQgU2ltcGxl
UmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmKTsKKwogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogaW5saW5l
IFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CmluZGV4IGViZDRjYWIzMjZmMmMwOTc1NTQwY2IxZDZmOWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2
ZGQwYjNiNzhkZGJkMzIyYzMxMzM0ZTY4ODA2Zjk4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1
OTksMTggQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZl
VGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZShyYW5nZS5jbG9uZVJhbmdlKCksIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsK
IAogICAgIC8vIFJlY2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwg
c2luY2UgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtb2RpZmllZCB0aGUgRE9NLCBzdWNoIHRo
YXQgdGhlIG9yaWdpbmFsIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8g
bG9uZ2VyIHZhbGlkLiBSYWRhcjogMTAzMDUzMTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgYXV0byB1
cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgodHJlZVNjb3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBo
T2Zmc2V0SW5UcmVlU2NvcGUsIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCArIGFsdGVybmF0
aXZlLmxlbmd0aCgpKTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uKQorICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJl
Y3Rpb24gPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKHRyZWVTY29wZVJvb3QpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSk7CisgICAg
YXV0byB1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBtYWtlQm91bmRh
cnlQb2ludChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGlm
ICghdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgc2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LmdldCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIGF1
dG8gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJh
Z3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3Jh
cGgsIGFsdGVybmF0aXZlLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2
ZUxlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSBhbHRlcm5hdGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRv
IHJlcGxhY2VtZW50UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdy
YXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiwgKnVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWlu
aW5nQ29ycmVjdGlvbiB9LCB7IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRp
dmVMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJl
cGxhY2VtZW50IHN1Y2NlZWRlZC4KLSAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2Uu
Z2V0KCkpICE9IGFsdGVybmF0aXZlKQorICAgIGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5n
ZSkgIT0gYWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG1hcmtlcnMg
PSByZXBsYWNlbWVudFJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpOworICAgIGF1dG8m
IG1hcmtlcnMgPSByZXBsYWNlbWVudFJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpOwog
ICAgIGZvciAoYXV0byBtYXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKICAgICAgICAgbWFy
a2Vycy5hZGRNYXJrZXIocmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3Jp
cHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlw
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApp
bmRleCBiYjkyYzAyMTIxYTNiN2IzOTJmNTI5ZjhhYjc2ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhh
ZDI1MTI5NmI0MzkyYjZhOWJjNjdmNWViMGQ4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMjgzLDEyICsyODMsOSBAQCB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAg
ICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5l
eHQoKTsKICAgICB9CiAgICAgCi0gICAgewotICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBzdGFydElu
ZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIGVuZEluZGV4LCAwLCB0cnVlKTsK
LSAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCi0gICAgICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgIH0KKyAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqc2NvcGUpLCBzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9y
RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICB1cGRhdGVT
dGFydEVuZChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVBy
b3BlcnRpZXMqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFy
YWN0ZXJSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU5MzZmZTJkNjEyYjdmMzNkZjFiMjk2MzdlYWQ0NGJiOTM2YWY2ZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKQEAg
LTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBVU0Uo
Q0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNlbmRpZgor
CisjaWYgVVNFKEZPVU5EQVRJT04pCit0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQ2hhcmFjdGVyQ291bnQgPSBz
dGQ6OnNpemVfdDsKKworc3RydWN0IENoYXJhY3RlclJhbmdlIHsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBsb2NhdGlvbiB7IDAgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAwIH07CisKKyNp
ZiBVU0UoQ0YpCisgICAgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBvcGVyYXRvciBOU1JhbmdlKCkgY29uc3Q7CisjZW5kaWYKK307
CisKKyNpZiBVU0UoQ0YpCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJh
bmdlKENGUmFuZ2UpOworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKK09wdGlvbmFsPENo
YXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisjZW5kaWYKKworLy8g
aW5saW5lcworCisjaWYgVVNFKENGKQorCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9y
IENGUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBDRlJhbmdlTWFrZShsb2NhdGlvbiwgbGVu
Z3RoKTsKK30KKworaW5saW5lIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVy
UmFuZ2UoQ0ZSYW5nZSByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gPT0ga0NG
Tm90Rm91bmQgfHwgcmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKHJhbmdlLmxlbmd0
aCA+PSAwKTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPCAwIHx8IHJhbmdlLmxlbmd0aCA8IDAp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJhY3RlclJhbmdl
IHsgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nh
c3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxlbmd0aCkgfTsKK30KKworI2VuZGlmCisKKyNpZiBV
U0UoRk9VTkRBVElPTikgJiYgZGVmaW5lZChfX09CSkNfXykKKworaW5saW5lIENoYXJhY3RlclJh
bmdlOjpvcGVyYXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
bG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4g
bWFrZUNoYXJhY3RlclJhbmdlKE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIENoYXJhY3RlclJhbmdlIHsgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCB9OworfQor
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxNTRiYjg3YzMzMWQ0MWQ5MTYx
NjJlN2Q5MTEwZDQ3ODgyN2QxYzcwLi40NmMyNTE3MmViMmJlZGFmMjVlNzkzMjNmNWJmMzgyMzlj
YTEwYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAg
ICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9PSBkZXN0aW5hdGlvbikKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgaW50IGVuZEluZGV4ID0g
LTE7CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IHN0YXJ0SW5kZXg7CisgICAgT3B0aW9u
YWw8Q2hhcmFjdGVyQ291bnQ+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlv
bmFsID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2
ZVNlbGVjdGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFy
dCgpOwpAQCAtMTUyOCwxNiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAg
IGlmIChzdHlsZUluRW1wdHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkK
ICAgICAgICAgYXBwbHlTdHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAg
aWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJl
c2VydmVTZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAgICAgICAvLyBG
cmFnbWVudCBjcmVhdGlvbiAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJl
Z3VsYXIKICAgICAgICAgLy8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2Vz
IHRoYXQgd2VyZSByZW5kZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBjYXVzZXMgc3Bh
Y2VzIHRvIGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1
bHRzCiAgICAgICAgIC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3
aXRoIGEgbG9jYXRpb24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAo
d2hpY2ggd2lsbCByZXR1cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQo
KSwgZGVzdGluYXRpb25JbmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
ZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUp
OwotICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBv
c2l0aW9uKCksIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOworICAgICAgICBh
dXRvIHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRl
c3RpbmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgYXV0byBlbmQgPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICpl
bmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgRE9XTlNU
UkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKaW5kZXggNjA0N2I5NDY0M2UzZDVlYTU3M2FmYmRjZjY3NmIyMDExYWM4
NzVmNy4uZGZiYTcyMWY1ZWFkM2EyMDNlZDZmNjRiOWJjMDVlYWQyMzllYzMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE0LDEyICsxMTE0LDEwIEBAIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpCiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChp
bnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1
ZSk7Ci0gICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBv
cGVyYXRpb25zIGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAotICAgIC8vIG9mIHByb2JsZW1z
IHdpdGggVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMuCi0gICAgaWYgKCFyYW5nZSkKKyAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4geyB9
OwotICAgIHJldHVybiB7IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkgfTsKKyAgICBDaGFyYWN0ZXJD
b3VudCBpbmRleEFzQ2hhcmFjdGVyQ291bnQgPSBpbmRleDsKKyAgICByZXR1cm4geyBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBpbmRleEFzQ2hhcmFjdGVyQ291bnQsIFRleHRJ
dGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0K
IAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJ
dGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggNDNhYzBmYzAxMDk1MmJhYzRmMTA2ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uYjY5NDg5Zjc2
NTc1ZDVmYTI4M2JlY2FkMDRjOTEyZWVkOTBkYzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMjIyMywxNSArMjIyMywxNSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5k
Tm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAg
IGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRP
ZmZzZXQoKTsKICAgICAKLSAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOworICAgIENoYXJh
Y3RlckNvdW50IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1t
YXJEZXRhaWw7Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAgIENoYXJhY3Rl
ckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1h
clNlYXJjaFJhbmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwogICAgIFN0cmluZyBt
aXNzcGVsbGVkV29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7Ci0gICAgaW50IGZv
dW5kT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBmb3VuZE9mZnNldCA9IDA7CiAgICAg
U3RyaW5nIGZvdW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5n
ZTsKICAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBAIC0yMzA3LDEwICsy
MzA3LDEwIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFy
dEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBz
byB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIEFT
U0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAgIEFTU0VSVChncmFt
bWFyRGV0YWlsLmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7Cisg
ICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICAK
ICAgICAgICAgLy8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91Ymxl
ZCBwdW5jdHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFk
R3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdl
LCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRl
dGFpbC5sZW5ndGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFy
YWN0ZXJSYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBn
cmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCB9
KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1f
ZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApAQCAtMjMyMiw3
ICsyMzIyLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0
YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBi
dXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1
cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIg
c28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAgICAgICAgYXV0
byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJj
aFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOworICAg
ICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxp
bmdTZWFyY2hSYW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkgfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAgICAgICBtX2ZyYW1l
LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAgLTI3NzMsNyArMjc3
Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNraW5nKFJhbmdlJiBy
YW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFwcGx5KCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1Bh
cmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9S
ZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGlu
dCByZXN1bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZp
bmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgs
IFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgQ2hhcmFj
dGVyQ291bnQgcmVzdWx0TG9jYXRpb24sIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCkKIHsK
ICAgICBhdXRvJiBzY29wZSA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJh
Z3JhcGhSYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSk7CiAKQEAgLTI3ODYsMTAg
KzI3ODYsOSBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogICAgIC8vIFRleHRDaGVja2luZ1Bh
cmFncmFwaCBtYXkgYmUgb3JwaGFuZWQgYWZ0ZXIgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBt
dXRhdGVkIERPTS4KICAgICAvLyBTZWUgPHJkYXI6Ly8xMDMwNTMxNT4sIGh0dHA6Ly93ZWJraXQu
b3JnL2IvODk1MjYuCiAKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFwaExv
Y2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExl
bmd0aCk7Ci0KLSAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3Vi
cmFuZ2UoKm5ld1BhcmFncmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVu
Z3RoKCkpOwotICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNr
aW5nUmFuZ2UuY29weVJlZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJh
Z3JhcGhSYW5nZS5nZXQoKSk7CisgICAgYXV0byBuZXdQYXJhZ3JhcGhSYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHBh
cmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAt
IHJlc3VsdExlbmd0aCB9KTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShuZXdQYXJhZ3JhcGhSYW5nZSwgeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnQubGVuZ3RoKCkgfSk7CisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBo
KGNyZWF0ZUxpdmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2Uoc3Bl
bGxDaGVja2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKG5ld1BhcmFncmFwaFJhbmdlKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBA
IC0yODExLDcgKzI4MTAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3Qg
U3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogI2VuZGlmCiAKICAg
ICAvLyBFeHBhbmQgdGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2lu
Y2UgdGV4dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KLSAgICBpbnQgc2VsZWN0
aW9uT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBzZWxlY3Rpb25PZmZzZXQgPSAwOwog
ICAgIGJvb2wgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSBmYWxzZTsKICAgICBib29sIHNl
bGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKICAgICBib29sIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNo
YW5nZSA9IGZhbHNlOwpAQCAtMjgyMyw5ICsyODIyLDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRS
ZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8
VGUKICAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gcGFy
YWdyYXBoLm9mZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
ICAgICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgu
dGV4dExlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEp
ID09IG5ld2xpbmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+
IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgfHwgcGFy
YWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkK
ICAgICAgICAgICAgICAgICBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9m
ZnNldCA8PSBwYXJhZ3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFy
YWN0ZXIocGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkpKQorICAgICAg
ICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFn
cmFwaC50ZXh0KCkubGVuZ3RoKCkgJiYgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3RlcihwYXJh
Z3JhcGgudGV4dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdKSkKICAgICAgICAgICAgICAgICB1c2VB
bWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODMz
LDE0ICsyODMyLDE0IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVs
bENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgaW50IG9mZnNldER1
ZVRvUmVwbGFjZW1lbnQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3Vs
dHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgY29uc3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZz
ZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0g
ICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlw
ZTsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlv
biArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5n
dGggPSByZXN1bHRzW2ldLmxlbmd0aDsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0
aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCBh
dXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsg
b2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdS
YW5nZUVuZE9mZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBs
YWNlbWVudDsKKyAgICAgICAgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tp
XS50eXBlOworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNb
aV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFy
YWN0ZXJDb3VudCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLnJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJl
c3VsdExlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRF
bmRMb2NhdGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJh
Z3JhcGguYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1l
bnQ7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1bHRzW2ldLnJlcGxh
Y2VtZW50OwotICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5
ID0gdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSBy
ZXN1bHRFbmRMb2NhdGlvbjsKKyAgICAgICAgYm9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3Vu
ZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEg
PD0gcmVzdWx0RW5kTG9jYXRpb247CiAKICAgICAgICAgLy8gT25seSBtYXJrIG1pc3NwZWxsaW5n
IGlmOgogICAgICAgICAvLyAxLiBDdXJyZW50IHRleHQgY2hlY2tpbmcgaXNuJ3QgZG9uZSBmb3Ig
YXV0b2NvcnJlY3Rpb24sIGluIHdoaWNoIGNhc2Ugc2hvdWxkTWFya1NwZWxsaW5nIGlzIGZhbHNl
LgpAQCAtMjg1MCwxNiArMjg0OSwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
Y29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYm
IHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcKICAgICAgICAgICAgICYm
IHJlc3VsdExvY2F0aW9uID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0RW5k
TG9jYXRpb24gPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1
b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJl
c3VsdExvY2F0aW9uID49IDApOwotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0g
cGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAg
ICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0
TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKICAgICAgICAgICAgIGlmICghbV9hbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1Jhbmdl
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3Nw
ZWxsaW5nUmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOwotICAg
ICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1
bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1h
cmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBw
YXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5n
dGggfSkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExv
Y2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHRzW2ld
LmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDAgJiYg
ZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hl
Y2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWls
Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBw
YXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFp
bC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCAmJiBkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYgKHBh
cmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFu
Z2UubG9jYXRpb24sIGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2Nh
dGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAg
ICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2Vy
OjpHcmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0yODc3LDcgKzI4NzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZQogICAgICAgICAgICAgLy8gMi4gVGhlIHJlc3VsdCBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3Vv
dXMgYm91bmRhcnkuCiAgICAgICAgICAgICAvLyAgICAoRklYTUU6IHRoaXMgaXMgcmVxdWlyZWQg
dW50aWwgNjg1MzAyNyBpcyBmaXhlZCBhbmQgdGV4dCBjaGVja2luZyBjYW4gZG8gdGhpcyBmb3Ig
dXMKICAgICAgICAgICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50Lmxlbmd0aCgp
ID4gMCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnk7Ci0gICAgICAgICAgICBhdXRv
IHJhbmdlVG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1
bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5z
dWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAKICAgICAgICAgICAg
IC8vIEFkZGluZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRo
ZXkgYXJlIHR5cGVkLgogICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZTo6TGluayAmJiBzZWxlY3Rpb25PZmZzZXQgIT0gcmVzdWx0RW5kTG9jYXRpb24gKyAxKQpA
QCAtMjkyMiw3ICsyOTIxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0
IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciByZXN1bHRzIGZvciB0
aGUgcmVwbGFjZWQgdGV4dC4KLSAgICAgICAgICAgICAgICB3aGlsZSAoaSArIDEgPCByZXN1bHRz
LnNpemUoKSAmJiByZXN1bHRzW2kgKyAxXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1l
bnQgPD0gcmVzdWx0TG9jYXRpb24pCisgICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVz
dWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVU
b1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBpKys7
CiAKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKQEAgLTI5MzEsNyAr
MjkzMCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNr
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAog
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkNvcnJl
Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcGFy
YWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJy
YW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKICAgICAgICAg
ICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0
cmluZywgcmVwbGFjZW1lbnRSYW5nZS5wdHIoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8g
QWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5k
IHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KQEAgLTI5NDUsOCArMjk0NCw4IEBAIHZvaWQgRWRpdG9y
OjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgVmVjdG9yPFRlCiAgICAgICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBleHRlbmRlZFBhcmFn
cmFwaChXVEZNb3ZlKHBhcmFncmFwaCkpOwogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBw
b3NpdGlvbiBpZiB3ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwogICAgICAgICBleHRlbmRl
ZFBhcmFncmFwaC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwotICAgICAgICBpZiAocmVzdG9yZVNl
bGVjdGlvbkFmdGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9m
ZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0
aW9uT2Zmc2V0KTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBz
ZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgeworICAg
ICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdl
KHsgMCwgc2VsZWN0aW9uT2Zmc2V0IH0pOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24o
KS5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAg
ICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CkBA
IC0yOTczLDcgKzI5NzIsOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBtX2FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXItPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNw
b25zZTo6UmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRl
eHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7CiAgICAgcmVwbGFjZVNl
bGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIFNt
YXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7Ci0gICAgYXV0byBjaGFuZ2VkUmFu
Z2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFj
ZWRTdHJpbmcubGVuZ3RoKCkpOworICAgIENoYXJhY3RlckNvdW50IHJlcGxhY2VkU3RyaW5nTGVu
Z3RoQXNDaGFyYWN0ZXJDb3VudCA9IHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8g
Y2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcGFyYWdyYXBoLmNoZWNraW5nU3Rh
cnQoKSwgcmVwbGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogICAgIGNoYW5n
ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIo
Y2hhbmdlZFJhbmdlLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAg
ICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2Up
OwogI2Vsc2UKQEAgLTM3NzcsMTIgKzM3NzcsMTIgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZv
clRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcK
IAogICAgICAgICBBU1NFUlQoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8
IGxlbmd0aCk7CiAKLSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9z
aXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdl
TGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7
CisgICAgICAgIENoYXJhY3RlckNvdW50IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9u
ICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5n
ZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAx
OwogCi0gICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdl
LCBzdWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5n
ZUxlbmd0aCB9KTsKIAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJhbmdlLnB0cigp
KTsKKyAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2Uoc3VicmFuZ2Up
KTsKICAgICAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoc3Vi
cmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5u
ZXJQb3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTM5OTIsMTQgKzM5OTIs
MTQgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVl
c3QoKSBjb25zdAogCiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdS
ZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYg
KCFyZXN1bHQubGVuZ3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdlLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5nZSA9IGNvbnRl
eHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5n
ZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdC5yYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5k
ZXggYWQ4Mjc4ODljYWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1ZTM3NC4uZjgzMjcyYzI4ZjBh
MGQ3ZDY3YzBlNzEyMjRhNzdhYzk0MWVhZjUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMg
dm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3Ry
aW5nVmlldyB0ZXh0LCBWZQogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBiYWRHcmFtbWFy
OwogICAgICAgICBiYWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwot
ICAgICAgICBiYWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJM
b2NhdGlvbjsKLSAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOwor
ICAgICAgICBiYWRHcmFtbWFyLnJhbmdlLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdy
YW1tYXJMb2NhdGlvbjsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sZW5ndGggPSBiYWRHcmFt
bWFyTGVuZ3RoOwogICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1t
YXJEZXRhaWxzKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7CiAKQEAgLTk3
LDkgKzk3LDkgQEAgc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVu
dCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjwKIAogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nOwogICAgICAgICAgICAgbWlzc3BlbGxpbmcudHlwZSA9
IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubG9j
YXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICAgICAgbWlz
c3BlbGxpbmcubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7Ci0gICAgICAgICAgICBtaXNzcGVs
bGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNz
cGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5sb2NhdGlvbiwgbWlzc3BlbGxp
bmcubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAgICAgbWlzc3Bl
bGxpbmcucmFuZ2UubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwor
ICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7
CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGlu
Zy5yYW5nZS5sb2NhdGlvbiwgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobWlzc3BlbGxpbmcpOwog
ICAgICAgICB9CiAKQEAgLTEzOSwxNCArMTM5LDEzIEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpleHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6
aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQu
cmVzZXQoKTsKLSAgICBtX2NoZWNraW5nRW5kLnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBs
YWNlbWVudFN0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5y
ZXNldCgpOwogICAgIG1fb2Zmc2V0QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3Ry
aW5nKCk7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29u
c3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFuZ2VMZW5ndGgoKSBj
b25zdAogewogICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSgpKTsKIH0K
QEAgLTE1OCwxMiArMTU3LDEyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnBhcmFn
cmFwaFJhbmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVJl
ZjxSYW5nZT4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0CitSZWY8UmFuZ2U+IFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6c3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hhcmFjdGVyT2Zm
c2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgcmFuZ2UpKTsKIH0KIAotRXhjZXB0aW9u
T3I8aW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbikgY29uc3QKK0V4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKIHsKICAg
ICBhdXRvIHN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UoKS5zdGFydFBv
c2l0aW9uKCkpOwogICAgIGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pOwpA
QCAtMTg3LDM1ICsxODYsMzMgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0
QXNSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX29mZnNldEFzUmFuZ2U7CiB9CiAKLWNvbnN0
IFN0cmluZyYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKK1N0cmluZ1ZpZXcg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0Lmlz
RW1wdHkoKSkKKyAgICBpZiAobV90ZXh0LmlzTnVsbCgpKQogICAgICAgICBtX3RleHQgPSBwbGFp
blRleHQoJnBhcmFncmFwaFJhbmdlKCkpOwogICAgIHJldHVybiBtX3RleHQ7IAogfQogCi1pbnQg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNv
dW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NoZWNraW5nU3RhcnQpCiAgICAgICAgIG1fY2hlY2tpbmdTdGFydCA9IGNoYXJhY3Rl
ckNvdW50KG9mZnNldEFzUmFuZ2UoKSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5nU3RhcnQ7CiB9
CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kKCkgY29uc3QKK0NoYXJh
Y3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBjb25zdAogewot
ICAgIGlmICghbV9jaGVja2luZ0VuZCkKLSAgICAgICAgbV9jaGVja2luZ0VuZCA9IGNoZWNraW5n
U3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7Ci0gICAgcmV0dXJuICptX2NoZWNraW5nRW5kOwor
ICAgIHJldHVybiBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJD
b3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fY2hlY2tpbmdMZW5ndGgpCiAgICAgICAgIG1fY2hlY2tpbmdMZW5ndGggPSBjaGFy
YWN0ZXJDb3VudChtX2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAqbV9jaGVja2luZ0xlbmd0
aDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRT
dGFydCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
OwpAQCAtMjI5LDcgKzIyNiw3IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRp
Y1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNl
bWVudFN0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBs
YWNlbWVudExlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoOwpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgVGV4dENoZWNraW5nSGVscGVyOjpU
ZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKIAog
VGV4dENoZWNraW5nSGVscGVyOjp+VGV4dENoZWNraW5nSGVscGVyKCkgPSBkZWZhdWx0OwogCi1T
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0
TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0Fs
bCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAgIGZpcnN0TWlz
c3BlbGxpbmdPZmZzZXQgPSAwOwogCiAgICAgU3RyaW5nIGZpcnN0TWlzc3BlbGxpbmc7Ci0gICAg
aW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudENo
dW5rT2Zmc2V0ID0gMDsKIAogICAgIGZvciAoV29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZSk7
ICFpdC5hdEVuZCgpOyBjdXJyZW50Q2h1bmtPZmZzZXQgKz0gaXQudGV4dCgpLmxlbmd0aCgpLCBp
dC5hZHZhbmNlKCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gaXQudGV4dCgpOwpAQCAt
Mjc3LDE3ICsyNzQsMTcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogICAgICAgICBpZiAo
bWlzc3BlbGxpbmdMb2NhdGlvbiA+PSAwICYmIG1pc3NwZWxsaW5nTGVuZ3RoID4gMCAmJiBtaXNz
cGVsbGluZ0xvY2F0aW9uIDwgdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0
TGVuZ3RoICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0
TGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdlIG9mIG1pc3NwZWxsZWQgd29y
ZAotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJy
YW5nZShtX3JhbmdlLCBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBt
aXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobV9yYW5nZSwgeyBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNz
cGVsbGluZ0xvY2F0aW9uLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4obWlzc3BlbGxpbmdM
ZW5ndGgpIH0pOwogCiAgICAgICAgICAgICAvLyBSZW1lbWJlciBmaXJzdC1lbmNvdW50ZXJlZCBt
aXNzcGVsbGluZyBhbmQgaXRzIG9mZnNldC4KICAgICAgICAgICAgIGlmICghZmlyc3RNaXNzcGVs
bGluZykgewogICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQgPSBjdXJyZW50
Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwogICAgICAgICAgICAgICAgIGZpcnN0
TWlzc3BlbGxpbmcgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVs
bGluZ0xlbmd0aCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5n
UmFuZ2UgPSBtaXNzcGVsbGluZ1JhbmdlLnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgLy8gU3RvcmUgbWFya2VyIGZvciBtaXNzcGVsbGVkIHdv
cmQuCi0gICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmcpOworICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS5zdGFydC5kb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UncmUgbWFya2luZyBv
bmx5IHRoZSBmaXJzdCBtaXNzcGVsbGluZywgYW5kIG5vdCBhbGwgaW5zdGFuY2VzLgogICAgICAg
ICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtMjk4LDcgKzI5NSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vCiAgICAgcmV0dXJuIGZpcnN0TWlzc3BlbGxpbmc7CiB9CiAKLVN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdy
YW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9v
bCYgb3V0SXNTcGVsbGluZywgQ2hhcmFjdGVyQ291bnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdy
YW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCiB7CiAgICAgaWYgKCF1bmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMzEzLDgg
KzMxMCw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5n
T3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQg
cGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRv
IHJldHVybi4KICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gMDsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3Jh
bW1hckRldGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRp
b24gPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRH
cmFtbWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJE
ZXNjcmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0zMzQsOCArMzMxLDggQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIo
Ym9vbCBjaGVja0dyYW1tYXIsIGIKICAgICB3aGlsZSAodG90YWxMZW5ndGhQcm9jZXNzZWQgPCB0
b3RhbFJhbmdlTGVuZ3RoKSB7CiAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2VhcmNo
IHJhbmdlIGJ5IHBhcmFncmFwaHMsIGNoZWNraW5nIGVhY2ggb25lIGZvciBzcGVsbGluZyBhbmQg
Z3JhbW1hci4KICAgICAgICAgYXV0byBjdXJyZW50TGVuZ3RoID0gY2hhcmFjdGVyQ291bnQocGFy
YWdyYXBoUmFuZ2UpOwotICAgICAgICBpbnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVy
YXRpb24gPyByYW5nZVN0YXJ0T2Zmc2V0IDogMDsKLSAgICAgICAgaW50IGN1cnJlbnRFbmRPZmZz
ZXQgPSBjdXJyZW50TGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBjdXJyZW50U3RhcnRP
ZmZzZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOworICAgICAgICBD
aGFyYWN0ZXJDb3VudCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKICAgICAgICAg
aWYgKGluU2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBtX3Jh
bmdlLT5lbmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFy
YWN0ZXIgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlIHRv
IHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIHdpbGwg
d2FudCB0byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCkBAIC0zNDYsOSArMzQzLDkgQEAg
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1t
YXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgIFN0cmluZyBwYXJhZ3JhcGhTdHJp
bmcgPSBwbGFpblRleHQocGFyYWdyYXBoUmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgaWYgKHBh
cmFncmFwaFN0cmluZy5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5k
R3JhbW1hciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ0xvY2F0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0gMDsKLSAgICAg
ICAgICAgICAgICBpbnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsKKyAgICAgICAgICAgICAg
ICBDaGFyYWN0ZXJDb3VudCBzcGVsbGluZ0xvY2F0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBD
aGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAg
IENoYXJhY3RlckNvdW50IGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IDA7CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgZ3JhbW1hckRldGFpbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwpAQCAtMzYx
LDQyICszNTgsNDIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBj
aGVja1RleHRPZlBhcmFncmFwaCgqbV9jbGllbnQudGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoU3Ry
aW5nLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgICAg
ICAgICAgICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcmVz
dWx0LmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyBy
ZXN1bHQubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
bGxpbmdMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRp
b24sIHJlc3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uID49
IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyByZXN1bHQucmFu
Z2UubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmlu
ZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZTo6R3JhbW1hciAmJiByZXN1bHQubG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJl
c3VsdC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoID4gMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LmxvY2F0aW9uID49IDApOworICAgICAgICAg
ICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC50eXBlID09IFRleHRDaGVja2lu
Z1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNl
dCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyByZXN1bHQucmFuZ2UubGVuZ3RoID4gY3VycmVu
dFN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJh
bmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5y
YW5nZS5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0
IHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGdyYW1tYXIgcmVzdWx0LCBzaW5jZSB0aGVyZSBtaWdodCBz
dGlsbCBiZSBhIHNwZWxsaW5nIHJlc3VsdCBhZnRlcgogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaXQgYmVnaW5zIGJ1dCBiZWZvcmUgdGhlIGZpcnN0IGRldGFpbCBpbiBpdCwgYnV0IHdlIGNh
biBzdG9wIGlmIHdlIGZpbmQgYSBzZWNvbmQgZ3JhbW1hciByZXN1bHQuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZm91bmRHcmFtbWFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHJlc3VsdC5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC5kZXRhaWxzW2pdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9uID49IDApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubG9jYXRpb24gKyBkZXRhaWwt
PmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyBkZXRh
aWwtPmxvY2F0aW9uICsgZGV0YWlsLT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCAmJiAoIWZv
dW5kR3JhbW1hciB8fCByZXN1bHQubG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uIDwgZ3JhbW1h
ckRldGFpbExvY2F0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXRhaWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxvY2F0aW9u
ID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwt
PnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNl
dCAmJiAoIWZvdW5kR3JhbW1hciB8fCByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJh
bmdlLmxvY2F0aW9uIDwgZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncmFtbWFyRGV0YWlsSW5kZXggPSBqOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSByZXN1bHQubG9jYXRpb24g
KyBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFt
bWFyRGV0YWlsTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdl
LmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEdyYW1tYXIg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQu
bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZUxvY2F0
aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dEdyYW1tYXJEZXRhaWwgPSByZXN1bHQuZGV0YWlsc1tncmFtbWFyRGV0YWlsSW5kZXhdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGhT
dHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlz
RW1wdHkoKSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8
fCBzcGVsbGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJl
bnRTdGFydE9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxp
bmdPZmZzZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgc3BlbGxpbmdPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQo
bV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJh
bmdlLT5zdGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxs
aW5nID0gdHJ1ZTsKQEAgLTQwNSw3ICs0MDIsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhy
YXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIENo
YXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24g
LSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVy
YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IGNo
YXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSksICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9
KTsKICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwpAQCAtNDI4LDE4
ICs0MjUsMTggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKIAogI2lmIFVTRShHUkFNTUFSX0NI
RUNLSU5HKQogCi1pbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWls
KGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIGludCBiYWRHcmFt
bWFyUGhyYXNlTG9jYXRpb24sIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCBt
YXJrQWxsKSBjb25zdAoraW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRl
dGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBDaGFyYWN0
ZXJDb3VudCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIENoYXJhY3RlckNvdW50IHN0YXJ0T2Zm
c2V0LCBDaGFyYWN0ZXJDb3VudCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKIHsKICAg
ICAvLyBGb3VuZCBzb21lIGJhZCBncmFtbWFyLiBGaW5kIHRoZSBlYXJsaWVzdCBkZXRhaWwgcmFu
Z2UgdGhhdCBzdGFydHMgaW4gb3VyIHNlYXJjaCByYW5nZSAoaWYgYW55KS4KICAgICAvLyBPcHRp
b25hbGx5IGFkZCBhIERvY3VtZW50TWFya2VyIGZvciBlYWNoIGRldGFpbCBpbiB0aGUgcmFuZ2Uu
Ci0gICAgaW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IC0xOworICAgIENoYXJhY3Rl
ckNvdW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IDA7CiAgICAgaW50IGVhcmxpZXN0
RGV0YWlsSW5kZXggPSAtMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRl
dGFpbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWls
ID0gJmdyYW1tYXJEZXRhaWxzW2ldOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sZW5ndGggPiAw
KTsKLSAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRpb24gPj0gMCk7CisgICAgICAgIEFTU0VS
VChkZXRhaWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5n
ZS5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgCi0gICAgICAgIGludCBkZXRhaWxTdGFydE9mZnNl
dEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlv
bjsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9
IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAg
ICAgIAogICAgICAgICAvLyBTa2lwIHRoaXMgZGV0YWlsIGlmIGl0IHN0YXJ0cyBiZWZvcmUgdGhl
IG9yaWdpbmFsIHNlYXJjaCByYW5nZQogICAgICAgICBpZiAoZGV0YWlsU3RhcnRPZmZzZXRJblBh
cmFncmFwaCA8IHN0YXJ0T2Zmc2V0KQpAQCAtNDUwLDMwICs0NDcsMzAgQEAgaW50IFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mIGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYg
KG1hcmtBbGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBzdGFydE9m
ZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGJh
ZEdyYW1tYXJSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRN
YXJrZXIoYmFkR3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51
c2VyRGVzY3JpcHRpb24pOworICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UobV9yYW5nZS5nZXQoKSwgeyBiYWRHcmFtbWFyUGhyYXNlTG9jYXRp
b24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24sIGRldGFpbC0+cmFuZ2Uu
bGVuZ3RoIH0pOworICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLnN0YXJ0LmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFt
bWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIFJlbWVtYmVyIHRoaXMgZGV0YWlsIG9ubHkgaWYgaXQncyBlYXJsaWVyIHRoYW4gb3Vy
IGN1cnJlbnQgY2FuZGlkYXRlICh0aGUgZGV0YWlscyBhcmVuJ3QgaW4gYSBndWFyYW50ZWVkIG9y
ZGVyKQotICAgICAgICBpZiAoZWFybGllc3REZXRhaWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRh
aWxMb2NhdGlvblNvRmFyID4gZGV0YWlsLT5sb2NhdGlvbikgeworICAgICAgICBpZiAoZWFybGll
c3REZXRhaWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID4gZGV0YWls
LT5yYW5nZS5sb2NhdGlvbikgewogICAgICAgICAgICAgZWFybGllc3REZXRhaWxJbmRleCA9IGk7
Ci0gICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSBkZXRhaWwtPmxvY2F0
aW9uOworICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gZGV0YWlsLT5y
YW5nZS5sb2NhdGlvbjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gZWFybGll
c3REZXRhaWxJbmRleDsKIH0KIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1t
YXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK1N0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFp
bCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3QKIHsKICAgICAvLyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJl
IHVwZGF0ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgotICAgIG91dEdyYW1tYXJE
ZXRhaWwubG9jYXRpb24gPSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7Cisg
ICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRl
dGFpbC5yYW5nZS5sZW5ndGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVh
cigpOwogICAgIG91dEdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmco
KTsKICAgICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICAKLSAgICBTdHJpbmcgZmly
c3RCYWRHcmFtbWFyUGhyYXNlOworICAgIFN0cmluZ1ZpZXcgZmlyc3RCYWRHcmFtbWFyUGhyYXNl
OwogCiAgICAgLy8gRXhwYW5kIHRoZSBzZWFyY2ggcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBw
YXJhZ3JhcGhzLCBzaW5jZSBncmFtbWFyIGNoZWNraW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0
LgogICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBzdGFydCBv
ZiB0aGUgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdl
LApAQCAtNDgxLDExICs0NzgsMTEgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgIFRleHRD
aGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgobV9yYW5nZS5jb3B5UmVmKCkpOwogICAgIAogICAg
IC8vIFN0YXJ0IGNoZWNraW5nIGZyb20gYmVnaW5uaW5nIG9mIHBhcmFncmFwaCwgYnV0IHNraXAg
cGFzdCByZXN1bHRzIHRoYXQgb2NjdXIgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwg
c2VhcmNoIHJhbmdlLgotICAgIGZvciAoaW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQg
PCBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKTsgKSB7CisgICAgZm9yIChDaGFyYWN0ZXJDb3VudCBz
dGFydE9mZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkg
ewogICAgICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZ3JhbW1hckRldGFpbHM7CiAgICAgICAg
IGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPSAtMTsKICAgICAgICAgaW50IGJhZEdyYW1t
YXJQaHJhc2VMZW5ndGggPSAwOwotICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVj
a0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3KHBhcmFncmFwaC50ZXh0KCkpLnN1YnN0cmluZyhz
dGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCAm
YmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCkt
PmNoZWNrR3JhbW1hck9mU3RyaW5nKHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKHN0YXJ0T2Zm
c2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sICZiYWRHcmFt
bWFyUGhyYXNlTGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghYmFkR3JhbW1hclBocmFz
ZUxlbmd0aCkgewogICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9
PSAtMSk7CkBAIC01MDYsNyArNTAzLDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAg
ICAvLyBrZXB0IGdvaW5nIHNvIHdlIGNvdWxkIG1hcmsgYWxsIGluc3RhbmNlcykuCiAgICAgICAg
IGlmIChiYWRHcmFtbWFySW5kZXggPj0gMCAmJiBmaXJzdEJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uIC0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKTsKLSAgICAgICAgICAgIGZp
cnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKGJhZEdyYW1tYXJQ
aHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgICAgICBmaXJz
dEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBGb3VuZCBvbmUuIFdlJ3JlIGRvbmUgbm93LCB1bmxlc3Mgd2UncmUgbWFy
a2luZyBlYWNoIGluc3RhbmNlLgogICAgICAgICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtNTE4LDcg
KzUxNSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIo
R3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwKICAgICAgICAgc3RhcnRPZmZzZXQgPSBi
YWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoOwogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlOworICAgIHJldHVybiBmaXJz
dEJhZEdyYW1tYXJQaHJhc2UudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0CkBAIC01MjksNyArNTI2LDcgQEAgYm9vbCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0CiAgICAgLy8gUmV0dXJucyB0
cnVlIG9ubHkgaWYgdGhlIHBhc3NlZCByYW5nZSBleGFjdGx5IGNvcnJlc3BvbmRzIHRvIGEgYmFk
IGdyYW1tYXIgZGV0YWlsIHJhbmdlLiBUaGlzIGlzIGFuYWxvZ291cwogICAgIC8vIHRvIGlzU2Vs
ZWN0aW9uTWlzc3BlbGxlZC4gSXQncyBub3QgZ29vZCBlbm91Z2ggZm9yIHRoZXJlIHRvIGJlIHNv
bWUgYmFkIGdyYW1tYXIgc29tZXdoZXJlIGluIHRoZSByYW5nZSwKICAgICAvLyBvciBvdmVybGFw
cGluZyB0aGUgcmFuZ2U7IHRoZSByYW5nZXMgbXVzdCBleGFjdGx5IG1hdGNoLgotICAgIGludCBn
cmFtbWFyUGhyYXNlT2Zmc2V0OworICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZz
ZXQ7CiAgICAgCiAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgIFN0cmluZyBi
YWRHcmFtbWFyUGhyYXNlID0gZmluZEZpcnN0QmFkR3JhbW1hcihncmFtbWFyRGV0YWlsLCBncmFt
bWFyUGhyYXNlT2Zmc2V0LCBmYWxzZSk7CkBAIC01NDIsMTUgKzUzOSwxNSBAQCBib29sIFRleHRD
aGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICBpZiAoZ3JhbW1hclBo
cmFzZU9mZnNldCA+IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChncmFt
bWFyRGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxlbmd0
aCA+IDApOworICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOwor
ICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogCiAgICAgLy8gQmFk
IGdyYW1tYXIsIGJ1dCBzdGFydCBvZiBkZXRhaWwgKGUuZy4gdW5ncmFtbWF0aWNhbCB3b3JkKSBk
b2Vzbid0IG1hdGNoIHN0YXJ0IG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRhaWwubG9jYXRp
b24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxv
Y2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIC8vIEJhZCBncmFtbWFyIGF0IHN0YXJ0IG9mIHJhbmdlLCBidXQgZW5kIG9mIGJhZCBn
cmFtbWFyIGlzIGJlZm9yZSBvciBhZnRlciBlbmQgb2YgcmFuZ2UKLSAgICBpZiAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGdyYW1tYXJEZXRhaWwubGVuZ3RoKSAhPSBjaGFyYWN0ZXJDb3VudChtX3Jh
bmdlKSkKKyAgICBpZiAoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggIT0gY2hhcmFjdGVyQ291
bnQobV9yYW5nZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUg
dGhlIHNwZWxsaW5nIHBhbmVsIHRvIGJlIGRpc3BsYXlpbmcgdGhpcyBlcnJvciAod2hldGhlciBv
ciBub3QgdGhlIHNwZWxsaW5nIHBhbmVsIGlzIG9uIHNjcmVlbikuCkBAIC01OTQsOCArNTkxLDgg
QEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxl
ZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICBjaGVja1RleHRPZlBhcmFncmFwaCgqbV9j
bGllbnQudGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoLnRleHQoKSwgY2hlY2tpbmdUeXBlcywgcmVz
dWx0cywgY3VycmVudFNlbGVjdGlvbik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3Vs
dHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24sIHJl
c3VsdC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJh
Z3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKTsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hl
cyhyZXN1bHQucmFuZ2UpKSB7CisgICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBw
YXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKS50b1N0cmluZygpOwogICAgICAgICAgICAgQVNT
RVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xpZW50LnRleHRD
aGVja2VyKCktPmdldEd1ZXNzZXNGb3JXb3JkKG1pc3NwZWxsZWRXb3JkLCBTdHJpbmcoKSwgY3Vy
cmVudFNlbGVjdGlvbiwgZ3Vlc3Nlcyk7CiAgICAgICAgICAgICBtX2NsaWVudC51cGRhdGVTcGVs
bGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKQEAgLTYwOCwxMiArNjA1
LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3Nw
ZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAgIHJldHVybiBndWVzc2VzOwog
CiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQu
dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5n
UmFuZ2VDb3ZlcmVkQnkocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgeworICAgICAg
ICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3Jh
cGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5yYW5nZSkpIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgZGV0YWlsIDogcmVzdWx0LmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwu
bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5n
dGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFy
YWdyYXBoLnRleHRTdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAg
ICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAg
ICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyh7IHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgewor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50
ZXh0KCkuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0
aCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJh
c2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZGV0
YWlsLmd1ZXNzZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBndWVzc2VzLmFwcGVuZChndWVz
cyk7CkBAIC02MzEsNyArNjI4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxN
aXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmcKIHsKICAgICAv
LyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRGaXJzdE1pc3NwZWxsaW5nLiBJZ25v
cmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgdGhlICJvdXQgcGFyYW1ldGVyIjsKICAgICAvLyBhbGwg
d2UgbmVlZCB0byBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgotICAgIGludCBpZ25vcmVkT2Zm
c2V0OworICAgIENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZpcnN0TWlz
c3BlbGxpbmcoaWdub3JlZE9mZnNldCwgdHJ1ZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKIH0K
IApAQCAtNjQxLDcgKzYzOCw3IEBAIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsQmFk
R3JhbW1hcigpCiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBvZmluZEZpcnN0
QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kICJvdXQgcGFyYW1ldGVycyI7
IGFsbCB3ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5jZS4KICAgICBH
cmFtbWFyRGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWlsOwotICAgIGludCBpZ25vcmVkT2Zmc2V0
OworICAgIENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZpcnN0QmFkR3Jh
bW1hcihpZ25vcmVkR3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNldCwgdHJ1ZSk7CiB9CiAjZW5k
aWYKQEAgLTY2OCw3ICs2NjUsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVj
a2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0aW9uU2V0PAogICAgIGlmIChj
aGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAg
IGZvciAoYXV0byYgbWlzcGVsbGluZyA6IG1pc3BlbGxpbmdzKQotICAgICAgICAgICAgZ3JhbW1h
ckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwgbWlz
cGVsbGluZy5sb2NhdGlvbik7CisgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6
Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLnJhbmdlLmxvY2F0
aW9uKTsKICAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5zdWJzdHJp
bmcoMCwgZ3JhbW1hckNoZWNrTGVuZ3RoKSwgZ3JhbW1hdGljYWxFcnJvcnMpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5kZXggM2YzOWU4
NjhkOTk0MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uMzQ2ZDVhODE5MmViZGNiNzYzYjBh
NWUwNjVmODExODhjZjBhODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5oCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRl
eHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJh
bmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50IHJhbmdlTGVu
Z3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0
LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0
VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCByYW5nZUxlbmd0
aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0
OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlv
biYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1ZpZXcuCi0gICAg
Y29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVt
b3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQoKSBkaXJlY3Rs
eS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsg
fQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0g
VUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0g
ICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0
OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tpbmdTdGFydCgp
IGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0xl
bmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQor
ICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nTGVu
Z3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgp
KTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hpY2ggd2UgYWxsb3cgYXV0
b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5n
ZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoLCB0
aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4KLSAgICBpbnQgYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNraW5nU3RhcnQo
KSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXNDaGVja2luZ1Jh
bmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9j
YXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49IGNoZWNraW5n
U3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5nUmFuZ2VDb3Zl
cnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbiA8IGNo
ZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KKyAg
ICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7
IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2UubGVuZ3Ro
ID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRC
eShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPD0g
Y2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoID49IGNoZWNr
aW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VD
b3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9u
IDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+IGNoZWNr
aW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFu
Z2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0
QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVj
a2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xlbmd0aDsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwotICAg
IG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAg
IG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdTdGFydDsKKyAgICBt
dXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11
dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFy
dDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsKQEAgLTg4LDEx
ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYs
IFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3RyaW5nIGZpbmRG
aXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxs
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmluZyBmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0
SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRH
cmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVy
Q291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdl
PiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENo
YXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFt
bWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYg
Zmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBT
dHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
LCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAg
U3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFp
bCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAgIGJvb2wgaXNVbmdyYW1t
YXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsKICNpZiBVU0UoR1JBTU1B
Ul9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8
R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgaW50IGZpbmRG
aXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgQ2hhcmFjdGVy
Q291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFyYWN0ZXJDb3VudCBzdGFydE9mZnNl
dCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYmExYjcy
MGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uOWI3YTExOGIwNTE1OWJiZmVkNmNk
ZmM4OTcyMjFlM2MxZTAwNmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50
KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoCiAgICAg
cmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKFJh
bmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50
KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0b3IoZW50aXJlUmFu
Z2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5nZS5vd25lckRvY3Vt
ZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291
bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4
dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwpA
QCAtMjM2NSw4NSArMjM1OSw2NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNl
ZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4gbm9kZSAmJiBpc1Jl
bmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQogCi1SZWZQdHI8UmFu
Z2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9k
ZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgZm9yU2Vs
ZWN0aW9uUHJlc2VydmF0aW9uKQorQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRp
b24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgUmVmPFJhbmdlPiByZXN1bHRSYW5n
ZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0KLSAgICBpbnQgZG9jVGV4dFBv
c2l0aW9uID0gMDsKLSAgICBpbnQgcmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9uICsgcmFuZ2VMZW5n
dGg7Ci0gICAgYm9vbCBzdGFydFJhbmdlRm91bmQgPSBmYWxzZTsKLQotICAgIFJlZjxSYW5nZT4g
dGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CisgICAgcmV0dXJuIHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShzY29wZSwgeyBsb2NhdGlvbiwgMCB9LCBiZWhhdmlvcikuc3RhcnQ7
Cit9CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLCBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci0gICAgCi0gICAgLy8gRklY
TUU6IHRoZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdvcmthcm91bmQg
Zm9yIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5Pi4KLSAgICBp
ZiAoIXJhbmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpIHsKLSAgICAg
ICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwg
MCk7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRh
aW5lcigpLCAwKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwotICAgIH0KK2NvbnN0ZXhw
ciBDaGFyYWN0ZXJDb3VudCBjbGFtcGVkQWRkKENoYXJhY3RlckNvdW50IGEsIENoYXJhY3RlckNv
dW50IGIpCit7CisgICAgYXV0byBzdW0gPSBhICsgYjsKKyAgICByZXR1cm4gc3VtID49IGEgPyBz
dW0gOiBzdGQ6Om51bWVyaWNfbGltaXRzPENoYXJhY3RlckNvdW50Pjo6bWF4KCk7Cit9CiAKLSAg
ICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewotICAgICAgICBpbnQgbGVuZ3Ro
ID0gaXQudGV4dCgpLmxlbmd0aCgpOwotICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBjcmVhdGVMaXZl
UmFuZ2UoaXQucmFuZ2UoKSk7CitTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3IgYmVoYXZpb3IpCit7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IFNpbXBsZVJhbmdl
IHsgcmFuZ2UubG9jYXRpb24gPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCwgKHJhbmdlLmxvY2F0
aW9uIHx8IHJhbmdlLmxlbmd0aCkgPyBzY29wZS5lbmQgOiBzY29wZS5zdGFydCB9OworICAgIGF1
dG8gcmFuZ2VFbmQgPSBjbGFtcGVkQWRkKHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgpOwor
ICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uID0gMDsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBp
dChzY29wZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgYXV0byB0ZXh0
UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCi0gICAgICAgIGJvb2wgZm91bmRTdGFydCA9IHJhbmdl
TG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlTG9jYXRpb24gPD0gZG9jVGV4dFBv
c2l0aW9uICsgbGVuZ3RoOwotICAgICAgICBib29sIGZvdW5kRW5kID0gcmFuZ2VFbmQgPj0gZG9j
VGV4dFBvc2l0aW9uICYmIHJhbmdlRW5kIDw9IGRvY1RleHRQb3NpdGlvbiArIGxlbmd0aDsKKyAg
ICAgICAgYXV0byBmb3VuZCA9IFsmXSAoQ2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+
IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIHRhcmdldExvY2F0aW9uID49IGxvY2F0aW9uICYm
IHRhcmdldExvY2F0aW9uIC0gbG9jYXRpb24gPD0gbGVuZ3RoOworICAgICAgICB9OworICAgICAg
ICBib29sIGZvdW5kU3RhcnQgPSBmb3VuZChyYW5nZS5sb2NhdGlvbik7CisgICAgICAgIGJvb2wg
Zm91bmRFbmQgPSBmb3VuZChyYW5nZUVuZCk7CiAKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRo
YXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcKLSAgICAgICAgICAgIC8v
IHBvc2l0aW9uIGZvciBlbWl0dGVkICdcbidzIG9yIGlmIHRoZSByZW5kZXJlciBvZiB0aGUgY3Vy
cmVudCBub2RlIGlzIGEgcmVwbGFjZWQgZWxlbWVudC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlz
IG9mdGVuIGF0IHRoZSB3cm9uZyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUg
cmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAg
ICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgY29udHJvbGxpbmcgdGhpcyB3aXRoIFRleHRJdGVy
YXRvckJlaGF2aW9yIGluc3RlYWQgb2YgZG9pbmcgaXQgdW5jb25kaXRpb25hbGx5IHRvIGhlbHAg
dXMgZXZlbnR1YWxseSBwaGFzZSBpdCBvdXQgZXZlcnl3aGVyZS4KICAgICAgICAgICAgIGlmIChs
ZW5ndGggPT0gMSAmJiAoaXQudGV4dCgpWzBdID09ICdcbicgfHwgaXNJbnNpZGVSZXBsYWNlZEVs
ZW1lbnQoaXQpKSkgewogICAgICAgICAgICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzdGFydCA9
IGl0LnJhbmdlKCkuc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0
RW5kKFdURk1vdmUoc3RhcnQuY29udGFpbmVyKSwgc3RhcnQub2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRl
eHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBQb3NpdGlv
biBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1aXZhbGVu
dCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5kLmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQoKnJ1bkVuZC5jb250YWluZXJO
b2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICAg
ICAgICAgIGlmICghaXQuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdl
LmVuZCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KFZpc2libGVQb3Np
dGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24odGV4dFJ1blJhbmdlLnN0YXJ0KSkubmV4
dCgpLmRlZXBFcXVpdmFsZW50KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJh
bmdlLmVuZCA9ICplbmQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGZvdW5kU3RhcnQpIHsKLSAgICAgICAgICAgIHN0YXJ0UmFuZ2VG
b3VuZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUxv
Y2F0aW9uIC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5z
ZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5S
YW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmIChyYW5nZUxvY2F0aW9uID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIo
KSwgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPmVu
ZENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKKyAgICAgICAgYXV0byBi
b3VuZGFyeSA9IFsmXSAoQ2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IEJvdW5kYXJ5
UG9pbnQgeworICAgICAgICAgICAgaWYgKGlzPFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250
YWluZXIpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldExvY2F0aW9uIC0gbG9jYXRp
b24gPD0gZG93bmNhc3Q8VGV4dD4odGV4dFJ1blJhbmdlLnN0YXJ0LmNvbnRhaW5lci5nZXQoKSku
bGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHRleHRSdW5SYW5n
ZS5zdGFydC5vZmZzZXQgKyB0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uOworICAgICAgICAgICAg
ICAgIHJldHVybiB7IHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuY29weVJlZigpLCBvZmZz
ZXQgfTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dExvY2F0aW9uID09IGxvY2F0aW9uID8gdGV4dFJ1blJhbmdlLnN0YXJ0IDogdGV4dFJ1blJhbmdl
LmVuZDsKKyAgICAgICAgfTsKIAorICAgICAgICBpZiAoZm91bmRTdGFydCkKKyAgICAgICAgICAg
IHJlc3VsdFJhbmdlLnN0YXJ0ID0gYm91bmRhcnkocmFuZ2UubG9jYXRpb24pOwogICAgICAgICBp
ZiAoZm91bmRFbmQpIHsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCkuaXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdl
RW5kIC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRF
bmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAocmFuZ2VFbmQgPT0gZG9jVGV4dFBvc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXN1
bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJh
bmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwg
dGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBk
b2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0UmFuZ2UuZW5kID0g
Ym91bmRhcnkocmFuZ2VFbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBkb2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICBsb2NhdGlvbiArPSBsZW5n
dGg7CiAgICAgfQotICAgIAotICAgIGlmICghc3RhcnRSYW5nZUZvdW5kKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAocmFuZ2VMZW5ndGggJiYgcmFuZ2VFbmQgPiBkb2NU
ZXh0UG9zaXRpb24pIC8vIHJhbmdlRW5kIGlzIG91dCBvZiBib3VuZHMKLSAgICAgICAgcmVzdWx0
UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2Ut
PmVuZE9mZnNldCgpKTsKLSAgICAKICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDA5MTRmN2JjYTYxNTA5ZmI1YzNkZWVh
YzlkMzhjZTRkNGMzODk2NGIuLmY0ZTQwOGEyMWE1NTZhNThiODQyMzhiOGUzMmMxMDFhNzM2ZmQ1
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVk
ZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5j
bHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTEwMyw5ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0
IHsgY29weWFibGVUZXh0KCkuYXBwZW5kVG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIpOyB9CiAKICAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hhcmFjdGVyUmFuZ2UsIGFu
ZCBDaGFyYWN0ZXJDb3VudCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFzcyB0byB0aGUgdG9wIGxl
dmVsIChib3R0b20gb2YgdGhpcyBmaWxlKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29w
ZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBs
YWNlZEVsZW1lbnRzID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdl
dExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSosIHNp
emVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJP
ZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0KCk7
CkBAIC0yODksMTMgKzI4OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZExvb2tBaGVhZCB7
IHRydWUgfTsKIH07CiAKLXVzaW5nIENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXplX3Q7Ci0KLXN0
cnVjdCBDaGFyYWN0ZXJSYW5nZSB7Ci0gICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRpb24geyAwIH07
Ci0gICAgQ2hhcmFjdGVyQ291bnQgbGVuZ3RoIHsgMCB9OwotfTsKIAogV0VCQ09SRV9FWFBPUlQg
Q2hhcmFjdGVyQ291bnQgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VY
UE9SVCBCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVS
YW5nZSYsIENoYXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJSYW5nZSwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0KaW5kZXggMmI5MzE3YjE3MTNmMjYwYTJkYWYzOGM1YjFmYmE0ZTA4NGFiN2NhNi4uZTJm
OGY1N2IzOTU1MTc3YmNkZWY3M2FhNDJiNzM3OGM4YWM5MzAxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtOTcsNyArOTcsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0UG9zaXRpb25XaXRoUmFu
Z2UoVmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIENGUmFuZ2UgcmVzdWx0UmFuZ2VJbkNvbnRleHQg
PSBERFJlc3VsdEdldFJhbmdlKHJlc3VsdCk7CiAgICAgICAgIGlmIChoaXRMb2NhdGlvbiA+PSBy
ZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiAmJiAoaGl0TG9jYXRpb24gLSByZXN1bHRSYW5n
ZUluQ29udGV4dC5sb2NhdGlvbikgPCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpIHsKICAg
ICAgICAgICAgIG1haW5SZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBtYWluUmVzdWx0UmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdFJhbmdlSW5D
b250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpOworICAgICAgICAg
ICAgbWFpblJlc3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZSgqY29udGV4dFJhbmdlLCAqbWFrZUNoYXJhY3RlclJhbmdlKHJlc3VsdFJhbmdlSW5Db250ZXh0
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDgsOSArNTA4
LDEyIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0
cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiBmcmFnbWVudFJhbmdlczsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50UmFuZ2Ug
PSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFuZ2UoKSk7CiAgICAgICAgIENGSW5kZXggZnJh
Z21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uuc3RhcnQucXVlcnlJbmRleDsKLSAgICAgICAgaWYgKGZy
YWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkKLSAgICAgICAgICAgIGZy
YWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjdXJyZW50UmFuZ2Us
IHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVyeVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJh
bmdlLnN0YXJ0Lm9mZnNldCkpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKGZyYWdtZW50
SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgeworICAgICAgICAgICAgQ2hhcmFj
dGVyUmFuZ2UgZnJhZ21lbnRSYW5nZTsKKyAgICAgICAgICAgIGZyYWdtZW50UmFuZ2UubG9jYXRp
b24gPSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAgICAgICAgICAgIGZyYWdtZW50UmFuZ2Uu
bGVuZ3RoID0gcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7
CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHJlc29s
dmVDaGFyYWN0ZXJSYW5nZSgqY3VycmVudFJhbmdlLCBmcmFnbWVudFJhbmdlKSkpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkKICAg
ICAgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoY3VycmVudFJhbmdlKTsKICAgICAg
ICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGlj
dGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFy
eUxvb2t1cC5tbQppbmRleCBkNjQ4ZmQ3MGZjMzhmYzkyYzI0ZTUxNzg5MDQ3Y2VmNjI2M2ZhNTA5
Li42YmM1YmUxZmU3NGUwNTFhM2E2Y2IwYmM2MWZmMjg4YTRlMTI2OWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCkBAIC0yODcsMTAg
KzI4Nyw5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rp
b25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvCiAKICAgICBSZWZQdHI8UmFuZ2U+IGZ1
bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcGFyYWdyYXBoRW5k
KTsKICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2Uu
Z2V0KCkpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRl
bUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpyYW5nZVRv
UGFzc10pOwotICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgpLmhpZ2hsaWdo
dFJhbmdlOworICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBhZG9wdE5TKFthbGxvY1JWSXRl
bUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpyYW5nZVRv
UGFzc10pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCi0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwg
aGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqbWFrZUNoYXJh
Y3RlclJhbmdlKGhpZ2hsaWdodFJhbmdlKSkpLCBuaWwgfTsKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKQEAgLTM1OCwxMyArMzU3LDEyIEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJh
bmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVz
dWx0CiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0aW9uQ2xhc3MoKSBy
ZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtbTlNWYWx1ZSB2YWx1
ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVjdGlvbjpuaWxdOwog
CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1bGxDaGFyYWN0ZXJSYW5nZSk7
Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFu
Y2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2Vd
KTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5n
ZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKGFkb3B0TlMo
W2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJh
bmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRSYW5nZSk7CiAKLSAgICBpZiAoaGln
aGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhaGlnaGxpZ2h0UmFuZ2UubGVu
Z3RoKQorICAgIGlmICghaGlnaGxpZ2h0UmFuZ2UgfHwgIWhpZ2hsaWdodFJhbmdlLT5sZW5ndGgp
CiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogICAgIAotICAgIHJldHVybiB7IFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2Uu
bG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNy
ZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwg
KmhpZ2hsaWdodFJhbmdlKSksIG5pbCB9OwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwCmluZGV4IGEyYjgxODI4NzdiMjhhZjI5YzhhMDYzOTU0ZDM3NGNkNWFh
NWE1ZGEuLmQzY2YwNmM5M2QxOWQ4NWVlNTE0NWQwMmExMmQ1MmI4M2JjN2EwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBA
IC03MiwxMSArNzIsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAg
IGlmIChlbmRPZmZzZXQgPCByZXN1bHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gcmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHJvb3QsIGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0KTsKLSAgICBpZiAoIXJl
c3VsdFJhbmdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoKnJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKKyAgICBh
dXRvIHJlc3VsdFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqcm9vdCksIHsgZW5kT2Zmc2V0IC0gcmVzdWx0TGVuZ3RoLCBlbmRPZmZz
ZXQgfSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2Vy
KHJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExl
Z2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdh
Y3kubW0KaW5kZXggNTEzNWI5MDZkZWUxOGUwMTc3OWVjNjExNDc0MzFjNzk1ZTM4YTU4ZS4uNjVk
NWRkNTYyZTkzNzBjZWJmY2U1M2MzMjI1ZTI3MzVjNTViNWYzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC0xNDIs
MTQgKzE0MiwxNCBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogCiAgICAgTlNSYW5nZSByYW5n
ZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgKmZ1bGxDaGFyYWN0ZXJTdGFy
dCwgKnBvc2l0aW9uQm91bmRhcnkgfSksIDApOwogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9
IG5pbDsKLSAgICBOU1JhbmdlIGV4dHJhY3RlZFJhbmdlID0gdG9rZW5SYW5nZShwbGFpblRleHQo
ZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRpb25zKTsKKyAgICBh
dXRvIGV4dHJhY3RlZFJhbmdlID0gbWFrZUNoYXJhY3RlclJhbmdlKHRva2VuUmFuZ2UocGxhaW5U
ZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucykpOwog
CiAgICAgLy8gdG9rZW5SYW5nZSBzb21ldGltZXMgcmV0dXJucyB7TlNOb3RGb3VuZCwgMH0gaWYg
aXQgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSBnb29kIHN0cmluZy4KICAgICAvLyBGSVhNRSAo
MTU5MDYzKTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgZm9yIHplcm8gbGVuZ3RoIGhlcmUu
Ci0gICAgaWYgKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWV4dHJh
Y3RlZFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWV4dHJhY3RlZFJhbmdlIHx8ICFleHRyYWN0ZWRS
YW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKIAotICAgIHJl
dHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgZXh0cmFj
dGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCksIG9wdGlvbnMgfTsKKyAg
ICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hh
cmFjdGVyUmFuZ2UsICpleHRyYWN0ZWRSYW5nZSkpLCBvcHRpb25zIH07CiB9CiAKIHN0YXRpYyB2
b2lkIGV4cGFuZFNlbGVjdGlvbkJ5Q2hhcmFjdGVycyhQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwg
TlNJbnRlZ2VyIG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBOU0ludGVnZXImIGNoYXJhY3Rl
cnNBZGRlZEJlZm9yZVN0YXJ0LCBOU0ludGVnZXImIGNoYXJhY3RlcnNBZGRlZEFmdGVyRW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggMTIxMDk5NmEzZTEwMDhmMzlkMmQ2ZWY0MzE1NjhmOGQzNzY3
ZmQ5Zi4uYmJmYTAwZDY3YmUwZmUyNzcyODgzMTY4YzEyMDUzODU3YmVhMmRlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC04MDMsOCArODAzLDcgQEAgdW5zaWduZWQgUGFnZTo6Y291bnRGaW5kTWF0
Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWcKIAog
c3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
cm9vdDsKLSAgICBzaXplX3QgbG9jYXRpb24geyBub3RGb3VuZCB9OwotICAgIHNpemVfdCBsZW5n
dGggeyAwIH07CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiB9OwogCiBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5n
ZT4mIHJhbmdlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpCkBAIC04MTYsMTAgKzgx
NSwxMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3Rv
cjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgcmFuZ2VzIGFyZSBzb3J0ZWQgYnkgdGhlaXIg
ZW5kIG9mZnNldHMsIHBlciBlZGl0aW5nIGNvbnRhaW5lci4KLSAgICAgICAgYXV0byBlbmRPZmZz
ZXRGb3JSYW5nZSA9IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOworICAgICAgICBhdXRv
IGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UucmFuZ2UubG9jYXRpb24gKyByYW5nZS5yYW5nZS5s
ZW5ndGg7CiAgICAgICAgIGF1dG8gaW5zZXJ0aW9uSW5kZXggPSByYW5nZUxpc3Quc2l6ZSgpOwog
ICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSByYW5nZUxpc3QucmJlZ2luKCk7IGl0ZXJhdG9y
ICE9IHJhbmdlTGlzdC5yZW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gZW5k
T2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+bG9jYXRpb24gKyBpdGVyYXRv
ci0+bGVuZ3RoOworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNlcnRpb25JbmRl
eCA9IGl0ZXJhdG9yLT5yYW5nZS5sb2NhdGlvbiArIGl0ZXJhdG9yLT5yYW5nZS5sZW5ndGg7CiAg
ICAgICAgICAgICBpZiAoZW5kT2Zmc2V0Rm9yUmFuZ2UgPj0gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0
aW9uSW5kZXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpbnNlcnRpb25J
bmRleC0tOwpAQCAtODYyLDExICs4NjEsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQ
YWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAg
ICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCByYW5nZXMgd2hlbiByZXBsYWNpbmcg
dGV4dCwgc3VjaCB0aGF0IGVhcmxpZXIgdGV4dCByZXBsYWNlbWVudHMgZG9uJ3QgY2xvYmJlciBy
ZXBsYWNlbWVudCByYW5nZXMgbGF0ZXIgb24uCiAgICAgICAgIGF1dG8mIHJhbmdlcyA9IHJhbmdl
c0J5Q29udGFpbmVyTm9kZS5maW5kKGNvbnRhaW5lciktPnZhbHVlOwogICAgICAgICBmb3IgKGF1
dG8gaXRlcmF0b3IgPSByYW5nZXMucmJlZ2luKCk7IGl0ZXJhdG9yICE9IHJhbmdlcy5yZW5kKCk7
ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lci5nZXQoKSwgaXRlcmF0b3ItPmxvY2F0
aW9uLCBpdGVyYXRvci0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghcmFuZ2UgfHwgcmFuZ2Ut
PmNvbGxhcHNlZCgpKQorICAgICAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmNvbnRhaW5lciksIGl0ZXJhdG9y
LT5yYW5nZSk7CisgICAgICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxk
Q2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4dCwgRWRpdG9y
OjpTZWxlY3RSZXBsYWNlbWVudDo6WWVzLCBFZGl0b3I6OlNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRB
Y3Rpb246Okluc2VydFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTg5OCw3ICs4
OTcsNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQoY29uc3QgVmVjdG9y
PFJlZjxSYW5nZT4+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAgICAgIGlmIChyZXBsYWNlbWVudExv
Y2F0aW9uID09IG5vdEZvdW5kIHx8ICFyZXBsYWNlbWVudExlbmd0aCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdURk1vdmUoaGln
aGVzdFJvb3QpLCByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCB9KTsKKyAg
ICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHsg
cmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSB9KTsKICAgICB9CiAKICAg
ICByZXBsYWNlUmFuZ2VzKCp0aGlzLCByZXBsYWNlbWVudFJhbmdlcywgcmVwbGFjZW1lbnRUZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5j
cHAKaW5kZXggZjMzOTQ0ZDE4NTA0MDNlOTE1MDJlMDYwM2Y1NGZiN2IyYjQ2ZTRmYy4uNzQwOGFk
OThkZWY3YzU2NWM0YjA5Nzg2OTUwZmU5ZTNiMmNiOTViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
Ym9vbCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3g6OnBhcnNlKEpTQzo6RGF0YVZp
ZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2l6
ZV90IGRhdGFTaXplOwotICAgIGlmICghV1RGOjpzYWZlU3ViKG1fc2l6ZSwgbG9jYWxPZmZzZXQg
LSBvZmZzZXQsIGRhdGFTaXplKSkKKyAgICBpZiAoIXNhZmVTdWJ0cmFjdChtX3NpemUsIGxvY2Fs
T2Zmc2V0IC0gb2Zmc2V0LCBkYXRhU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2UobG9jYWxPZmZzZXQsIGxvY2FsT2Zmc2V0
ICsgZGF0YVNpemUpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlDb250ZXh0Qm94OjpwYXJzZShKU0M6OkRhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zm
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBkYXRhU2l6ZTsKLSAgICBpZiAo
IVdURjo6c2FmZVN1YihtX3NpemUsIGxvY2FsT2Zmc2V0IC0gb2Zmc2V0LCBkYXRhU2l6ZSkpCisg
ICAgaWYgKCFzYWZlU3VidHJhY3QobV9zaXplLCBsb2NhbE9mZnNldCAtIG9mZnNldCwgZGF0YVNp
emUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIHBhcnNlZERhdGEgPSBidWZm
ZXItPnNsaWNlKGxvY2FsT2Zmc2V0LCBsb2NhbE9mZnNldCArIGRhdGFTaXplKTsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBib29sIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g6OnBh
cnNlKEpTQzo6RGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJgogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgdWludDY0X3QgcmVtYWluaW5nOwotICAgICAgICBpZiAoIVdURjo6c2FmZVN1Yiht
X3NpemUsIGxvY2FsT2Zmc2V0IC0gb2Zmc2V0LCByZW1haW5pbmcpKQorICAgICAgICBpZiAoIXNh
ZmVTdWJ0cmFjdChtX3NpemUsIGxvY2FsT2Zmc2V0IC0gb2Zmc2V0LCByZW1haW5pbmcpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBzaXplb2Yo
dWludDMyX3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCA0ZjEzOGU0ZDczYWNl
NzJjYzFhZDBkNmE4YTgwY2NhODc0NmJkYzQzLi4yNWJlZTc5NTJkNzMwOWY4NWM1YWRlY2ViZmNi
OGUzM2I0NmIyNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApAQCAtNDYsNyArNDYs
NyBAQCB1aW50OF90IHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29uc3Qgdm9pZCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKICAgICBSRUxFQVNFX0FTU0VSVChidWZmZXJTaXplKTsK
IAogICAgIHVpbnRwdHJfdCBsYXN0Qnl0ZTsKLSAgICBib29sIGlzU2FmZSA9IFdURjo6c2FmZUFk
ZCgodWludHB0cl90KWJ1ZmZlciwgYnVmZmVyU2l6ZSAtIDEsIGxhc3RCeXRlKTsKKyAgICBib29s
IGlzU2FmZSA9IHNhZmVBZGQoKHVpbnRwdHJfdClidWZmZXIsIGJ1ZmZlclNpemUgLSAxLCBsYXN0
Qnl0ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNTYWZlKTsKIAogICAgIHJldHVybiAqKHVpbnQ4
X3QqKWxhc3RCeXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5n
LmgKaW5kZXggZDBkMDBjNmJkNTczMjc3M2MwYTM3ZThiYjUzNjU3ZWIzNDc3ZGViMy4uZDI0NWNj
ZDllYzkxMjAyZWMzZDBmNDllZDU1NGMzMDUwZWU5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMCArMzEsOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYzLDE2ICs2
MiwxNCBAQCBlbnVtIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHsKIH07CiAKIHN0cnVjdCBHcmFt
bWFyRGV0YWlsIHsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBDaGFy
YWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwogICAgIFN0cmlu
ZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKICAg
ICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5n
dGg7CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+
IGRldGFpbHM7CiAgICAgU3RyaW5nIHJlcGxhY2VtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBhZjI3Yjk5ZjM4N2MxMjhhZmZiNDM2OWFiNGVjM2E5YzBiZmZj
Mjk4Li4xMzRlYTMxZmNlOGY5ODg5MTEyY2MxNGMwN2ZkMTc0ZGJlNWJjZTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDQ0LDkgKzIwNDQsOSBAQCBFeGNlcHRpb25P
cjx2b2lkPiBJbnRlcm5hbHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAgIHJldHVybiB7
IH07CiB9CiAKLVJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkK
K1JlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVt
ZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgp
CiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
JnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKHNjb3BlKSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9CiAKIHVuc2ln
bmVkIEludGVybmFsczo6bG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJh
bmdlJiByYW5nZSkKQEAgLTIwNzUsOSArMjA3NSw5IEBAIFN0cmluZyBJbnRlcm5hbHM6OnJhbmdl
QXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQogICAg
IHJldHVybiBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcocmFu
Z2UpOwogfQogCi1SZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCBp
bnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmPFJhbmdlPiBJbnRlcm5hbHM6
OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQg
cmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2Us
IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdl
KHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0
aCB9KSk7CiB9CiAKIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVhckxv
Y2F0aW9uKGNvbnN0IFJhbmdlJiBzZWFyY2hSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQpCkBAIC0yNDMyLDggKzI0MzIsNyBAQCB2b2lkIEludGVybmFsczo6
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIHVuc2lnbmVk
IGxvY2F0aQogCiAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6Ok5vbmU7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gbG9jYXRp
b247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXN1bHQucmFuZ2UgPSB7IGxv
Y2F0aW9uLCBsZW5ndGggfTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7CiAg
ICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmhhbmRsZUFjY2VwdGVkQ2Fu
ZGlkYXRlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlMjM1
MjM0MWRiOGMxNWQ0MjlmOWNlZmQyODlkZjUyMjcwZTVhYzdjLi5jZjc5ZTUwYzdiODQ3M2Y2ZmUy
NTJmOGNjNzY4NTljNmY5MTU3MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTI5NSwxMiArMjk1LDEyIEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGludmFs
aWRhdGVDb250cm9sVGludHMoKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VM
ZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxl
bWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3Ro
KTsKICAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3Qg
UmFuZ2UmKTsKICAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNv
bnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0KGNvbnN0IFJhbmdlJik7CiAgICAg
U3RyaW5nIHJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2Um
KTsKLSAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgaW50IHJhbmdlTG9jYXRpb24sIGlu
dCByYW5nZUxlbmd0aCk7CisgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIHVuc2lnbmVk
IHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICBFeGNlcHRpb25PcjxS
ZWZQdHI8UmFuZ2U+PiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGludCB4LCBp
bnQgeSk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNvbnN0
IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggMTYyZmFmNDk0NmVhYWRkOTgwZTU3ODlhMThiYmRlYzU1ODNmNjMy
My4uMzc1NzkwNzcwNGY5MzEzZTY4NDE0YzAwNTU5MTc0MWU0NmEyNWRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzI1LDEyICszMjUsMTIgQEAgZW51bSBDb21wb3Np
dGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVu
dFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7
CiAKLSAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwg
bG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5nZT8gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgdW5zaWduZWQgbG9uZyByYW5nZUxv
Y2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb25nIGxv
Y2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICB1bnNpZ25l
ZCBsb25nIGxlbmd0aEZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAg
RE9NU3RyaW5nIHJhbmdlQXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VB
c1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihSYW5nZSByYW5nZSk7Ci0gICAgUmFuZ2Ug
c3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0
aCk7CisgICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIHVuc2lnbmVkIGxvbmcgcmFuZ2VM
b2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxv
bmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2Us
IERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0aW5nUmFuZ2UuY3BwCmluZGV4IGI4OTkzM2ZmYTFiZjI4NDNjMjZmZGJkNjZkMjkyNmVkMDBj
NWY2YTEuLjc2ZWY0NzIyZDc1MWNmNmU1OWFhYjllZGZhYjY2NTZlNzA0ZjE2ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtMzMsNDIgKzMzLDMyIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9S
YW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIEVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJh
bWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8gYmFzZSkKIHsKLSAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOwor
ICAgIEFTU0VSVChlZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOworICAgIFdlYkNv
cmU6OkNoYXJhY3RlclJhbmdlIHJhbmdlIHsgZWRpdGluZ1JhbmdlLmxvY2F0aW9uLCBlZGl0aW5n
UmFuZ2UubGVuZ3RoIH07CiAKLSAgICAvLyBTYW5pdGl6ZSB0aGUgaW5wdXQsIGJlY2F1c2UgVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0YWtlcyBzaWduZWQgaW50ZWdl
cnMuCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaW50IGxlbmd0aDsKLSAgICBpZiAocmFuZ2UubGVuZ3RoIDw9IElOVF9NQVgg
JiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGggPD0gSU5UX01BWCkKLSAgICAgICAgbGVu
Z3RoID0gc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAg
bGVuZ3RoID0gSU5UX01BWCAtIHJhbmdlLmxvY2F0aW9uOwotCi0gICAgaWYgKGVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkg
eworICAgIGlmIChiYXNlID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290
KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2Rl
IHBhdGggaXMgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgICAgICAvLyBjb25jZW50
cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgogICAgICAgICAv
LyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFz
LiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QKICAgICAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRv
Y3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9u
IGlzCiAgICAgICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBz
ZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAgICAgLy8gVGhhdCBm
aXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFt
ZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgICAgIGF1dG8qIGVs
ZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVs
ZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdl
KG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKSk7CiAgICAg
fQogCi0gICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG86OlBhcmFncmFwaCk7Ci0KLSAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBpZiAoIXNlbGVjdGlvbi50b05vcm1hbGl6ZWRS
YW5nZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoYmFzZSA9PSBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0
YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCkpKTsKKyAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQo
c3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3Rh
cnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNj
b3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNv
cmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgcmFuZ2UubG9jYXRpb24sIGxl
bmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7
CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQpIH0sIHJhbmdl
KSk7CiB9CiAKIEVkaXRpbmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpG
cmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJhbmdlKiByYW5nZSwgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGlu
Z1JhbmdlLmgKaW5kZXggOTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OS4u
ZTA0M2Y5NzI0MGU0MjVlY2QyNWE0MjdlZGQ5MjdhY2I3NDVlMzYxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBFZGl0aW5nUmFu
Z2VJc1JlbGF0aXZlVG8gOiB1aW50OF90IHsKICAgICBQYXJhZ3JhcGgsCiB9OwogCisvLyBGSVhN
RTogUmVwbGFjZSB0aGlzIHdpdGggT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+Lgogc3RydWN0IEVk
aXRpbmdSYW5nZSB7CiAgICAgRWRpdGluZ1JhbmdlKCkKICAgICAgICAgOiBsb2NhdGlvbihub3RG
b3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJlODFhYmMxYTkxODAuLmZhYjQ4NGRl
YWExODJiNDZiNWRmM2JhOWQ0YWE2ZDNjYmQwY2NlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNl
ZW1zIGxpa2Ugd2UgY291bGQgdXNlIHN0ZDo6dHVwbGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVs
b3cgYSBsb3QhCisKIG5hbWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjUwLDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q2FjaGVRdWVyeU9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVR
dWVyeU9wdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hh
cmFjdGVyUmFuZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFu
Z2UmIHJhbmdlKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdl
LmxvY2F0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5s
ZW5ndGgpOworfQorCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFy
YWN0ZXJSYW5nZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBsb2NhdGlvbjsKKyAgICBkZWNvZGVyID4+IGxvY2F0aW9uOworICAgIGlmICghbG9j
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24s
ICpsZW5ndGggfSB9OworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAt
MjA1MywyMiArMjA3NiwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBH
cmFtbWFyRGV0YWlsJiBkZXRhaWwpCiB7Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247
Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubGVuZ3RoOworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJh
bmdlOwogICAgIGVuY29kZXIgPDwgZGV0YWlsLmd1ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRh
aWwudXNlckRlc2NyaXB0aW9uOwogfQogCiBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVu
dENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxpbnQ+IGxvY2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYg
KCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PGludD4gbGVuZ3RoOwotICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQor
ICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdl
OworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ3Vlc3NlczsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9w
dGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwg
V1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlw
dGlvbikgfX07CisgICAgcmV0dXJuIHsgeyAqcmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZN
b3ZlKCp1c2VyRGVzY3JpcHRpb24pIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRD
aGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQpAQCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFRleHRDaGVja2kKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVy
IDw8IHJlc3VsdC5sb2NhdGlvbjsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAg
ZW5jb2RlciA8PCByZXN1bHQucmFuZ2U7CiAgICAgZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsK
ICAgICBlbmNvZGVyIDw8IHJlc3VsdC5yZXBsYWNlbWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUs
OSBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNr
aW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
dHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8
aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxl
bmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRp
b25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPEdyYW1tYXJEZXRhaWw+PiBkZXRhaWxzOwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0
aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3Vs
dD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgq
bG9jYXRpb24pLCBXVEZNb3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgq
cmVwbGFjZW1lbnQpIH19OworICAgIHJldHVybiB7IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpk
ZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENv
ZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2
ZTg0ZjAxNy4uMWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2
OSw3IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworCiBjbGFzcyBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBA
QCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBz
dHJ1Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3Qg
Q29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1
Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTE0Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2Np
dHlEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJl
czsKICAgICAKLXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8
dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVk
Z2VzPGZsb2F0PjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25z
PiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDaGFyYWN0ZXJSYW5nZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMGZkMmU1NjI4OTViMzE2M2VmNmU3
OTZiODNkYTBmZTU2MjQxOGMxZS4uMjliZDE4ZjdkYTMyMjBmMTkxNmMxYTc2NjhiNWEzZGVhNGMx
NDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTMzNjYsMTIgKzMzNjYsOSBAQCBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeQogCiBzdGF0aWMg
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRD
aGVja2luZ1Jlc3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNS
YW5nZSByZXN1bHRSYW5nZSA9IFtuc1Jlc3VsdCByYW5nZV07Ci0KICAgICBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2lu
Z1R5cGUobnNSZXN1bHQucmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
KyAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsK
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFy
RGV0YWlsLmNwcAppbmRleCA2ZWU0NDFiMTFhMjM5MDVlMzNjMzlkOGE5ZTAwZDM5N2Y5NmY1MmIx
Li4wNmQ1Y2VjYzRlODUwYTUyYjRjNzk0Y2UyMTYwNTY1NDBmOTUwZWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcApAQCAtNDQsOCArNDQsOCBAQCBS
ZWY8V2ViR3JhbW1hckRldGFpbD4gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWwmIGdyYQogCiBXZWJHcmFtbWFyRGV0YWlsOjpXZWJHcmFtbWFyRGV0
YWlsKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3Qg
U3RyaW5nJiB1c2VyRGVzY3JpcHRpb24pCiB7Ci0gICAgbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9u
ID0gbG9jYXRpb247Ci0gICAgbV9ncmFtbWFyRGV0YWlsLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBt
X2dyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBtX2dyYW1tYXJE
ZXRhaWwucmFuZ2UubGVuZ3RoID0gbGVuZ3RoOwogCiAgICAgc2l6ZV90IG51bUd1ZXNzZXMgPSBn
dWVzc2VzLT5zaXplKCk7CiAgICAgbV9ncmFtbWFyRGV0YWlsLmd1ZXNzZXMucmVzZXJ2ZUNhcGFj
aXR5KG51bUd1ZXNzZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R3JhbW1hckRldGFpbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFp
bC5oCmluZGV4IGM5Yjc1NTNjZDdiMDhlZWFjN2Q4MjMzOGIxMTBmNGFlZGQ5ZWY2YWMuLjM5MGI0
YTVmN2I5ZWFjNjMxZmQ3MzI0MTY1N2UyMjFkYTVjMTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24p
OwogICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkdyYW1tYXJEZXRhaWwmKTsKIAotICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhbW1hckRldGFpbC5sb2NhdGlvbjsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoOyB9CisgICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uOyB9CisgICAgaW50IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGg7IH0KICAgICBSZWY8
QVBJOjpBcnJheT4gZ3Vlc3NlcygpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXNlckRlc2Ny
aXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcApp
bmRleCA0MTA4ZmFkNmQyNjY1N2VhZGU5MDg2YzE2Y2ZkZjIxODEwN2NjYjI1Li4xZGE5MGVlYzRk
YjcwYjUxMGExM2VhYTdkZTNlNTA1YmZkNWY0MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKQEAgLTI2OSw4ICsyNjksOCBAQCBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3Bl
bGxEb2N1bWVudFRhZyBzcAogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGlu
Z1Jlc3VsdDsKICAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nOwotICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5sb2NhdGlvbiA9IG9mZnNl
dCArIG1pc3NwZWxsaW5nTG9jYXRpb247Ci0gICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0Lmxlbmd0
aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5yYW5nZS5s
b2NhdGlvbiA9IG9mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CisgICAgICAgIG1pc3NwZWxs
aW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICBwYXJh
Z3JhcGhDaGVja2luZ1Jlc3VsdC5hcHBlbmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBv
ZmZzZXQgKz0gbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAg
ICAvLyBHZW5lcmFsbHksIHdlIGVuZCB1cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3Is
IG1vdmUgdG8gdGhlIGFkamFjZW50IHdvcmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4NjhkYzQ4ODMw
YWZmZGM0NzFmZS4uZjYwOGM4ZGI1YzYwNjUzMGNhYTU5NmVkNmFiNWU5NWQ2Y2VkZTU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpAQCAtMjEy
LDggKzIxMiw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVj
a1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJhbmdlLmxv
Y2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsK
KyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShtaXNzcGVsbGVkUmFu
Z2UpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJlc3VsdCkpOwogCiAgICAgICAg
IG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uICsgbWlzc3BlbGxlZFJhbmdl
Lmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hl
Y2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5t
bQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRmZmI4NGVlNjM0Li5hYzNiZWUw
MGIxNjU5M2FjZjQ1NzFlYTk5YzExMDE2Y2MxNGY0NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQsMjIgKzMzNCwyMCBAQCBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
U3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dyYXBoeTpOVUxMCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmlu
Y29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3Vs
dFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdU
eXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFT
U0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJU
KHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQu
cmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jl
c3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9ICptYWtl
Q2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0
IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAg
Zm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1tYXJE
ZXRhaWwgZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNw
CiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNO
U1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1Jhbmdl
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxO
U1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9IGRl
dGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9IGRl
dGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9ICptYWtl
Q2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNl
ckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29t
aW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAg
ICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTM3MCwzNiArMzY3LDMx
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlw
ZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4
dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUg
PT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3Rl
OwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0g
ICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAg
ICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFj
ZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09
IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hl
Y2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3Vs
dDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAg
ICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAg
ICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJl
c3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50
ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1Rl
eHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVz
LmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0g
cmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAg
ICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1l
bnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAg
fQpAQCAtNDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAogdm9pZCBU
ZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxsRG9jdW1l
bnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFp
bCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNvcnJl
Y3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ldOwotICAg
ICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBhdXRvIGNvcnJlY3Rpb25z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRv
JiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmluZyAqZ3Vl
c3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNz
TlNTdHJpbmddOwogICAgIH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFu
Z2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5T
U3RyaW5nICpncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3Jp
cHRpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZ3JhbW1hckRldGFpbERpY3QgPSBh
ZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFy
VXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLmdl
dCgpLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0
aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU0RpY3Rp
b25hcnkgKmRldGFpbCA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJE
ZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJl
Y3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgfTsKIAotICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJp
bmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3QuZ2V0KCldOworICAg
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVs
V2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsKIH0KIAog
dm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3BlbGxEb2N1bWVudFRhZyBzcGVs
bERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwg
aW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eS5tbQppbmRleCBmMThjYWE3MmNiZDk2NTMxNzU1ZTkyZWNmYjIwZWY0ZGI4Y2E1M2Fm
Li43MGEzOTAzNWQ1OGM4MTJjMmNiMDEzMTlmNWExNmM2ZmE1OWY1ZDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIE9wdGlvbmFs
PFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmFuZ2VBbmRPZmZzZXQ+IFRleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94CiAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxl
bmd0aCk7CiAgICAgc2VsZWN0aW9uTG9jYXRpb24gKz0gb2Zmc2V0OwogCi0gICAgcmV0dXJuIHt7
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgc2VsZWN0aW9u
TG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OworICAgIHJldHVybiB7eyBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNl
bGVjdGlvbkxvY2F0aW9uIH19OwogfQogCiB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRT
dHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVu
dExlbmd0aCkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbgogCiAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID0gbG9jYXRp
b25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVT
ZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2NhdGlvbkluUm9vdCAr
IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9u
VG9SZXN0b3JlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3Rv
cmUgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3Rv
cmUsIDApOwogICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0
aW9uVG9SZXN0b3JlLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxh
Y2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAgICB9CiAKICAgICBb
YW5ub3RhdGVkU3RyaW5nLnN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VS
YW5nZSgwLCBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdKSBvcHRpb25zOjAgdXNpbmdC
bG9jazpeKE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlkPiAqYXR0cnMsIE5T
UmFuZ2UgYXR0cmlidXRlUmFuZ2UsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1
dGVDb3JlUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJv
b3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJh
bmdlLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRp
b24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CiAgICAgICAgIGlmICghYXR0cmlidXRlQ29yZVJh
bmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTksNyArMTk5LDcgQEAgQXR0cmlidXRl
ZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0Jl
dHdlZW5Qb3NpdGlvbnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
YXV0byYgdGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpQbGF0Zm9y
bVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gc3Vi
cmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4
dFJhbmdlKSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFy
a2VyLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCkpOwogCiAgICAgICAgICAgICBzaXplX3Qgc3VicmFuZ2VMb2NhdGlvbjsKICAgICAgICAgICAg
IHNpemVfdCBzdWJyYW5nZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZDJiM2ExNGI1OWE0ZTc4ODQyN2NmOTE0YjdiMjMyZGExMGMy
ODA1YS4uN2FiMTA2YTFiOTFkNjYzZDA2NjZjZTU2ZmRhMmQwNTRjYzk3M2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU0MjAsMjAgKzU0
MjAsMjMgQEAgdm9pZCBXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyhpbnQ2NF90IG9mZnNldCwg
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gdGFyZ2V0
RnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IHRh
cmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlz
Tm9uZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gc2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpOwogICAgIGF1dG8gc3Vycm91bmRpbmdSYW5nZSA9IG1ha2VS
YW5nZShzdGFydE9mRWRpdGFibGVDb250ZW50KHNlbGVjdGlvblN0YXJ0KSwgc2VsZWN0aW9uU3Rh
cnQpOwotICAgIGF1dG8gY3Vyc29yUG9zaXRpb24gPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCgq
c3Vycm91bmRpbmdSYW5nZSk7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBzdXJyb3VuZGluZ1Jhbmdl
LT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7Ci0gICAgYXV0byBzZWxl
Y3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJv
b3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwotICAgIGlm
ICghc2VsZWN0aW9uUmFuZ2UpCisgICAgaWYgKCFzdXJyb3VuZGluZ1JhbmdlKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBDaGFyYWN0ZXJSYW5nZSBjaGFy
YWN0ZXJSYW5nZTsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sb2NhdGlvbiA9IFdlYkNvcmU6OmNoYXJh
Y3RlckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKSArIG9mZnNldDsKKyAgICBjaGFyYWN0ZXJSYW5n
ZS5sZW5ndGggPSBjaGFyYWN0ZXJDb3VudDsKKyAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhyb290Tm9k
ZSksIGNoYXJhY3RlclJhbmdlKTsKKwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25v
cmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqc2VsZWN0aW9uUmFuZ2UsIFNFTF9ERUZBVUxU
X0FGRklOSVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwog
ICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUo
ZmFsc2UpOwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKGZhbHNlKTsKICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYTg3ZGJl
ZjU0NzIwNzE1MTc1Y2U3MjU2NGM2YThmNWFhYzE0MWM3Yi4uYWMzNTM1MWI5ZDNkMDhlZjBlNjhj
NzljM2I5YWUwNGM3MTJjYTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQwNjYsOCArNDA2Niw4IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50
NjRfdCBsZW5ndGhEZWx0CiAgICAgc2l6ZV90IHNlbGVjdGlvbkxlbmd0aDsKICAgICBUZXh0SXRl
cmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdldCgpLCBz
ZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKIAotICAgIENoZWNrZWRJbnQ2NCBu
ZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNlbGVjdGlvbkxvY2F0aW9uIH07Ci0gICAgQ2hlY2tlZElu
dDY0IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9OworICAgIENoZWNrZWQ8
Q2hhcmFjdGVyQ291bnQsIFJlY29yZE92ZXJmbG93PiBuZXdTZWxlY3Rpb25Mb2NhdGlvbiB7IHNl
bGVjdGlvbkxvY2F0aW9uIH07CisgICAgQ2hlY2tlZDxDaGFyYWN0ZXJDb3VudCwgUmVjb3JkT3Zl
cmZsb3c+IG5ld1NlbGVjdGlvbkxlbmd0aCB7IHNlbGVjdGlvbkxlbmd0aCB9OwogICAgIG5ld1Nl
bGVjdGlvbkxvY2F0aW9uICs9IGxvY2F0aW9uRGVsdGE7CiAgICAgbmV3U2VsZWN0aW9uTGVuZ3Ro
ICs9IGxlbmd0aERlbHRhOwogCkBAIC00MDc2LDggKzQwNzYsMTIgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxl
bmd0aERlbHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdXRvIHJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBuZXdTZWxlY3Rp
b25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgpKSkK
LSAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCks
IERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBDaGFyYWN0ZXJSYW5nZSBuZXdTZWxlY3Rpb25SYW5n
ZTsKKyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sb2NhdGlvbiA9IG5ld1NlbGVjdGlvbkxvY2F0aW9u
LnVuc2FmZUdldCgpOworICAgIG5ld1NlbGVjdGlvblJhbmdlLmxlbmd0aCA9IG5ld1NlbGVjdGlv
bkxlbmd0aC51bnNhZmVHZXQoKTsKKworICAgIGF1dG8gcmVzb2x2ZWRSYW5nZSA9IHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCBuZXdT
ZWxlY3Rpb25SYW5nZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uo
Y3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVkUmFuZ2UpLnB0cigpLCBET1dOU1RSRUFNLCBXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7
CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpAQCAtNDE5MiwxNiArNDE5NiwxNSBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGlu
Z0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcm9v
dENvbnRhaW5lck5vZGUgPSByb290Tm9kZS0+aXNDb250YWluZXJOb2RlKCkgPyBkb3duY2FzdDxD
b250YWluZXJOb2RlPihyb290Tm9kZS5nZXQoKSkgOiByb290Tm9kZS0+cGFyZW50Tm9kZSgpOwog
ICAgICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3RD
b250YWluZXJOb2RlLmdldCgpLCByYW5nZU9mSW50ZXJlc3QuZ2V0KCksIHJhbmdlT2ZJbnRlcmVz
dExvY2F0aW9uLCByYW5nZU9mSW50ZXJlc3RMZW5ndGgpOwogCi0gICAgICAgIENoZWNrZWRTaXpl
IG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiB9OworICAgICAgICBD
aGVja2VkPENoYXJhY3RlckNvdW50LCBSZWNvcmRPdmVyZmxvdz4gbWlkcG9pbnRMb2NhdGlvbiB7
IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CiAgICAgICAgIG1pZHBvaW50TG9jYXRpb24gKz0g
cmFuZ2VPZkludGVyZXN0TGVuZ3RoIC8gMjsKICAgICAgICAgaWYgKG1pZHBvaW50TG9jYXRpb24u
aGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBtaWRwb2ludFJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290Q29udGFp
bmVyTm9kZS5nZXQoKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNhZmVHZXQoKSwgMCk7CisgICAgICAg
IGF1dG8gbWlkcG9pbnQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJh
Y3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdENvbnRhaW5l
ck5vZGUpLCBtaWRwb2ludExvY2F0aW9uLnVuc2FmZUdldCgpKSk7CiAKLSAgICAgICAgYXV0byBt
aWRwb2ludCA9IG1pZHBvaW50UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgc3RhcnRP
ZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uID0gc3RhcnRPZldvcmQobWlkcG9pbnQpOwogICAg
ICAgICBpZiAoc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uIDwgcmFuZ2VPZkludGVy
ZXN0U3RhcnQpIHsKICAgICAgICAgICAgIHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlv
biA9IGVuZE9mV29yZChtaWRwb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggY2E0NzkzMTA1
NGI4MDI2MjY4NzNlM2Y1M2ZiNWVlMzA1NGU5ODUxMy4uM2I5NDYzMDRkZmI3NTIxMTQxM2U5Zjhk
MTEwN2Y2Zjg3NjU5OWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtODY1LDEyICs4NjUsMTEg
QEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRP
ZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkKIAogICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0
cyA9IFtbbV93ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSBjaGVja1NwZWxsaW5nT2ZT
dHJpbmc6c3RyaW5nLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV07CiAgICAg
Zm9yIChOU1ZhbHVlICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAg
ICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZVZhbHVlXTsKLSAg
ICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgcmVzdWx0
UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZh
bHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1
bHQucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsK
LSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
IHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgIHJlc3VsdC5yYW5n
ZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZSk7CiAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgfQogCkBAIC05MzksMTEgKzkzOCw5IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRl
eHQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRl
dGFpbDsKICAgICAgICAgTlNWYWx1ZSAqZGV0YWlsUmFuZ2VBc05TVmFsdWUgPSBbZGV0YWlsIG9i
amVjdEZvcktleTpOU0dyYW1tYXJSYW5nZV07CiAgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFz
TlNWYWx1ZSk7Ci0gICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFz
TlNWYWx1ZSByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRp
b24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+
IDApOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sZW5ndGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0
aDsKKyAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubG9jYXRp
b24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5y
YW5nZVZhbHVlLmxlbmd0aCA+IDApOworICAgICAgICBncmFtbWFyRGV0YWlsLnJhbmdlID0gKm1h
a2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlKTsKICAgICAg
ICAgZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBbZGV0YWlsIG9iamVjdEZvcktleTpO
U0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2Rl
dGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAgICBmb3IgKE5T
U3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTU3LDIyICs5NTQsMjAgQEAgc3RhdGljIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBP
cHRpb25TZXQ8VGV4dEMKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwog
CiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21p
bmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1
bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNv
bWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4g
MCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDAp
OworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWlu
Z1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3Vs
dC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0
KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFy
KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAg
IE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0
LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5j
b21pbmdEZXRhaWwgaW4gZGV0YWlscykgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWlu
Z0RldGFpbCk7CiAgICAgICAgICAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC05ODEs
OCArOTc2LDcgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJh
eSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICAgICAgICAgICAgICBOU1Jh
bmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0g
ICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgICAgICBkZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxO
U1JhbmdlKTsKICAgICAgICAgICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29t
aW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAg
ICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5
Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpn
dWVzcyBpbiBndWVzc2VzKQpAQCAtOTkzLDM2ICs5ODcsMzEgQEAgc3RhdGljIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8
VGV4dEMKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlw
ZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3Vs
dFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3Vs
dCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVR
dW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1
bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3Vs
dCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFz
aCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2Vt
ZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
YW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5n
VHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rp
b247Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBs
YWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9CkBAIC0xMDQ5LDE2ICsxMDM4LDE4
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhy
YXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewotICAgIE5TTXV0YWJs
ZUFycmF5KiBjb3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBOU1N0cmluZyogZ3Vlc3MgPSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAg
ICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOworICAgIE5TTXV0YWJsZUFycmF5ICpj
b3JyZWN0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgZm9yIChhdXRvJiBndWVz
cyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0
cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJp
bmddOwogICAgIH0KLSAgICBOU1JhbmdlIGdyYW1tYXJSYW5nZSA9IE5TTWFrZVJhbmdlKGdyYW1t
YXJEZXRhaWwubG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKLSAgICBOU1N0cmluZyog
Z3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOwot
ICAgIE5TRGljdGlvbmFyeSogZ3JhbW1hckRldGFpbERpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJh
bmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVz
ZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlvbnMsIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdOwot
ICAgIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVs
bGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1h
ckRldGFpbERpY3RdOworICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbk5TU3RyaW5nID0gZ3JhbW1h
ckRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
QHsKKyAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFt
bWFyRGV0YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVz
Y3JpcHRpb25OU1N0cmluZywKKyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0
aW9ucywKKyAgICB9OworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1
cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRh
aWw6ZGljdGlvbmFyeV07CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGlu
Z1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCkBAIC0x
MTk0LDcgKzExODUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQgYQogICAgIGlmIChbdmlldyBp
c0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKSB7CiAgICAgICAgIHVuc2lnbmVkIHJl
cGxhY2VtZW50TGVuZ3RoID0gYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCk7
CiAgICAgICAgIGlmIChyZXBsYWNlbWVudExlbmd0aCA+IDApIHsKLSAgICAgICAgICAgIE5TUmFu
Z2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRlLmxvY2F0aW9u
LCByZXBsYWNlbWVudExlbmd0aCk7CisgICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2Ug
PSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5yYW5nZS5sb2NhdGlvbiwgcmVwbGFjZW1l
bnRMZW5ndGgpOwogICAgICAgICAgICAgTlNSYW5nZSBzb2Z0U3BhY2VSYW5nZSA9IE5TTWFrZVJh
bmdlKE5TTWF4UmFuZ2UocmVwbGFjZWRSYW5nZSkgLSAxLCAxKTsKICAgICAgICAgICAgIGlmIChh
Y2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5lbmRzV2l0aCgiICIpKQogICAgICAgICAgICAg
ICAgIFsoV2ViSFRNTFZpZXcgKil2aWV3IF9zZXRTb2Z0U3BhY2VSYW5nZTpzb2Z0U3BhY2VSYW5n
ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBl
ZDVlZDIwNDAyOTU1NzhlYmU5OWViODA3NzQyZDdlMDZiMDQ5ZTMwLi5kZDg3YWQ0OWEzNWE4MmUz
MmRmMmJjZWNmNWRlMmZlNzVmYjY4NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTgyMSwxMCArODIxLDkgQEAgLSAoUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogCiAtIChSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdl
SXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbwogewot
ICAgIGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvIHJhbmdlID0gV2Vi
Q29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zcmFuZ2UpOworICAgIGlmICghcmFuZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwg
bnNyYW5nZS5sb2NhdGlvbiArIG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNy
YW5nZS5sZW5ndGggPSBJTlRfTUFYIC0gbnNyYW5nZS5sb2NhdGlvbjsKIAogICAgIGlmIChyYW5n
ZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CiAg
ICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBhdGgg
aXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CkBAIC04MzYsNyArODM1LDcgQEAg
LSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNy
YW5nZSByYW5nZUlzUmVsYXRpdmVUbzoKICAgICAgICAgYXV0byogZWxlbWVudCA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoZWxlbWVudCwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCAqcmFuZ2UpKTsKICAgICB9CiAK
ICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OlBh
cmFncmFwaCk7CkBAIC04NDQsMTAgKzg0Myw5IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4p
X2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAg
ICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3Jh
cGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVT
Y29wZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJD
b3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0p
OwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIG5zcmFuZ2UubG9jYXRpb24s
IG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3RO
b2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJS
YW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgKnJh
bmdlKSk7CiB9CiAKIC0gKERPTVJhbmdlICopX2NvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNS
YW5nZSluc3JhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggNWRkZjIzZWNmM2NiYTViOWJjOWVhOWYyNmVlZGNmMDM3OTk1Njg4Yy4uNmY5MWVmYjlh
OTAxYWUxY2NiYWU1NmM5YjJmZDk5YzE0MDk5NTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzI3OCwxMiArNzI3OCw5IEBAIGNvbnN0ZXhwciBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNr
aW5nVHlwZSB0eXBlCiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENo
ZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0
ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gbnNSZXN1bHQucmFuZ2U7
Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50
eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUobnNSZXN1bHQucmVzdWx0VHlwZSk7Ci0gICAgcmVz
dWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9
IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICByZXN1bHQucmFuZ2UgPSAqV2ViQ29yZTo6bWFrZUNo
YXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBu
c1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggOGRmMWM3MjFiYjY4ZjZlMDEwMTdlNjU1MjRjOTNjMGRmZWUyODg0
Ni4uNDY5NzlkNzFhZmY3NTE5YWUwYTRhZWY5MjFmOWRjOWU4YTUwNDFmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC03OTAsMTQgKzc5MCwxOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hl
Y2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAog
ICAgICAgICBpZiAoZW51bURldGFpbHNPYmotPk5leHQoMSwgJmRldGFpbE9iaiwgJmZldGNoZWQp
ICE9IFNfT0spCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBHcmFtbWFyRGV0YWlsIGRl
dGFpbDsKLSAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxlbmd0aCgmZGV0YWlsLmxlbmd0
aCkpKQorICAgICAgICBpbnQgbGVuZ3RoOworICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+
bGVuZ3RoKCZsZW5ndGgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoRkFJ
TEVEKGRldGFpbE9iai0+bG9jYXRpb24oJmRldGFpbC5sb2NhdGlvbikpKQorICAgICAgICBpbnQg
bG9jYXRpb247CisgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmbG9jYXRp
b24pKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBCU3RyaW5nIHVzZXJEZXNjOwog
ICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+dXNlckRlc2NyaXB0aW9uKCZ1c2VyRGVzYykp
KQogICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7
CisgICAgICAgIGRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICBkZXRh
aWwucmFuZ2UubGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9u
ID0gU3RyaW5nKHVzZXJEZXNjLCBTeXNTdHJpbmdMZW4odXNlckRlc2MpKTsKIAogICAgICAgICBD
T01QdHI8SUVudW1TcGVsbGluZ0d1ZXNzZXM+IGVudW1HdWVzc2VzT2JqOwpAQCAtODI2LDcgKzgz
MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvCiAgICAgICAgIGd1ZXNzZXNCU1RScy5hcHBl
bmQoZ3Vlc3MucmVsZWFzZSgpKTsKICAgICB9CiAgICAgQlN0cmluZyB1c2VyRGVzY3JpcHRpb25C
U1RSKGRldGFpbC51c2VyRGVzY3JpcHRpb24pOwotICAgIGVkLT51cGRhdGVTcGVsbGluZ1VJV2l0
aEdyYW1tYXJTdHJpbmcoQlN0cmluZyhzdHJpbmcpLCBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5s
ZW5ndGgsIHVzZXJEZXNjcmlwdGlvbkJTVFIsIGd1ZXNzZXNCU1RScy5kYXRhKCksIChpbnQpZ3Vl
c3Nlc0JTVFJzLnNpemUoKSk7CisgICAgZWQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0
cmluZyhCU3RyaW5nKHN0cmluZyksIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdl
Lmxlbmd0aCwgdXNlckRlc2NyaXB0aW9uQlNUUiwgZ3Vlc3Nlc0JTVFJzLmRhdGEoKSwgKGludCln
dWVzc2VzQlNUUnMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3Vlc3Nl
c0JTVFJzLnNpemUoKTsgaSsrKQogICAgICAgICBTeXNGcmVlU3RyaW5nKGd1ZXNzZXNCU1RSc1tp
XSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGQ3MDUzZWMzMjA0Y2Fh
ZWUwZTQ5YTgxZTE1YmUxMTI4MzQ5OGNkYzQuLjE3YWU1YjBhNTY4YzYzNzU1N2E0NTJjNTVhZDMz
MjhiOTM3MWJmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC03NzYxLDIz
ICs3NzYxLDIxIEBAIEhSRVNVTFQgV2ViVmlldzo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VG
b3JUZXN0aW5nKFVJTlQgbG9jYXRpb24sIFVJTlQgbGVuZ3RoCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBJbnRSZWN0IHJlc3VsdEludFJlY3Q7Ci0gICAg
cmVzdWx0SW50UmVjdC5zZXRMb2NhdGlvbihJbnRQb2ludCgwLCAwKSk7Ci0gICAgcmVzdWx0SW50
UmVjdC5zZXRTaXplKEludFNpemUoMCwgMCkpOwotICAgIAotICAgIGlmIChsb2NhdGlvbiA+IElO
VF9NQVgpCisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWVsZW1lbnQp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgaWYgKGxlbmd0aCA+IElOVF9NQVggfHwgbG9j
YXRpb24gKyBsZW5ndGggPiBJTlRfTUFYKQotICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gbG9j
YXRpb247Ci0gICAgICAgIAotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9uKCku
cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5ndGgp
OworCisgICAgQ2hhcmFjdGVyUmFuZ2UgY2hhcmFjdGVyUmFuZ2U7CisgICAgY2hhcmFjdGVyUmFu
Z2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sZW5ndGggPSBsZW5n
dGg7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgY2hh
cmFjdGVyUmFuZ2UpKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
Ci0gICAgIAorCiAgICAgSW50UmVjdCByZWN0ID0gZnJhbWUuZWRpdG9yKCkuZmlyc3RSZWN0Rm9y
UmFuZ2UocmFuZ2UuZ2V0KCkpOwotICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS52aWV3KCktPmNv
bnRlbnRzVG9XaW5kb3cocmVjdCk7CisgICAgSW50UmVjdCByZXN1bHRJbnRSZWN0ID0gZnJhbWUu
dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOwogCiAgICAgcmVzdWx0SW50UmVjdC5zY2Fs
ZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJL
aXRBUEkueGNzY2hlbWUgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZQppbmRleCA1
ZjVlYzJlNGFlYzM5ZWRjMzlmYzdmODVjN2Q5NjdlNWM0OTQ2OTRlLi4wNTVlN2Y2ODllNmRlMTA2
ZWZjMTQ4ZmJmODVkNDRiOGNkZTc1Yjk0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktp
dEFQSS54Y3NjaGVtZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZQpAQCAt
NTAsNiArNTAsMjAgQEAKICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFp
bmVyOlRlc3RXZWJLaXRBUEkueGNvZGVwcm9qIj4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJl
bmNlPgogICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICA8Q29tbWFuZExp
bmVBcmd1bWVudHM+CisgICAgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAg
YXJndW1lbnQgPSAiLS1ndGVzdF9saXN0X3Rlc3RzIgorICAgICAgICAgICAgaXNFbmFibGVkID0g
Ik5PIj4KKyAgICAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudD4KKyAgICAgICAgIDxDb21tYW5k
TGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9ICItLWd0ZXN0X2ZpbHRlcj1Eb2N1
bWVudEVkaXRpbmdDb250ZXh0LlNpbXBsZSIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMi
PgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgICAgPENvbW1hbmRMaW5l
QXJndW1lbnQKKyAgICAgICAgICAgIGFyZ3VtZW50ID0gIi0taGVscCIKKyAgICAgICAgICAgIGlz
RW5hYmxlZCA9ICJOTyI+CisgICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8
L0NvbW1hbmRMaW5lQXJndW1lbnRzPgogICAgPC9MYXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFj
dGlvbgogICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmQwZjBh
ZDkwYWM5OWQzZDJkNjY0YmNjMTRiMTA0YzE5YTliNTNiOC4uYjI3YzdhMTQxMjBmOTJmZDFmMmI1
MTRlODg0ZjEyNTUwODllN2YyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaWRld2F5cyBqaWdnbGVzIHdo
ZW4gc2Nyb2xsaW5nIHRoZSBzaGVsdmVzIG9uIGJldGEubXVzaWMuYXBwbGUuY29tCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1v
dXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQu
dHh0CmluZGV4IDBmNDBlZmQ4M2NiYTgwMDJkMThhMTYwN2I5YzU4NzJlZmUxZGU3MmMuLjIzNGQz
Mzk2NzNhMjM2OGEzZTg0MjYxNzhlNzEyMTNmODQxYTBmMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMt
Y3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Rl
eHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0x
LDEyICsxLDEyIEBACiB0ZXh0CiB0ZXh0CiB0ZXh0Ci1UaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1h
cmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBvdXQgb2YgYm91
bmRzCitUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2gg
d2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMQogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0TWFy
a2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyBmYWxzZQorUEFTUyBpdGVtMS5pc1RleHRNYXJr
ZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91
dC1vZi1ib3VuZHMtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Rl
eHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbAppbmRleCAwYWIyZjE3
OTU5OGRiYTA3NWMwNmVkNzI4YWYxMTA2OTZkNWU3MmExLi42YWM3ZjlmNjcyY2I2ODUxNWUwN2Ez
YzUwMTBlZTY4MDBhMzFiYmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9m
LWJvdW5kcy1jcmFzaC5odG1sCkBAIC0xNCwxMiArMTQsMTIgQEAgdGV4dAogCiA8c2NyaXB0Pgog
Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXgg
Zm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICBk
ZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90
IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggZ3JlYXRlciB0aGFuIDJeMzEiKTsKIAogICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKICAgICAgICAgdmFyIGl0ZW0xID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIHNob3VsZEJlRmFsc2Uo
Iml0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5
OTk5OSkpIik7ICAgICAgIAorICAgICAgICBzaG91bGRCZVRydWUoIml0ZW0xLmlzVGV4dE1hcmtl
clZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIik7CiAgICAgfQog
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2Zp
cnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVj
dGVkLnR4dAppbmRleCA2YTQ4NWFlYjI4MjY1NTg3ZTNkM2NjNjQ0OTc0M2JkYjU2ZTAzOWEyLi5i
YjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFp
bi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDE3IEBA
Ci1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogMTIz
NDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAot
MTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTEwLDU3
Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3Miw0MCwxOAotMCwwLDAs
MAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhlIGJlZ2lubmluZzogKDAs
MCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDAp
LCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDApLCAoNTgsNTcy
LDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCksICg1OCw1NzIsMCwxOCkK
K2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAo
NSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIpLCAoNTAsNTcyLDgsMTgp
CitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQorZmlyc3QgbGluZTogKDAs
NiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEwLDU3Miw0OCwxOCkKK2Zp
cnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZSB3aXRo
b3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAoMTgsNTcyLDQwLDE4KQor
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwgKDU4LDU3MiwwLDE4KQor
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCwwKSwgKDU4LDU3MiwwLDE4
KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywxKSwgKDU4LDU3MiwwLDE4
KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0Mjk0OTY3Mjk1KSwgKDU4
LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
bWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKaW5kZXggNzky
NThiMTlhZWYxY2Y2YmFiZjljYTVjZTNkZDVkOGQyMjZkNjBkZS4uNjJjZGM5YjgyNmY5NjVmODU1
ZDdkNWM4N2FlN2U1OTBkNDQ2MjlkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFp
bi5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7
Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQog
PC9zdHlsZT4KQEAgLTEyLDcgKzcsNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9
CiA8Ym9keSBjb250ZW50ZWRpdGFibGU+CiAxMjM0NTYKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLQogCXZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib2wiKTsKIAkKIAlmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTIxLDQwICsxNSw0MiBAQCBi
b2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVuZENo
aWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3RhcnQs
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCArICIs
IiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9CisK
IAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci0JCQotCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9u
KGRvY3VtZW50LmJvZHksIDApOwogCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCAw
KSk7IC8vIGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0IGF0
IHRoZSBlbmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xs
ZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0ZXIK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUs
IDEpKTsgLy8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2KSk7
IC8vIGZpcnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5m
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5NDk2
NzI5NSkpOyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkpOyAv
LyBvdXQgb2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMSkp
OyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCisJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRo
ZSBiZWdpbm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJzdCBj
aGFyYWN0ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIs
IDYsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAwKTsK
KwkJCWxvZ1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFzdCBj
aGFyYWN0ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7CisJ
CQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBs
aW5lIiwgMCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dSZWN0
KCJmaXJzdCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIHdp
dGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgi
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0KCJv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1JlY3Qo
Im91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVjdCgi
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJCX0g
Y2F0Y2ggKGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKIAkJ
fQotCQkKKwogCQl2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKIAkJ
Y29uc29sZS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKIAkJZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChjb25zb2xlKTsKLQkJCiAJfSBlbHNlIHsKIAkJZG9jdW1lbnQud3JpdGUoIihj
YW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CiAJfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKaW5kZXggYWNmZDUyZjBiOTQ4YTY1M2ZjMDZm
MjhjNTNmZDI3MjE2NDBhOGFkNC4uYmIwMmM3YmUxMjBlODA3MGYyMDQ1ZGEzNjVkMmQwOWQzNDY2
YjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0
Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0
ZWQudHh0CkBAIC0xLDI0ICsxLDE3IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVk
aXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byA0IG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogMTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci01
OCw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcy
LDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3Miw0
MCwxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhlIGJl
Z2lubmluZzogKDAsMCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFy
YWN0ZXI6ICgxLDApLCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2
LDApLCAoNTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCksICg1
OCw1NzIsMCwxOCkKK2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xhc3Qg
Y2hhcmFjdGVyOiAoNSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIpLCAo
NTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQorZmly
c3QgbGluZTogKDAsNiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEwLDU3
Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQorZmly
c3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAoMTgs
NTcyLDQwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwgKDU4
LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCwwKSwg
KDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywxKSwg
KDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0Mjk0
OTY3Mjk1KSwgKDU4LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQu
aHRtbAppbmRleCBmZGNmYzZkNGIzNzc5YjliZDM5ZDg3NzFjZDJmYjBkYmE2MzBmMjFlLi5lNWJm
Mjg2NjBjYzM3OGI2YWVlYmJjMzZkM2JlOWY5Mjk5ZGVmYTk0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbApAQCAtMSwxMCArMSw1IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgdGVzdFJ1bm5lci5kdW1wRWRp
dGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4KIGJvZHkgeyBtYXJnaW46IDEw
OyBwYWRkaW5nOiAwIH0KIDwvc3R5bGU+CkBAIC0yMSwzMyArMTYsMzYgQEAgYm9keSB7IG1hcmdp
bjogMTA7IHBhZGRpbmc6IDAgfQogCQlpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKIAkJY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsK
IAl9Ci0JCisKKyAgICBmdW5jdGlvbiBsb2dSZWN0KGNvbW1lbnQsIHN0YXJ0LCBsZW5ndGgpCisg
ICAgeworICAgICAgICBsb2coY29tbWVudCArICI6ICgiICsgc3RhcnQgKyAiLCIgKyBsZW5ndGgg
KyAiKSwgKCIKKyAgICAgICAgICAgICsgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZShzdGFydCwgbGVuZ3RoKSArICIpIik7CisgICAgfQorCiAJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0JCQogCQl0cnkgewotCQkKIAkJCXRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotCQkKKwogCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50
LmJvZHksIDQpOwogICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0
KCI1NiIsIDAsIDEpOwogCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCAwKSk7IC8v
IGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEpKTsg
Ly8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2KSk7IC8vIGZp
cnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5NDk2NzI5NSkp
OyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkpOyAvLyBvdXQg
b2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQotCQkJbG9nKHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMSkpOyAvLyAt
Ii0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0KKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBiZWdp
bm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0
ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYsIDAp
OworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAwKTsKKwkJCWxv
Z1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0
ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7CisJCQlsb2dS
ZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwg
MCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dSZWN0KCJmaXJz
dCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIHdpdGhvdXQg
dGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgib3V0IG9m
IGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0KCJvdXQgb2Yg
Ym91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBv
ZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVjdCgib3V0IG9m
IGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJCX0gY2F0Y2gg
KGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKIAkJfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDliM2Q3
MDcyNDI3ZGNlZDA1ZTM2NjhiODY3ODkyN2JkMmE1MDEzZTAuLmM1NTM3ZTQ3YjZmOTkzNThhZTUx
Y2U2ZDcwMDI4MWI3YWNkMDg3N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0OSw3ICs4NDksMTAgQEAgd2Via2l0Lm9yZy9iLzIwMzUx
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2l6aW5nL2R5bmFtaWMt
YXZhaWwKICMgU3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdLMQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlk
YXRlIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMDUzMTQgWyBDYXRhbGluYSBdIGVkaXRpbmcv
bWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVy
ZSBdCisjIFJlc3VsdHMgYXJlIGdvb2Qgb24gQ2F0YWxpbmEgYW5kIG5ld2VyLiBEZWxldGUgdGhl
c2UgbGluZXMgd2hlbiB3ZSBzdG9wIHN1cHBvcnRpbmcgdGhlc2Ugb2xkZXIgdmVyc2lvbnMgb2Yg
bWFjT1MuCitbIFNpZXJyYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIEhpZ2hTaWVycmEgXSBlZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUg
XQorWyBNb2phdmUgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA1NDEyIFsgTW9qYXZl
IERlYnVnIF0gd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxs
cy5odG1sIFsgVGltZW91dCBdCiAKQEAgLTk2Myw0ICs5NjYsNCBAQCB3ZWJraXQub3JnL2IvMjA5
NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1cnNvci1uby1tb3VzZW1vdmUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDk1NjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtIFsgUGFzcyBD
cmFzaCBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1m
cmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hp
bGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhY2Ix
ZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1YWVkZDcxMWFhZTlkLi5mNDI0NGRiZjEzOGZiOWM4MjQ3
YzIzOTJlMzcyYTg0OWJhNTRjZmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjMsOSArMjIzLDkgQEAgd2Via2l0Lm9yZy9iLzEwNTYx
NiBlZGl0aW5nL21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdpbm5pbmctb2YtYXV0b2Nv
cnJlY3QKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvcmVtb3Zpbmct
dW5kZXJsaW5lLWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlv
bi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxs
aW5nL2FjY2VwdC1jYW5kaWRhdGUtYWxsb3dzLWF1dG9jb3JyZWN0LW9uLW5leHQtd29yZC5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2Fj
Y2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sIFsgRmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWlu
Y2x1ZGVzLWh5cGhlbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1
NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5l
cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFy
a2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNo
LWJ0LXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0
aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC0xMDc0LDQg
KzEwNzQsNCBAQCB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5Njcy
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5o
dHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4OCBt
ZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBw
b3J0LWNsaWNrLmh0bWwgWyBQYXNzIENyYXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cit3ZWJraXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJl
ci1zdXBwb3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMzcwNmMxOTVjMjRm
ZTkwNjkzYTJiYWNiODI3M2EyNWNkZmI1NmEwLi41ZTk2Yjc5OWY5OTQyM2MwM2YxMWJhODhmNDkw
NWY3NmUzYTY5MTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBd
IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5v
cmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZh
c3QvdGV4dC9lbW9qaS1nZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0
LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2Vs
ZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0
MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBG
YWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
bWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9y
Y2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjRjYzExNTE5MGZmNzRkNWI4ZmU0Y2MyNmQ0YjJkMjY0YzJlZTVjMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+
IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQg
PiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi0xMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1
NzIsMCwxOAotNjEsNTcyLDAsMTgKLTYxLDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTIsNTcyLDks
MTgKLTUyLDU3Miw5LDE4Ci01Miw1NzIsOSwxOAotMTAsNTcyLDUxLDE4Ci0xMCw1NzIsNTEsMTgK
LTEwLDU3Miw1MSwxOAotMTgsNTcyLDQzLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0w
LDAsMCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0
dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5n
ZS0wMDEtZXhwZWN0ZWQudHh0CmluZGV4IDVhYWNlMDc0MDEwMTA2MGVjY2M0OTIwNTc0ODdiYzZi
ZDgzMDM3MzkuLjc1ODU4Y2U2NTM4YTdjNTJkMDhkZjVjM2QzMmM0MTIxZTA0Mjc0NDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhw
ZWN0ZWQudHh0CkBAIC04LDUgKzgsNSBAQCBUZXN0aW5nIHRleHQgd2l0aCBiciBlbGVtZW50cyAo
PGRpdj48YnI+PC9kaXY+aGVsbG88YnI+KQogKDEsIDEwMCk6IGhlbGxvCiAoNiwgMSk6CiAoNywg
MSk6Ci0oMTAwLCAwKTogdW5kZWZpbmVkCi0oMTAwLCAxMDApOiB1bmRlZmluZWQKKygxMDAsIDAp
OgorKDEwMCwgMTAwKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5n
ZS0wMDEuaHRtbAppbmRleCAzYTkzMDMyOGUxMDYwMzlmMTUzMTNmNGRjNDJhMTQ0ZWRkOGViNDVi
Li45NDMxYTM5ZTRlNDUzYjBiYThlNjU1MDgxMmI3NzhmMzJiZGY1ZWQ3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCkBAIC0zNCw4ICszNCw4
IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KICAgICAgICAgICAgIGxvZygiKDEs
IDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFu
Z2UoMSwgMTAwKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2coIig2LCAxKTogIiArIHRleHRJ
bnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg2LCAxKS5zdHJpbmco
KSk7CiAgICAgICAgICAgICBsb2coIig3LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0
cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg3LCAxKS5zdHJpbmcoKSk7IC8vIHNob3VsZCBiZSBl
bXB0eQotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIu
YXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVuZGVm
aW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxl
ci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1
bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9s
bGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSBl
bXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxl
ci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSBl
bXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9
ICIiOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0
dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4
cGVjdGVkLnR4dAppbmRleCBkNzk3ZDIyMzExYzFlM2Y5ZTU2ZTE3ZWExNzM1OGVhMWMyOWRkNmU2
Li42ODAxMjc5MDZjMWU4NjdiYmY2ZTgxMjQxNzZjZTEyMWU0NjgzYmZmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTcs
OCArNyw4IEBAIFRlc3Rpbmcgc3R5bGVkIHRleHQgKDEyPGI+MzxpPjQ1NjwvaT48L2I+KQogKDAs
IDEwMCk6IDEyMzQ1NgogKDUsIDEpOiA2CiAoNSwgMik6IDYKLSgxMDAsIDApOiB1bmRlZmluZWQK
LSgxMDAsIDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6IAorKDEwMCwgMTAwKTogCiAKIFRlc3Rp
bmcgcHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkKIHRvdGFsIGxlbmd0aDogMTUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRl
ZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKaW5kZXggODcxZGM3
YjI3YWRlZWE0ZTI1Mzg1ZWJmYjNjYTQzNGYyMjg5YjBjMy4uY2Y2YzkxMWQ0YjU3NWIyZjc5NjRj
NzFlZjU2MDczM2U5NzVkYmY2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6
IDAgfQogICAgICAgICAgICAgbG9nKCIoMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIu
YXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgwLCAxMDApLnN0cmluZygpKTsKICAgICAgICAg
ICAgIGxvZygiKDUsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDUsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDUsIDIpOiAi
ICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDUsIDIp
LnN0cmluZygpKTsKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250
cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBi
ZSB1bmRlZmluZWQKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENv
bnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91
bGQgYmUgdW5kZWZpbmVkCisgICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0
Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91
bGQgYmUgZW1wdHkKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENv
bnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91
bGQgYmUgZW1wdHkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbG9nKCJcblRlc3RpbmcgcHJv
cGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkiKTsKICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIjEgJm5ic3A7MiAmbmJzcDsmbmJzcDszICZuYnNwOyZuYnNwOyZu
YnNwOzQmbmJzcDs1IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394851</attachid>
            <date>2020-03-28 19:26:19 -0700</date>
            <delta_ts>2020-03-28 19:51:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328192618.patch</filename>
            <type>text/plain</type>
            <size>162867</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFlNDkwOWMwODhhZGI4
OTU0NTk0MjYyYWI0MWI4MWIyYmUxYzQ0Yi4uNDEwYzNlYThhZDZiNjczNjNjZWMwNTkyMzkzZDc2
YTNjZTE0NDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yOCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBTY3JvbGxMYXRjaGluZyBs
b2cgY2hhbm5lbCBhbmQgaW1wcm92ZSBzb21lIGxvZ2dpbmcgZnVuY3Rpb25hbGl0eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3MzVkOWRmMjk2Y2ZlZWQ1ODI1YjBiZDQxNWI1YzcwYmIwOTk5ZDY0Li42OWQwNTBlMjE3
MzE0OGYxZGU0NWFiYzEzNjJmNDI2N2NmN2VhMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBA
CisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUg
cmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0y
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbGF5
IHByb2Nlc3Mgc3VzcGVuc2lvbiBmb3IgYSB3aGlsZSBhZnRlciBsb2FkaW5nIGFuIGFwcCBsaW5r
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQz
NGRmOGRmNTRjNzkwMTc3Zi4uYzRkNjM2OGE2NzlhYjg1YWY5MDliOWNlNzMyMTNmOGQxN2ZhNDU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAz
LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBzaG91bGQgYXZvaWQgcmVhZGluZyBVUkwgc3RyaW5ncyBmcm9tIHRoZSBwYXN0
ZWJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5YWQ1Mzc4NTMyNGJiMzRjMGRkYjlkY2MxMTcw
YzhjZGQ0YTM2NmE4Li43OTdkM2MxMzk0ODMzYWQ4OGI3NTM0ZGQyNGUzZGZlNjc2MTlmZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5u
ZWxSZWdpc3RyeS5oCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cy5oCiAKKyAgICBlZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKICAgICBlZGl0aW5nL0NsaXBib2Fy
ZEFjY2Vzc1BvbGljeS5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCiAgICAg
ZWRpdGluZy9Db21wb3NpdGlvblVuZGVybGluZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWEzYzRiNGRmMTk0MjkzOTRhZjM4
M2ZmMjUwZjYwMjU5OTY3OTQyYi4uYzU5MGUxNWViMGZmMGQ3MWMzOTY4MzQ2YzdlNTdiNjRkNzA1
NzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjczNCw2ICsyNzM0LDcgQEAKIAkJOTNGMTlCMTcwODI0NUU1OTAwMUU5QUJD
IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0YxRDMxQTA1NThDQzVDMDA4MjFCQzAgLyogbGliaWN1Y29yZS5keWxp
YiAqLzsgfTsKIAkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUI4
MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggKi87IH07CiAJCTkzRjFENUMx
MTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAv
KiBKU1dlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKKwkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4
IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFF
RTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAv
KiBXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3Qzkg
LyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vw
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBK
U0NvbW1lbnQuaCAqLzsgfTsKQEAgLTEwOTM0LDYgKzEwOTM1LDcgQEAKIAkJOTNGMUQ1QjkxMkQ1
MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdMTG9zZUNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0YxRDVCRTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAvKiBK
U1dlYkdMTG9zZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJHTExvc2VDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjJDQzkx
MjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y2RjFFQjEyN0Y3MEIxMDA1NUNCMDYg
LyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYx
RUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTc1OSw2ICsyMTc2MSw3IEBACiAJCQkJOTMzMDlEOEMwOTlFNjQ5MTAwNTZFNTgx
IC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCAqLywKIAkJCQlGNEQ5ODE3RTIxOTVGQkY2MDA4
MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcCAqLywKIAkJCQlGNEQ5ODE3RDIxOTVG
QkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8sCisJCQkJOTNGMkNDOTEy
NDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8sCiAJCQkJN0MzQTkxRTUxQzk2
M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovLAogCQkJCTkzMzA5RDhE
MDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMz
MDlEOEUwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggKi8sCkBAIC0y
OTY0Miw2ICsyOTY0NSw3IEBACiAJCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5u
ZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkw
RDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTU5MkY3ODFBOTJB
QTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5
IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUw
MEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ4MzEwNzVjZDMxMWQ5
NTJjMmIxODY1OWJmZTM0ODU0ZWExN2M3NWIuLmQ1NjI5MDlmZmQyMWQ1ODQ2YTM3NDhhNDc0ZDZl
MzljZWE4YTQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBA
IC0yMzM4LDExICsyMzM4LDEwIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdl
ICopbGl2ZVJhbmdlCiAKIC0gKFJlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKW5zcmFuZ2UKIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAg
YXV0byByYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRf
TUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAg
ICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247Ci0gICAgICAg
IAorCiAgICAgLy8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBj
YWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZl
biBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbgogICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhp
cyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3Nl
IGlzIG5vdApAQCAtMjM1Miw3ICsyMzUxLDkgQEAgLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRv
RE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3Qg
PSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxl
RWxlbWVudCgpOwogICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIG5zcmFuZ2UubG9jYXRpb24s
IG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgKnJhbmdlKSk7CiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcg
YSBWaXNpYmxlUG9zaXRpb24gYW5kIGNvbnZlcnQgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KaW5kZXggODU5MmYwNzA3ODNkZjVhZDE4MzgyNzk0ZTVhZTlhZjk4YzBl
ZjJiMy4uYTNmNTNjOGUxZWEzNjM0YzRhOGU1YjA5MmFhOGYzNzIwMGJmYmY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTEwOTgsOSArMTA5OCw5IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywKICAgICAgICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAg
ICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOwotICAg
ICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3Np
YmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5s
b2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNz
cGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0
aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNN
YWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgp
KTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5T
QWNjZXNzaWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQucmFuZ2UubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdl
Lmxlbmd0aCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMzY4MCwx
OSArMzY4MCwyMSBAQCAtIChpZClfdGV4dE1hcmtlckZvckluZGV4OihOU0ludGVnZXIpdGV4dElu
ZGV4CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHRleHRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLCB0ZXh0SW5kZXgsIDApOwotICAgIGlmICghdGV4dFJhbmdlIHx8ICF0
ZXh0UmFuZ2UtPmJvdW5kYXJ5UG9pbnRzVmFsaWQoKSkKKworICAgIGF1dG8qIGRvY3VtZW50RWxl
bWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UodGV4dFJhbmdlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKLSAgICB9Ci0gICAgcmV0
dXJuIG5pbDsKKworICAgIGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
YXV0byBib3VuZGFyeSA9IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHRleHRJbmRleCk7CisgICAgYXV0byBj
aGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdl
KGNyZWF0ZUxpdmVSYW5nZSh7IGJvdW5kYXJ5LCBib3VuZGFyeSB9KSwgdHJ1ZSk7CisgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsK
IH0KIAogLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdp
dGggdGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGY0ZTUxNzUwMTFhN2FmODA0
MjlkNjJkNjExOWMwODM5MDNjZmEzZDguLmUxM2UzM2M4ZmE2ZDgyYjZmOGI2YTIzODRkOTVhOGJm
NDgxODBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjpkZXRhY2goKQogICAgIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzID0geyB9OwogfQog
Ci1WZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0
VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcmFuZ2UpCitWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBm
b3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4dEl0ZXJhdG9yLmF0RW5k
KCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCkBAIC02OCwxMyArNjgsMTMgQEAgVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMo
Y29uc3QgUmFuZ2UmIHIKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCi12b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKK3ZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KQogewogICAgIGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkp
CiAgICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50
TWFya2VyKHR5cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZz
ZXQoKSwgZGVzY3JpcHRpb24pKTsKIH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKIHsKICAgICBmb3Ig
KGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRN
YXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0
ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCkpKTsKQEAgLTEy
Miw3ICsxMjIsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYgcgogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihSYW5nZSYg
cmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQordm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQogewogICAgIGZvciAoYXV0byB0
ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0
ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25SZXN1bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5l
bmRPZmZzZXQoKSwgU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCksIG1ldGFkYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNjllMjU0
ZDVlNzJmMTU3NmMzMWRjMTdjZWY4YjZmYzc4ODlhN2VjNC4uMzYyZDc0NzQzNDllNGJjZjhiMzYz
OWNkZjQxMmNhNzlhM2M4YjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmFu
Z2U7CiBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOwogCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CisKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC00OCwxNSArNTAsMTUgQEAgcHVibGljOgogICAgIH5Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFu
Z2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIERvY3VtZW50TWFya2VyOjpEYXRhJiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdl
JiwgYm9vbCBhY3RpdmVNYXRjaCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBj
b25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CiAgICAgdm9pZCBhZGREaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlu
dGVycHJldGF0aW9ucyk7Ci0gICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoUmFuZ2Um
LCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9pZCBhZGREaWN0YXRpb25S
ZXN1bHRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRh
ZGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGFkZERyYWdnZWRDb250ZW50TWFya2VyKFJhbmdlJik7
CiAKQEAgLTEwNyw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRN
YXJrZXIoTm9kZSYsIGNvbnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxS
YW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICB0
eXBlZGVmIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwogICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0Pj4g
TWFya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBhNGRiYTlmOTNj
MWU4MWZlNWUyYjE3YWU3Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2MmNkM2E1YTEy
Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJWE1FOiBDb25z
aWRlciByZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdl
IG5vcm1hbGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBv
YmplY3RzLgogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNp
Z25lZCBvZmZzZXQpOwotUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNhZjg1Y2I4MzA3
OGQ3YTllNTEyMTdmMTQwNTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1YjcwMjA4YTdmN2Iz
MDYyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCArNTMsMjMgQEAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYg
YikKICAgICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQog
CisvLyBGSVhNRTogTm9kZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4gYWxnb3JpdGht
IGxpa2UgdGhpcywgc2luY2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4gdGhlIGlzQ2hh
cmFjdGVyRGF0YU5vZGUgdmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0aWMgYm9vbCBm
YXN0SXNDaGFyYWN0ZXJEYXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuICFub2Rl
LmlzQ29udGFpbmVyTm9kZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2RlLmlzQ2hhcmFj
dGVyRGF0YU5vZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBOb2RlOjpsZW5n
dGggc2luY2UgdGhlIERPTSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2RlJ3MgbGVuZ3Ro
Lgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmIChm
YXN0SXNDaGFyYWN0ZXJEYXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFj
dGVyRGF0YT4obm9kZSkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRDaGlsZE5vZGVz
KCk7Cit9CisKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2Rl
JiBub2RlKQoreworICAgIHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxlbmd0aChub2Rl
KSB9IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNkOTg1NWE4OTE5
YzM3NmUxNTdkMWNlZDljNWRlZWQ3YTE5NTcyNC4uYmQwZTFjNGVjZDBhMDE4NDM3ZjE5OTA0NmU1
NTdkY2EyY2MyNzEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUxLDYgKzUxLDkg
QEAgc3RydWN0IFNpbXBsZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+
Jik7CiB9OwogCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dF
QkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhO
b2RlJik7CisKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBs
ZVJhbmdlJik7CiAKIGlubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJh
bmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBlYmQ0Y2FiMzI2ZjJjMDk3NTU0MGNiMWQ2ZjllN2Ex
MjI3OWIyOTg4Li4xMjY4MTNjNmRkMGIzYjc4ZGRiZDMyMmMzMTMzNGU2ODgwNmY5OGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAKQEAgLTU5OSwxNyArNTk5LDE4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2UuY2xvbmVSYW5nZSgpLCBhbHRl
cm5hdGl2ZSktPmFwcGx5KCk7CiAKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZp
ZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5p
bmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxh
OiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRyZWVTY29wZVJv
b3QucHRyKCksIHBhcmFncmFwaE9mZnNldEluVHJlZVNjb3BlLCBjb3JyZWN0aW9uT2Zmc2V0SW5Q
YXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhT
dGFydENvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyh0cmVlU2NvcGVSb290KSwgcGFyYWdyYXBoT2Zmc2V0
SW5UcmVlU2NvcGUpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3Jy
ZWN0aW9uID0gbWFrZUJvdW5kYXJ5UG9pbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKKyAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKLSAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgQ2hhcmFj
dGVyQ291bnQgYWx0ZXJuYXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gYWx0ZXJuYXRpdmUu
bGVuZ3RoKCk7CisgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJh
bmdlKHsgdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24sICp1cGRhdGVk
UGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gfSwgeyBjb3JyZWN0aW9uT2Zmc2V0SW5Q
YXJhZ3JhcGgsIGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCB9KTsKIAogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKHBsYWluVGV4
dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBpZiAocGxhaW5U
ZXh0KHJlcGxhY2VtZW50UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLm1h
cmtlcnMoKTsKKyAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1
bWVudCgpLm1hcmtlcnMoKTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVz
VG9BZGQpCiAgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtl
clR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5h
dGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4YWI3NmU1YmU0
NjBiMjM0OS4uMDg0ZWE3MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI4MywxMiAr
MjgzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdT
dHlsZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBo
KHBhcmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAgICAgICAgYXV0
byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZS5nZXQoKSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBl
bmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQot
ICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBl
bmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFydFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRleCwgVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBh
dXRvIGVuZFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFy
YWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5k
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwog
fQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRl
RW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q2hhcmFjdGVyUmFuZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDFhZWRiZmYzNzJhYmY5YjdmZDJhMjZlZjM3
N2NlYmNiNWQyZjFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
aGFyYWN0ZXJSYW5nZS5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorCisjaWYgVVNFKEZPVU5EQVRJT04pCit0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBO
U1JhbmdlOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQ2hhcmFjdGVy
Q291bnQgPSBzdGQ6OnNpemVfdDsKKworc3RydWN0IENoYXJhY3RlclJhbmdlIHsKKyAgICBDaGFy
YWN0ZXJDb3VudCBsb2NhdGlvbiB7IDAgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAw
IH07CisKKyNpZiBVU0UoQ0YpCisgICAgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlm
CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBvcGVyYXRvciBOU1JhbmdlKCkgY29uc3Q7Cisj
ZW5kaWYKK307CisKKyNpZiBVU0UoQ0YpCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNo
YXJhY3RlclJhbmdlKENGUmFuZ2UpOworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKK09w
dGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisjZW5k
aWYKKworLy8gaW5saW5lcworCisjaWYgVVNFKENGKQorCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2U6
Om9wZXJhdG9yIENGUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBDRlJhbmdlTWFrZShsb2Nh
dGlvbiwgbGVuZ3RoKTsKK30KKworaW5saW5lIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtl
Q2hhcmFjdGVyUmFuZ2UoQ0ZSYW5nZSByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UubG9jYXRp
b24gPT0ga0NGTm90Rm91bmQgfHwgcmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKHJh
bmdlLmxlbmd0aCA+PSAwKTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPCAwIHx8IHJhbmdlLmxl
bmd0aCA8IDApCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJh
Y3RlclJhbmdlIHsgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxvY2F0aW9uKSwg
c3RhdGljX2Nhc3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxlbmd0aCkgfTsKK30KKworI2VuZGlm
CisKKyNpZiBVU0UoRk9VTkRBVElPTikgJiYgZGVmaW5lZChfX09CSkNfXykKKworaW5saW5lIENo
YXJhY3RlclJhbmdlOjpvcGVyYXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNN
YWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0
ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIENoYXJhY3RlclJhbmdlIHsgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0
aCB9OworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxNTRiYjg3YzMz
MWQ0MWQ5MTYxNjJlN2Q5MTEwZDQ3ODgyN2QxYzcwLi40NmMyNTE3MmViMmJlZGFmMjVlNzkzMjNm
NWJmMzgyMzljYTEwYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFy
YWdyYXAKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9PSBkZXN0aW5hdGlvbikKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgaW50IGVu
ZEluZGV4ID0gLTE7CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IHN0YXJ0SW5kZXg7Cisg
ICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJ
c0RpcmVjdGlvbmFsID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlm
IChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpOwpAQCAtMTUyOCwxNiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJh
Z3JhcAogICAgIGlmIChzdHlsZUluRW1wdHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBh
cmFncmFwaCkKICAgICAgICAgYXBwbHlTdHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkp
OwogCi0gICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAg
ICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAg
ICAgICAvLyBGcmFnbWVudCBjcmVhdGlvbiAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3Rs
eSB1c2VzIHJlZ3VsYXIKICAgICAgICAgLy8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNv
bWUgc3BhY2VzIHRoYXQgd2VyZSByZW5kZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBj
YXVzZXMgc3BhY2VzIHRvIGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAg
VGhpcyByZXN1bHRzCiAgICAgICAgIC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCB3aXRoIGEgbG9jYXRpb24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBk
b2N1bWVudCAod2hpY2ggd2lsbCByZXR1cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4g
c3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxl
Um9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgs
IDAsIHRydWUpOwotICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5k
aW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5k
LT5zdGFydFBvc2l0aW9uKCksIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwor
ICAgICAgICBhdXRvIHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxl
Um9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgYXV0byBlbmQg
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25J
bmRleCArICplbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVu
ZCwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggNjA0N2I5NDY0M2UzZDVlYTU3M2FmYmRjZjY3
NmIyMDExYWM4NzVmNy4uZGZiYTcyMWY1ZWFkM2EyMDNlZDZmNjRiOWJjMDVlYWQyMzllYzMzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE0LDEyICsxMTE0LDEwIEBAIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3NpCiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIGF1dG8gcmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRl
eCwgMCwgdHJ1ZSk7Ci0gICAgLy8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4g
ZWRpdGluZyBvcGVyYXRpb25zIGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAotICAgIC8vIG9m
IHByb2JsZW1zIHdpdGggVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2li
bGVQb3NpdGlvbnMuCi0gICAgaWYgKCFyYW5nZSkKKyAgICBpZiAoIXNjb3BlKQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIHJldHVybiB7IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkgfTsKKyAgICBD
aGFyYWN0ZXJDb3VudCBpbmRleEFzQ2hhcmFjdGVyQ291bnQgPSBpbmRleDsKKyAgICByZXR1cm4g
eyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBpbmRleEFzQ2hhcmFjdGVyQ291
bnQsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
KSkgfTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdD
aGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNDNhYzBmYzAxMDk1MmJhYzRmMTA2ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4u
YjY5NDg5Zjc2NTc1ZDVmYTI4M2JlY2FkMDRjOTEyZWVkOTBkYzk1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMjIyMywxNSArMjIyMywxNSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5j
ZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgTm9kZSYg
c2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5l
cigpOwogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJh
bmdlLT5lbmRPZmZzZXQoKTsKICAgICAKLSAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOwor
ICAgIENoYXJhY3RlckNvdW50IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKICAgICBHcmFtbWFyRGV0
YWlsIGdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAg
IENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJlZlB0cjxSYW5n
ZT4gZ3JhbW1hclNlYXJjaFJhbmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwogICAg
IFN0cmluZyBtaXNzcGVsbGVkV29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7Ci0g
ICAgaW50IGZvdW5kT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBmb3VuZE9mZnNldCA9
IDA7CiAgICAgU3RyaW5nIGZvdW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZTsKICAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBAIC0y
MzA3LDEwICsyMzA3LDEwIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9yZSBh
IG1hcmtlciBzbyB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAgIEFT
U0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVuZ3Ro
ID4gMCk7CisgICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwog
ICAgICAgICAKICAgICAgICAgLy8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdp
dGggZG91YmxlZCBwdW5jdHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAg
IGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNl
YXJjaFJhbmdlLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwg
Z3JhbW1hckRldGFpbC5sZW5ndGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJl
c29sdmVDaGFyYWN0ZXJSYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJhc2VP
ZmZzZXQgKyBncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJhbmdl
Lmxlbmd0aCB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAg
ICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApA
QCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3Nw
ZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3Nw
ZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8g
YSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAg
ICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVs
bGluZ1NlYXJjaFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3Ro
KCkpOworICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdv
cmQubGVuZ3RoKCkgfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAgICAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAgLTI3
NzMsNyArMjc3Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNraW5n
KFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFwcGx5
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRD
aGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFuZ2Um
IHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9j
YXRpb24sIGludCByZXN1bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2lu
Z1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBw
YXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dCwgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TG9jYXRpb24sIENoYXJhY3RlckNvdW50IHJlc3VsdExl
bmd0aCkKIHsKICAgICBhdXRvJiBzY29wZSA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFn
cmFwaC5wYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSk7CiAKQEAg
LTI3ODYsMTAgKzI3ODYsOSBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNl
cnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogICAgIC8vIFRleHRD
aGVja2luZ1BhcmFncmFwaCBtYXkgYmUgb3JwaGFuZWQgYWZ0ZXIgU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZCBtdXRhdGVkIERPTS4KICAgICAvLyBTZWUgPHJkYXI6Ly8xMDMwNTMxNT4sIGh0dHA6
Ly93ZWJraXQub3JnL2IvODk1MjYuCiAKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBh
cmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAt
IHJlc3VsdExlbmd0aCk7Ci0KLSAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnQubGVuZ3RoKCkpOwotICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChz
cGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigp
LCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CisgICAgYXV0byBuZXdQYXJhZ3JhcGhSYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2Nv
cGUpLCB7IHBhcmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5s
ZW5ndGgoKSAtIHJlc3VsdExlbmd0aCB9KTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShuZXdQYXJhZ3JhcGhSYW5nZSwgeyByZXN1bHRMb2NhdGlv
biwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgfSk7CisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5n
UGFyYWdyYXBoKGNyZWF0ZUxpdmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZl
UmFuZ2Uoc3BlbGxDaGVja2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKG5ld1BhcmFncmFwaFJh
bmdlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENo
ZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpCkBAIC0yODExLDcgKzI4MTAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VG
b3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogI2Vu
ZGlmCiAKICAgICAvLyBFeHBhbmQgdGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdy
YXBocywgc2luY2UgdGV4dCBjaGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KLSAgICBp
bnQgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBzZWxlY3Rpb25PZmZz
ZXQgPSAwOwogICAgIGJvb2wgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSBmYWxzZTsKICAg
ICBib29sIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKICAgICBib29sIHJlc3RvcmVTZWxlY3Rp
b25BZnRlckNoYW5nZSA9IGZhbHNlOwpAQCAtMjgyMyw5ICsyODIyLDkgQEAgdm9pZCBFZGl0b3I6
Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBWZWN0b3I8VGUKICAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0aW9uT2Zm
c2V0ID0gcGFyYWdyYXBoLm9mZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOwogICAgICAgICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBw
YXJhZ3JhcGgudGV4dExlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9m
ZnNldCAtIDEpID09IG5ld2xpbmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlv
bk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0KCkubGVuZ3Ro
KCkgfHwgcGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSA9PSBuZXdsaW5lQ2hh
cmFjdGVyKSkKICAgICAgICAgICAgICAgICBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3Vu
ZGFyaWVzID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNl
bGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91
bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkp
KQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgc2VsZWN0aW9uT2Zmc2V0
IDw9IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgJiYgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3RlcihwYXJhZ3JhcGgudGV4dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdKSkKICAgICAgICAgICAg
ICAgICB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yODMzLDE0ICsyODMyLDE0IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihj
b25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgaW50
IG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgY29uc3QgaW50IHNwZWxsaW5nUmFu
Z2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFj
ZW1lbnQ7Ci0gICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IHJlc3Vs
dHNbaV0udHlwZTsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tp
XS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGludCBy
ZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0aDsKLSAgICAgICAgY29uc3QgaW50IHJlc3Vs
dEVuZExvY2F0aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgIGNv
bnN0IGludCBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQg
c3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0
RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0g
cmVzdWx0c1tpXS50eXBlOworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiA9
IHJlc3VsdHNbaV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAg
ICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLnJhbmdlLmxlbmd0
aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2Nh
dGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21hdGljUmVw
bGFjZW1lbnRFbmRMb2NhdGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
KCkgKyBwYXJhZ3JhcGguYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRv
UmVwbGFjZW1lbnQ7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1bHRz
W2ldLnJlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91
c0JvdW5kYXJ5ID0gdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0
IC0gMSA8PSByZXN1bHRFbmRMb2NhdGlvbjsKKyAgICAgICAgYm9vbCByZXN1bHRFbmRzQXRBbWJp
Z3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVjdGlvbk9m
ZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKICAgICAgICAgLy8gT25seSBtYXJrIG1p
c3NwZWxsaW5nIGlmOgogICAgICAgICAvLyAxLiBDdXJyZW50IHRleHQgY2hlY2tpbmcgaXNuJ3Qg
ZG9uZSBmb3IgYXV0b2NvcnJlY3Rpb24sIGluIHdoaWNoIGNhc2Ugc2hvdWxkTWFya1NwZWxsaW5n
IGlzIGZhbHNlLgpAQCAtMjg1MCwxNiArMjg0OSwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZQogICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmICFzaG91bGRTaG93Q29ycmVjdGlv
blBhbmVsICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcKICAgICAg
ICAgICAgICYmIHJlc3VsdExvY2F0aW9uID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYg
cmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5k
c0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGgg
PiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGlu
Z1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgp
OworICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdl
KHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKICAgICAgICAgICAgIGlmICghbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVs
bGluZ1JhbmdlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3Nw
ZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFy
a2VyKG1pc3NwZWxsaW5nUmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1l
bnQpOwotICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNv
dmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYg
KHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExvY2F0aW9uLCBy
ZXN1bHRMZW5ndGggfSkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYm
IHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiBy
ZXN1bHRzW2ldLmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0
aCA+IDAgJiYgZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChwYXJh
Z3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlv
biwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFy
UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRp
b24sIGRldGFpbC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2Uu
bGVuZ3RoID4gMCAmJiBkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAg
ICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24gKyBk
ZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyBy
ZXN1bHRMb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0
aCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3Vt
ZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yODc3LDcgKzI4NzYsNyBAQCB2b2lkIEVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFZlY3RvcjxUZQogICAgICAgICAgICAgLy8gMi4gVGhlIHJlc3VsdCBkb2Vzbid0IGVuZCBhdCBh
biBhbWJpZ3VvdXMgYm91bmRhcnkuCiAgICAgICAgICAgICAvLyAgICAoRklYTUU6IHRoaXMgaXMg
cmVxdWlyZWQgdW50aWwgNjg1MzAyNyBpcyBmaXhlZCBhbmQgdGV4dCBjaGVja2luZyBjYW4gZG8g
dGhpcyBmb3IgdXMKICAgICAgICAgICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50
Lmxlbmd0aCgpID4gMCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnk7Ci0gICAgICAg
ICAgICBhdXRvIHJhbmdlVG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0
aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBh
cmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAKICAg
ICAgICAgICAgIC8vIEFkZGluZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5
IGFmdGVyIHRoZXkgYXJlIHR5cGVkLgogICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6TGluayAmJiBzZWxlY3Rpb25PZmZzZXQgIT0gcmVzdWx0RW5kTG9jYXRp
b24gKyAxKQpAQCAtMjkyMiw3ICsyOTIxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNl
Rm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciByZXN1
bHRzIGZvciB0aGUgcmVwbGFjZWQgdGV4dC4KLSAgICAgICAgICAgICAgICB3aGlsZSAoaSArIDEg
PCByZXN1bHRzLnNpemUoKSAmJiByZXN1bHRzW2kgKyAxXS5sb2NhdGlvbiArIG9mZnNldER1ZVRv
UmVwbGFjZW1lbnQgPD0gcmVzdWx0TG9jYXRpb24pCisgICAgICAgICAgICAgICAgd2hpbGUgKGkg
KyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ucmFuZ2UubG9jYXRpb24gKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQogICAgICAgICAgICAgICAg
ICAgICBpKys7CiAKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKQEAg
LTI5MzEsNyArMjkzMCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBT
cGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExl
bmd0aDsKIAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5
cGU6OkNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJh
bmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5n
dGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFn
cmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsK
ICAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCBy
ZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRSYW5nZS5wdHIoKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgLy8gQWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1
bmRvbmUgYW5kIHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KQEAgLTI5NDUsOCArMjk0NCw4IEBAIHZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBleHRl
bmRlZFBhcmFncmFwaChXVEZNb3ZlKHBhcmFncmFwaCkpOwogICAgICAgICAvLyBSZXN0b3JlIHRo
ZSBjYXJldCBwb3NpdGlvbiBpZiB3ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwogICAgICAg
ICBleHRlbmRlZFBhcmFncmFwaC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwotICAgICAgICBpZiAo
cmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAwICYmIHNl
bGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2Uo
MCwgc2VsZWN0aW9uT2Zmc2V0KTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNo
YW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgo
KSkgeworICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBo
LnN1YnJhbmdlKHsgMCwgc2VsZWN0aW9uT2Zmc2V0IH0pOwogICAgICAgICAgICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJF
QU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJp
ZXMpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CkBAIC0yOTczLDcgKzI5NzIsOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVw
bGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBtX2FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXItPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZTo6UmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkp
OwogICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7CiAgICAg
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVu
dDo6Tm8sIFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7Ci0gICAgYXV0byBj
aGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQo
KSwgcmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkpOworICAgIENoYXJhY3RlckNvdW50IHJlcGxhY2Vk
U3RyaW5nTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCA9IHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpOwor
ICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcGFyYWdyYXBoLmNo
ZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwog
ICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5h
ZGRNYXJrZXIoY2hhbmdlZFJhbmdlLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmlu
ZygpKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFu
Z2VkUmFuZ2UpOwogI2Vsc2UKQEAgLTM3NzcsMTIgKzM3NzcsMTIgQEAgdm9pZCBFZGl0b3I6OnNj
YW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmcKIAogICAgICAgICBBU1NFUlQoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVFbmRQ
b3NpdGlvbiA8IGxlbmd0aCk7CiAKLSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBz
Y2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVk
IHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3Np
dGlvbiArIDE7CisgICAgICAgIENoYXJhY3RlckNvdW50IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5l
clBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3Vu
dCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9z
aXRpb24gKyAxOwogCi0gICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKHJhbmdlLCBzdWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAgICAgICBhdXRv
IHN1YnJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJhbmdlT2Zmc2V0
LCBzdWJyYW5nZUxlbmd0aCB9KTsKIAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJh
bmdlLnB0cigpKTsKKyAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2Uo
c3VicmFuZ2UpKTsKICAgICAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRN
YXJrZXIoc3VicmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAg
ICAgIHNjYW5uZXJQb3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTM5OTIs
MTQgKzM5OTIsMTQgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRp
ZGF0ZVJlcXVlc3QoKSBjb25zdAogCiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JUZXh0
Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7
Ci0gICAgaWYgKCFyZXN1bHQubGVuZ3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdlLmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5n
ZSA9IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRS
YW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgp
OworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250
ZXh0UmFuZ2UsIHJlc3VsdC5yYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0
b3JVSVVwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKaW5kZXggYWQ4Mjc4ODljYWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1ZTM3NC4uZjgz
MjcyYzI4ZjBhMGQ3ZDY3YzBlNzEyMjRhNzdhYzk0MWVhZjUyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMsOCArNjMsOCBA
QCBzdGF0aWMgdm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJDbGllbnQmIGNs
aWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZQogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBi
YWRHcmFtbWFyOwogICAgICAgICBiYWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpH
cmFtbWFyOwotICAgICAgICBiYWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJh
ZEdyYW1tYXJMb2NhdGlvbjsKLSAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFy
TGVuZ3RoOworICAgICAgICBiYWRHcmFtbWFyLnJhbmdlLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlv
biArIGJhZEdyYW1tYXJMb2NhdGlvbjsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sZW5ndGgg
PSBiYWRHcmFtbWFyTGVuZ3RoOwogICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3Zl
KGJhZEdyYW1tYXJEZXRhaWxzKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7
CiAKQEAgLTk3LDkgKzk3LDkgQEAgc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hl
Y2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjwKIAogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nOwogICAgICAgICAgICAgbWlzc3BlbGxp
bmcudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgbWlzc3Bl
bGxpbmcubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAg
ICAgICAgbWlzc3BlbGxpbmcubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7Ci0gICAgICAgICAg
ICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5sb2NhdGlvbiwg
bWlzc3BlbGxpbmcubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAg
ICAgbWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xv
Y2F0aW9uOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxp
bmdMZW5ndGg7CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5n
ZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyht
aXNzcGVsbGluZy5yYW5nZS5sb2NhdGlvbiwgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoKS50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobWlzc3Bl
bGxpbmcpOwogICAgICAgICB9CiAKQEAgLTEzOSwxNCArMTM5LDEzIEBAIHZvaWQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjpleHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNr
aW5nU3RhcnQucmVzZXQoKTsKLSAgICBtX2NoZWNraW5nRW5kLnJlc2V0KCk7CiAgICAgbV9hdXRv
bWF0aWNSZXBsYWNlbWVudFN0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aC5yZXNldCgpOwogICAgIG1fb2Zmc2V0QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90
ZXh0ID0gU3RyaW5nKCk7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVu
Z3RoKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFuZ2VM
ZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5n
ZSgpKTsKIH0KQEAgLTE1OCwxMiArMTU3LDEyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OnBhcmFncmFwaFJhbmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fcGFyYWdyYXBoUmFuZ2U7
CiB9CiAKLVJlZjxSYW5nZT4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShpbnQgY2hh
cmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0CitSZWY8UmFuZ2U+IFRleHRD
aGVja2luZ1BhcmFncmFwaDo6c3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hh
cmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgcmFuZ2UpKTsKIH0KIAot
RXhjZXB0aW9uT3I8aW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbikgY29uc3QKK0V4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29u
c3QKIHsKICAgICBhdXRvIHN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2Uo
KS5zdGFydFBvc2l0aW9uKCkpOwogICAgIGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQocG9z
aXRpb24pOwpAQCAtMTg3LDM1ICsxODYsMzMgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFw
aDo6b2Zmc2V0QXNSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX29mZnNldEFzUmFuZ2U7CiB9
CiAKLWNvbnN0IFN0cmluZyYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKK1N0
cmluZ1ZpZXcgVGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAo
bV90ZXh0LmlzRW1wdHkoKSkKKyAgICBpZiAobV90ZXh0LmlzTnVsbCgpKQogICAgICAgICBtX3Rl
eHQgPSBwbGFpblRleHQoJnBhcmFncmFwaFJhbmdlKCkpOwogICAgIHJldHVybiBtX3RleHQ7IAog
fQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKK0No
YXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nU3RhcnQpCiAgICAgICAgIG1fY2hlY2tpbmdTdGFydCA9
IGNoYXJhY3RlckNvdW50KG9mZnNldEFzUmFuZ2UoKSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5n
U3RhcnQ7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kKCkgY29u
c3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBj
b25zdAogewotICAgIGlmICghbV9jaGVja2luZ0VuZCkKLSAgICAgICAgbV9jaGVja2luZ0VuZCA9
IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7Ci0gICAgcmV0dXJuICptX2NoZWNr
aW5nRW5kOworICAgIHJldHVybiBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwog
fQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitD
aGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY2hlY2tpbmdMZW5ndGgpCiAgICAgICAgIG1fY2hlY2tpbmdMZW5n
dGggPSBjaGFyYWN0ZXJDb3VudChtX2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAqbV9jaGVj
a2luZ0xlbmd0aDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNl
bWVudFN0YXJ0OwpAQCAtMjI5LDcgKzIyNiw3IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAqbV9hdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBp
ZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9t
YXRpY1JlcGxhY2VtZW50TGVuZ3RoOwpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgVGV4dENoZWNraW5n
SGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiBy
YW5nZSkKIAogVGV4dENoZWNraW5nSGVscGVyOjp+VGV4dENoZWNraW5nSGVscGVyKCkgPSBkZWZh
dWx0OwogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhp
bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYg
Zmlyc3RNaXNzcGVsbGluZ1JhbmdlKQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJv
b2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAg
IGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQgPSAwOwogCiAgICAgU3RyaW5nIGZpcnN0TWlzc3BlbGxp
bmc7Ci0gICAgaW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQg
Y3VycmVudENodW5rT2Zmc2V0ID0gMDsKIAogICAgIGZvciAoV29yZEF3YXJlSXRlcmF0b3IgaXQo
bV9yYW5nZSk7ICFpdC5hdEVuZCgpOyBjdXJyZW50Q2h1bmtPZmZzZXQgKz0gaXQudGV4dCgpLmxl
bmd0aCgpLCBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gaXQudGV4
dCgpOwpAQCAtMjc3LDE3ICsyNzQsMTcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogICAg
ICAgICBpZiAobWlzc3BlbGxpbmdMb2NhdGlvbiA+PSAwICYmIG1pc3NwZWxsaW5nTGVuZ3RoID4g
MCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uIDwgdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xlbmd0
aCA8PSB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0
aCA8PSB0ZXh0TGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdlIG9mIG1pc3Nw
ZWxsZWQgd29yZAotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShtX3JhbmdlLCBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xv
Y2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5n
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobV9yYW5nZSwgeyBjdXJyZW50Q2h1bmtPZmZz
ZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJDb3VudD4obWlz
c3BlbGxpbmdMZW5ndGgpIH0pOwogCiAgICAgICAgICAgICAvLyBSZW1lbWJlciBmaXJzdC1lbmNv
dW50ZXJlZCBtaXNzcGVsbGluZyBhbmQgaXRzIG9mZnNldC4KICAgICAgICAgICAgIGlmICghZmly
c3RNaXNzcGVsbGluZykgewogICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQg
PSBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwogICAgICAgICAgICAg
ICAgIGZpcnN0TWlzc3BlbGxpbmcgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZ0xvY2F0aW9u
LCBtaXNzcGVsbGluZ0xlbmd0aCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UgPSBtaXNzcGVsbGluZ1JhbmdlLnB0cigpOworICAgICAgICAgICAgICAg
IGZpcnN0TWlzc3BlbGxpbmdSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShtaXNzcGVsbGluZ1Jhbmdl
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gU3RvcmUgbWFya2VyIGZvciBtaXNz
cGVsbGVkIHdvcmQuCi0gICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpOworICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS5zdGFy
dC5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsaW5nKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UncmUg
bWFya2luZyBvbmx5IHRoZSBmaXJzdCBtaXNzcGVsbGluZywgYW5kIG5vdCBhbGwgaW5zdGFuY2Vz
LgogICAgICAgICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtMjk4LDcgKzI5NSw3IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVs
bGluZ09mZnNldCwgYm9vCiAgICAgcmV0dXJuIGZpcnN0TWlzc3BlbGxpbmc7CiB9CiAKLVN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJv
b2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQmIG91dEZpcnN0Rm91bmRP
ZmZzZXQsIEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCitTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3Jh
bW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgQ2hhcmFjdGVyQ291bnQmIG91dEZpcnN0Rm91bmRP
ZmZzZXQsIEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCiB7CiAgICAgaWYgKCF1bmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpA
QCAtMzEzLDggKzMxMCw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgLy8gSW5pdGlh
bGl6ZSBvdXQgcGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29t
ZXRoaW5nIHRvIHJldHVybi4KICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBvdXRGaXJz
dEZvdW5kT2Zmc2V0ID0gMDsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0g
ICAgb3V0R3JhbW1hckRldGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFu
Z2UubG9jYXRpb24gPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsK
ICAgICBvdXRHcmFtbWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0
YWlsLnVzZXJEZXNjcmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgCkBAIC0zMzQsOCArMzMx
LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICB3aGlsZSAodG90YWxMZW5ndGhQcm9j
ZXNzZWQgPCB0b3RhbFJhbmdlTGVuZ3RoKSB7CiAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0
aGUgc2VhcmNoIHJhbmdlIGJ5IHBhcmFncmFwaHMsIGNoZWNraW5nIGVhY2ggb25lIGZvciBzcGVs
bGluZyBhbmQgZ3JhbW1hci4KICAgICAgICAgYXV0byBjdXJyZW50TGVuZ3RoID0gY2hhcmFjdGVy
Q291bnQocGFyYWdyYXBoUmFuZ2UpOwotICAgICAgICBpbnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0g
Zmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0T2Zmc2V0IDogMDsKLSAgICAgICAgaW50IGN1cnJl
bnRFbmRPZmZzZXQgPSBjdXJyZW50TGVuZ3RoOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBjdXJy
ZW50U3RhcnRPZmZzZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwor
ICAgICAgICBDaGFyYWN0ZXJDb3VudCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsK
ICAgICAgICAgaWYgKGluU2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlv
bigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5l
IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNo
IHJhbmdlIHRvIHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNl
IHdlIHdpbGwgd2FudCB0byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCkBAIC0zNDYsOSAr
MzQzLDkgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdP
ckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgIFN0cmluZyBwYXJh
Z3JhcGhTdHJpbmcgPSBwbGFpblRleHQocGFyYWdyYXBoUmFuZ2UucHRyKCkpOwogICAgICAgICAg
ICAgaWYgKHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAgICBi
b29sIGZvdW5kR3JhbW1hciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ0xv
Y2F0aW9uID0gMDsKLSAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsKKyAgICAg
ICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBzcGVsbGluZ0xvY2F0aW9uID0gMDsKKyAgICAgICAg
ICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOworICAgICAg
ICAgICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IDA7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckRldGFpbEluZGV4ID0gMDsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRz
OwpAQCAtMzYxLDQyICszNTgsNDIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAg
ICAgICAgICBjaGVja1RleHRPZlBhcmFncmFwaCgqbV9jbGllbnQudGV4dENoZWNrZXIoKSwgcGFy
YWdyYXBoU3RyaW5nLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsK
IAogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewotICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmcgJiYgcmVzdWx0LmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9j
YXRpb24gKyByZXN1bHQubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0LmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1
bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBy
ZXN1bHQucmFuZ2UubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5n
LnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQubG9jYXRpb24gPCBjdXJyZW50RW5kT2Zm
c2V0ICYmIHJlc3VsdC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZz
ZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubGVuZ3RoID4gMCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LmxvY2F0aW9uID49IDApOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC50eXBlID09IFRl
eHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uIDwgY3VycmVu
dEVuZE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gKyByZXN1bHQucmFuZ2UubGVuZ3Ro
ID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIGNhbid0IHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGdyYW1tYXIgcmVzdWx0LCBzaW5jZSB0aGVy
ZSBtaWdodCBzdGlsbCBiZSBhIHNwZWxsaW5nIHJlc3VsdCBhZnRlcgogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaXQgYmVnaW5zIGJ1dCBiZWZvcmUgdGhlIGZpcnN0IGRldGFpbCBpbiBpdCwg
YnV0IHdlIGNhbiBzdG9wIGlmIHdlIGZpbmQgYSBzZWNvbmQgZ3JhbW1hciByZXN1bHQuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRHcmFtbWFyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHJlc3VsdC5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJnJlc3VsdC5kZXRhaWxz
W2pdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+
IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9u
ID49IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubG9jYXRpb24g
KyBkZXRhaWwtPmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQubG9jYXRp
b24gKyBkZXRhaWwtPmxvY2F0aW9uICsgZGV0YWlsLT5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNl
dCAmJiAoIWZvdW5kR3JhbW1hciB8fCByZXN1bHQubG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9u
IDwgZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChkZXRhaWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdl
LmxvY2F0aW9uID49IGN1cnJlbnRTdGFydE9mZnNldCAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24g
KyBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sZW5ndGggPD0gY3VycmVu
dEVuZE9mZnNldCAmJiAoIWZvdW5kR3JhbW1hciB8fCByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBk
ZXRhaWwtPnJhbmdlLmxvY2F0aW9uIDwgZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyRGV0YWlsSW5kZXggPSBqOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSByZXN1bHQu
bG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRh
aWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZEdyYW1tYXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1t
YXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlTG9jYXRpb24g
PSByZXN1bHQubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBo
cmFzZUxvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dEdyYW1tYXJEZXRhaWwgPSByZXN1bHQuZGV0YWlsc1tncmFtbWFyRGV0YWls
SW5kZXhdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2UgPSBw
YXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFw
aFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVu
Z3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFz
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxs
ZWRXb3JkLmlzRW1wdHkoKSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlz
RW1wdHkoKSB8fCBzcGVsbGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlv
biAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291
bnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAg
ICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5k
YXJ5UG9pbnQobV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBh
cmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBv
dXRJc1NwZWxsaW5nID0gdHJ1ZTsKQEAgLTQwNSw3ICs0MDIsNyBAQCBTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3Jh
bW1hciwgYgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBn
cmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhyYXNl
TG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Zmlyc3RJdGVyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zm
c2V0ICs9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSksICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpKSB9KTsKICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwpA
QCAtNDI4LDE4ICs0MjUsMTggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKIAogI2lmIFVTRShH
UkFNTUFSX0NIRUNLSU5HKQogCi1pbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFt
bWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIGlu
dCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgYm9vbCBtYXJrQWxsKSBjb25zdAoraW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxz
LCBDaGFyYWN0ZXJDb3VudCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIENoYXJhY3RlckNvdW50
IHN0YXJ0T2Zmc2V0LCBDaGFyYWN0ZXJDb3VudCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29u
c3QKIHsKICAgICAvLyBGb3VuZCBzb21lIGJhZCBncmFtbWFyLiBGaW5kIHRoZSBlYXJsaWVzdCBk
ZXRhaWwgcmFuZ2UgdGhhdCBzdGFydHMgaW4gb3VyIHNlYXJjaCByYW5nZSAoaWYgYW55KS4KICAg
ICAvLyBPcHRpb25hbGx5IGFkZCBhIERvY3VtZW50TWFya2VyIGZvciBlYWNoIGRldGFpbCBpbiB0
aGUgcmFuZ2UuCi0gICAgaW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IC0xOworICAg
IENoYXJhY3RlckNvdW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IDA7CiAgICAgaW50
IGVhcmxpZXN0RGV0YWlsSW5kZXggPSAtMTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Z3JhbW1hckRldGFpbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgR3JhbW1hckRldGFp
bCogZGV0YWlsID0gJmdyYW1tYXJEZXRhaWxzW2ldOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5s
ZW5ndGggPiAwKTsKLSAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRpb24gPj0gMCk7CisgICAg
ICAgIEFTU0VSVChkZXRhaWwtPnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZGV0
YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKICAgICAgICAgCi0gICAgICAgIGludCBkZXRhaWxT
dGFydE9mZnNldEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWls
LT5sb2NhdGlvbjsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgZGV0YWlsU3RhcnRPZmZzZXRJblBh
cmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRp
b247CiAgICAgICAgIAogICAgICAgICAvLyBTa2lwIHRoaXMgZGV0YWlsIGlmIGl0IHN0YXJ0cyBi
ZWZvcmUgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZQogICAgICAgICBpZiAoZGV0YWlsU3RhcnRP
ZmZzZXRJblBhcmFncmFwaCA8IHN0YXJ0T2Zmc2V0KQpAQCAtNDUwLDMwICs0NDcsMzAgQEAgaW50
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8
R3JhbW1hckRldGFpbD4mIGdyYW0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAg
ICAgICAgaWYgKG1hcmtBbGwpIHsKLSAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24g
LSBzdGFydE9mZnNldCArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKTsKLSAgICAg
ICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtl
cnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwg
ZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOworICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFu
Z2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobV9yYW5nZS5nZXQoKSwgeyBiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24gLSBzdGFydE9mZnNldCArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24sIGRldGFp
bC0+cmFuZ2UubGVuZ3RoIH0pOworICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLnN0YXJ0LmRv
Y3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFy
a2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgZGV0YWlsIG9ubHkgaWYgaXQncyBlYXJsaWVy
IHRoYW4gb3VyIGN1cnJlbnQgY2FuZGlkYXRlICh0aGUgZGV0YWlscyBhcmVuJ3QgaW4gYSBndWFy
YW50ZWVkIG9yZGVyKQotICAgICAgICBpZiAoZWFybGllc3REZXRhaWxJbmRleCA8IDAgfHwgZWFy
bGllc3REZXRhaWxMb2NhdGlvblNvRmFyID4gZGV0YWlsLT5sb2NhdGlvbikgeworICAgICAgICBp
ZiAoZWFybGllc3REZXRhaWxJbmRleCA8IDAgfHwgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFy
ID4gZGV0YWlsLT5yYW5nZS5sb2NhdGlvbikgewogICAgICAgICAgICAgZWFybGllc3REZXRhaWxJ
bmRleCA9IGk7Ci0gICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSBkZXRh
aWwtPmxvY2F0aW9uOworICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0g
ZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1
cm4gZWFybGllc3REZXRhaWxJbmRleDsKIH0KIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQm
IG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK1N0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wg
bWFya0FsbCkgY29uc3QKIHsKICAgICAvLyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVz
ZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgotICAgIG91
dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0
aCA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0
R3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vl
c3Nlcy5jbGVhcigpOwogICAgIG91dEdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1w
dHlTdHJpbmcoKTsKICAgICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICAKLSAgICBT
dHJpbmcgZmlyc3RCYWRHcmFtbWFyUGhyYXNlOworICAgIFN0cmluZ1ZpZXcgZmlyc3RCYWRHcmFt
bWFyUGhyYXNlOwogCiAgICAgLy8gRXhwYW5kIHRoZSBzZWFyY2ggcmFuZ2UgdG8gZW5jb21wYXNz
IGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5jZSBncmFtbWFyIGNoZWNraW5nIG5lZWRzIHRoYXQgbXVj
aCBjb250ZXh0LgogICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRo
ZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2Vh
cmNoIHJhbmdlLApAQCAtNDgxLDExICs0NzgsMTEgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBl
cjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAog
ICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgobV9yYW5nZS5jb3B5UmVmKCkpOwog
ICAgIAogICAgIC8vIFN0YXJ0IGNoZWNraW5nIGZyb20gYmVnaW5uaW5nIG9mIHBhcmFncmFwaCwg
YnV0IHNraXAgcGFzdCByZXN1bHRzIHRoYXQgb2NjdXIgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUg
b3JpZ2luYWwgc2VhcmNoIHJhbmdlLgotICAgIGZvciAoaW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3Rh
cnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKTsgKSB7CisgICAgZm9yIChDaGFyYWN0
ZXJDb3VudCBzdGFydE9mZnNldCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5n
RW5kKCk7ICkgewogICAgICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZ3JhbW1hckRldGFpbHM7
CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPSAtMTsKICAgICAgICAgaW50
IGJhZEdyYW1tYXJQaHJhc2VMZW5ndGggPSAwOwotICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tl
cigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3KHBhcmFncmFwaC50ZXh0KCkpLnN1
YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBocmFzZUxv
Y2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LnRleHRD
aGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5nKHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5n
KHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24s
ICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghYmFkR3Jh
bW1hclBocmFzZUxlbmd0aCkgewogICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VM
b2NhdGlvbiA9PSAtMSk7CkBAIC01MDYsNyArNTAzLDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
LAogICAgICAgICAvLyBrZXB0IGdvaW5nIHNvIHdlIGNvdWxkIG1hcmsgYWxsIGluc3RhbmNlcyku
CiAgICAgICAgIGlmIChiYWRHcmFtbWFySW5kZXggPj0gMCAmJiBmaXJzdEJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gYmFk
R3JhbW1hclBocmFzZUxvY2F0aW9uIC0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKTsKLSAgICAg
ICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKGJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CisgICAgICAg
ICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhi
YWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBGb3VuZCBvbmUuIFdlJ3JlIGRvbmUgbm93LCB1bmxlc3Mg
d2UncmUgbWFya2luZyBlYWNoIGluc3RhbmNlLgogICAgICAgICAgICAgaWYgKCFtYXJrQWxsKQpA
QCAtNTE4LDcgKzUxNSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJh
ZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwKICAgICAgICAgc3RhcnRP
ZmZzZXQgPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBiYWRHcmFtbWFyUGhyYXNlTGVuZ3Ro
OwogICAgIH0KICAgICAKLSAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlOworICAgIHJl
dHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2UudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0CkBAIC01MjksNyArNTI2LDcgQEAg
Ym9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0CiAgICAgLy8g
UmV0dXJucyB0cnVlIG9ubHkgaWYgdGhlIHBhc3NlZCByYW5nZSBleGFjdGx5IGNvcnJlc3BvbmRz
IHRvIGEgYmFkIGdyYW1tYXIgZGV0YWlsIHJhbmdlLiBUaGlzIGlzIGFuYWxvZ291cwogICAgIC8v
IHRvIGlzU2VsZWN0aW9uTWlzc3BlbGxlZC4gSXQncyBub3QgZ29vZCBlbm91Z2ggZm9yIHRoZXJl
IHRvIGJlIHNvbWUgYmFkIGdyYW1tYXIgc29tZXdoZXJlIGluIHRoZSByYW5nZSwKICAgICAvLyBv
ciBvdmVybGFwcGluZyB0aGUgcmFuZ2U7IHRoZSByYW5nZXMgbXVzdCBleGFjdGx5IG1hdGNoLgot
ICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0OworICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQ
aHJhc2VPZmZzZXQ7CiAgICAgCiAgICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAg
IFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gZmluZEZpcnN0QmFkR3JhbW1hcihncmFtbWFyRGV0
YWlsLCBncmFtbWFyUGhyYXNlT2Zmc2V0LCBmYWxzZSk7CkBAIC01NDIsMTUgKzUzOSwxNSBAQCBi
b29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICBpZiAo
Z3JhbW1hclBocmFzZU9mZnNldCA+IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFT
U0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgIEFTU0VSVChncmFtbWFyRGV0
YWlsLmxlbmd0aCA+IDApOworICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9u
ID49IDApOworICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogCiAg
ICAgLy8gQmFkIGdyYW1tYXIsIGJ1dCBzdGFydCBvZiBkZXRhaWwgKGUuZy4gdW5ncmFtbWF0aWNh
bCB3b3JkKSBkb2Vzbid0IG1hdGNoIHN0YXJ0IG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRh
aWwubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQorICAgIGlmIChncmFtbWFyRGV0YWls
LnJhbmdlLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAogICAgIC8vIEJhZCBncmFtbWFyIGF0IHN0YXJ0IG9mIHJhbmdlLCBidXQgZW5k
IG9mIGJhZCBncmFtbWFyIGlzIGJlZm9yZSBvciBhZnRlciBlbmQgb2YgcmFuZ2UKLSAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdyYW1tYXJEZXRhaWwubGVuZ3RoKSAhPSBjaGFyYWN0ZXJD
b3VudChtX3JhbmdlKSkKKyAgICBpZiAoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggIT0gY2hh
cmFjdGVyQ291bnQobV9yYW5nZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAv
LyBVcGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsIHRvIGJlIGRpc3BsYXlpbmcgdGhpcyBlcnJvciAo
d2hldGhlciBvciBub3QgdGhlIHNwZWxsaW5nIHBhbmVsIGlzIG9uIHNjcmVlbikuCkBAIC01OTQs
OCArNTkxLDggQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9y
TWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICBjaGVja1RleHRPZlBhcmFn
cmFwaCgqbV9jbGllbnQudGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoLnRleHQoKSwgY2hlY2tpbmdU
eXBlcywgcmVzdWx0cywgY3VycmVudFNlbGVjdGlvbik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3Vs
dCA6IHJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQubG9j
YXRpb24sIHJlc3VsdC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdv
cmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKTsKKyAgICAgICAgaWYgKHJlc3VsdC50
eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlTWF0Y2hlcyhyZXN1bHQucmFuZ2UpKSB7CisgICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxl
ZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKS50b1N0cmluZygpOwogICAgICAg
ICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsKICAgICAgICAgICAgIG1fY2xp
ZW50LnRleHRDaGVja2VyKCktPmdldEd1ZXNzZXNGb3JXb3JkKG1pc3NwZWxsZWRXb3JkLCBTdHJp
bmcoKSwgY3VycmVudFNlbGVjdGlvbiwgZ3Vlc3Nlcyk7CiAgICAgICAgICAgICBtX2NsaWVudC51
cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKQEAgLTYw
OCwxMiArNjA1LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nl
c0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgICAgIHJldHVybiBn
dWVzc2VzOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5p
c0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkg
eworICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAm
JiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5yYW5nZSkpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgZGV0YWlsIDogcmVzdWx0LmRldGFpbHMpIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIEFTU0VS
VChkZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5j
aGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRl
dGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyh7IHJlc3VsdC5y
YW5nZS5sb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0
aCB9KSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IHBh
cmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJh
bmdlLmxlbmd0aCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhZEdy
YW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGd1
ZXNzIDogZGV0YWlsLmd1ZXNzZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBndWVzc2VzLmFw
cGVuZChndWVzcyk7CkBAIC02MzEsNyArNjI4LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6
Om1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmcK
IHsKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRGaXJzdE1pc3NwZWxs
aW5nLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgdGhlICJvdXQgcGFyYW1ldGVyIjsKICAg
ICAvLyBhbGwgd2UgbmVlZCB0byBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgotICAgIGludCBp
Z25vcmVkT2Zmc2V0OworICAgIENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmlu
ZEZpcnN0TWlzc3BlbGxpbmcoaWdub3JlZE9mZnNldCwgdHJ1ZSwgZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKTsKIH0KIApAQCAtNjQxLDcgKzYzOCw3IEBAIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjpt
YXJrQWxsQmFkR3JhbW1hcigpCiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBv
ZmluZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kICJvdXQgcGFy
YW1ldGVycyI7IGFsbCB3ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5j
ZS4KICAgICBHcmFtbWFyRGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWlsOwotICAgIGludCBpZ25v
cmVkT2Zmc2V0OworICAgIENoYXJhY3RlckNvdW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZp
cnN0QmFkR3JhbW1hcihpZ25vcmVkR3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNldCwgdHJ1ZSk7
CiB9CiAjZW5kaWYKQEAgLTY2OCw3ICs2NjUsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0aW9uU2V0PAog
ICAgIGlmIChjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7
CiAgICAgICAgIGZvciAoYXV0byYgbWlzcGVsbGluZyA6IG1pc3BlbGxpbmdzKQotICAgICAgICAg
ICAgZ3JhbW1hckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xl
bmd0aCwgbWlzcGVsbGluZy5sb2NhdGlvbik7CisgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5n
dGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLnJh
bmdlLmxvY2F0aW9uKTsKICAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4
dC5zdWJzdHJpbmcoMCwgZ3JhbW1hckNoZWNrTGVuZ3RoKSwgZ3JhbW1hdGljYWxFcnJvcnMpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5k
ZXggM2YzOWU4NjhkOTk0MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uMzQ2ZDVhODE5MmVi
ZGNiNzYzYjBhNWUwNjVmODExODhjZjBhODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRv
bWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50
IHJhbmdlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFj
dGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGlu
dD4gb2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBy
YW5nZUxlbmd0aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFu
Z2UpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRUbyhjb25z
dCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1Zp
ZXcuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29u
c2lkZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQo
KSBkaXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5s
ZW5ndGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWdu
ZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBs
ZW4pOyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRl
eHQoKVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4
dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tp
bmdTdGFydCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBj
aGVja2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0
aCgpKTsgfQorICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKKyAgICBD
aGFyYWN0ZXJDb3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGNo
ZWNraW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2lu
Z0xlbmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hpY2ggd2Ug
YWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyByZXBsYWNl
bWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tpbmcgcGFy
YWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4KLSAgICBp
bnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRvbWF0aWNS
ZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0aWNSZXBs
YWNlbWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNr
aW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXND
aGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyBy
ZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49
IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5n
UmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2Nh
dGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0
KCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdl
KSBjb25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFu
Z2UubGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5n
ZUNvdmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9j
YXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3Ro
ID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNr
aW5nUmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdl
LmxvY2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0
aCA+IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0
OwogCiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+
IG1fb2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGlu
dD4gbV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xl
bmd0aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0
YXJ0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVu
Z3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdTdGFy
dDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5nTGVuZ3Ro
OworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsK
QEAgLTg4LDExICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRv
ckNsaWVudCYsIFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3Ry
aW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9v
bCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0
cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwg
Ym9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0
YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmco
Q2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVm
UHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3Bl
bGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWls
JiBvdXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRy
PFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lO
RykKLSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFt
bWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29u
c3Q7CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wg
bWFya0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAgIGJvb2wg
aXNVbmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsKICNpZiBV
U0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25z
dCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBp
bnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAg
aW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+Jiwg
Q2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFyYWN0ZXJDb3VudCBz
dGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5k
ZXggYmExYjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uMWFjYTc3M2U0MTQ1
ZWE2NTQyYjJhZDkyNGQ1NTFiMTQ5NzU3ZTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJhY3RlckNvdW50IGNoYXJh
Y3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
YmVoCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJh
Y3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0b3Io
ZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5nZS5v
d25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hh
cmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVs
ZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0
RW5kKCkpOwpAQCAtMjM2NSw4NSArMjM1OSw2MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNp
ZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4gbm9k
ZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQogCi1S
ZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29u
dGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJv
b2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFj
dGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBDaGFyYWN0ZXJDb3VudCBsb2Nh
dGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0gICAgUmVmPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7Ci0KLSAgICBpbnQg
ZG9jVGV4dFBvc2l0aW9uID0gMDsKLSAgICBpbnQgcmFuZ2VFbmQgPSByYW5nZUxvY2F0aW9uICsg
cmFuZ2VMZW5ndGg7Ci0gICAgYm9vbCBzdGFydFJhbmdlRm91bmQgPSBmYWxzZTsKLQotICAgIFJl
ZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CisgICAgcmV0
dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzY29wZSwgeyBsb2NhdGlvbiwgMCB9LCBiZWhhdmlv
cikuc3RhcnQ7Cit9CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLCBmb3JTZWxl
Y3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci0gICAgCi0g
ICAgLy8gRklYTUU6IHRoZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdv
cmthcm91bmQgZm9yIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5
Pi4KLSAgICBpZiAoIXJhbmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkp
IHsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgMCk7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5z
dGFydENvbnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwotICAgIH0K
K1NpbXBsZVJhbmdlIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc2Nv
cGUsIENoYXJhY3RlclJhbmdlIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikK
K3sKKyAgICBhdXRvIHJlc3VsdFJhbmdlID0gU2ltcGxlUmFuZ2UgeyByYW5nZS5sb2NhdGlvbiA/
IHNjb3BlLmVuZCA6IHNjb3BlLnN0YXJ0LCAocmFuZ2UubG9jYXRpb24gfHwgcmFuZ2UubGVuZ3Ro
KSA/IHNjb3BlLmVuZCA6IHNjb3BlLnN0YXJ0IH07CisgICAgYXV0byByYW5nZUVuZCA9IHJhbmdl
LmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoOworICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uID0g
MDsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzY29wZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQo
KTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0LnRleHQoKS5s
ZW5ndGgoKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCi0gICAg
Zm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9
IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdlID0gY3JlYXRlTGl2ZVJh
bmdlKGl0LnJhbmdlKCkpOworICAgICAgICBhdXRvIGZvdW5kID0gWyZdIChDaGFyYWN0ZXJDb3Vu
dCB0YXJnZXRMb2NhdGlvbikgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0TG9j
YXRpb24gPj0gbG9jYXRpb24gJiYgdGFyZ2V0TG9jYXRpb24gPD0gbG9jYXRpb24gKyBsZW5ndGg7
CisgICAgICAgIH07CiAKLSAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gcmFuZ2VMb2NhdGlvbiA+
PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VMb2NhdGlvbiA8PSBkb2NUZXh0UG9zaXRpb24gKyBs
ZW5ndGg7Ci0gICAgICAgIGJvb2wgZm91bmRFbmQgPSByYW5nZUVuZCA+PSBkb2NUZXh0UG9zaXRp
b24gJiYgcmFuZ2VFbmQgPD0gZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOworICAgICAgICBib29s
IGZvdW5kU3RhcnQgPSBmb3VuZChyYW5nZS5sb2NhdGlvbik7CisgICAgICAgIGJvb2wgZm91bmRF
bmQgPSBmb3VuZChyYW5nZUVuZCk7CiAKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhl
IGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcKLSAgICAgICAgICAgIC8vIHBvc2l0
aW9uIGZvciBlbWl0dGVkICdcbidzIG9yIGlmIHRoZSByZW5kZXJlciBvZiB0aGUgY3VycmVudCBu
b2RlIGlzIGEgcmVwbGFjZWQgZWxlbWVudC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVu
IGF0IHRoZSB3cm9uZyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVy
ZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgY29udHJvbGxpbmcgdGhpcyB3aXRoIFRleHRJdGVyYXRvckJl
aGF2aW9yIGluc3RlYWQgb2YgZG9pbmcgaXQgdW5jb25kaXRpb25hbGx5IHRvIGhlbHAgdXMgZXZl
bnR1YWxseSBwaGFzZSBpdCBvdXQgZXZlcnl3aGVyZS4KICAgICAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSAmJiAoaXQudGV4dCgpWzBdID09ICdcbicgfHwgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQo
aXQpKSkgewogICAgICAgICAgICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IGl0LnJh
bmdlKCkuc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKFdU
Rk1vdmUoc3RhcnQuY29udGFpbmVyKSwgc3RhcnQub2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5S
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5F
bmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5kLmlzTm90TnVsbCgpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQoKnJ1bkVuZC5jb250YWluZXJOb2RlKCks
IHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICAgICAgICAg
IGlmICghaXQuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9
IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGVuZCA9IG1ha2VCb3VuZGFyeVBvaW50KFZpc2libGVQb3NpdGlvbihj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24odGV4dFJ1blJhbmdlLnN0YXJ0KSkubmV4dCgpLmRl
ZXBFcXVpdmFsZW50KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVu
ZCA9ICplbmQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKGZvdW5kU3RhcnQpIHsKLSAgICAgICAgICAgIHN0YXJ0UmFuZ2VGb3VuZCA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlz
VGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUxvY2F0aW9u
IC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFy
dCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG9mZnNldCArIHRleHRSdW5SYW5nZS0+
c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChyYW5nZUxvY2F0aW9uID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4
dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRh
aW5lcigpLCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKKyAgICAgICAgYXV0byBib3VuZGFy
eSA9IFsmXSAoQ2hhcmFjdGVyQ291bnQgdGFyZ2V0TG9jYXRpb24pIC0+IEJvdW5kYXJ5UG9pbnQg
eworICAgICAgICAgICAgaWYgKGlzPFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIp
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldExvY2F0aW9uIC0gbG9jYXRpb24gPD0g
ZG93bmNhc3Q8VGV4dD4odGV4dFJ1blJhbmdlLnN0YXJ0LmNvbnRhaW5lci5nZXQoKSkubGVuZ3Ro
KCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHRleHRSdW5SYW5nZS5zdGFy
dC5vZmZzZXQgKyB0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uOworICAgICAgICAgICAgICAgIHJl
dHVybiB7IHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuY29weVJlZigpLCBvZmZzZXQgfTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRhcmdldExvY2F0
aW9uID09IGxvY2F0aW9uID8gdGV4dFJ1blJhbmdlLnN0YXJ0IDogdGV4dFJ1blJhbmdlLmVuZDsK
KyAgICAgICAgfTsKIAorICAgICAgICBpZiAoZm91bmRTdGFydCkKKyAgICAgICAgICAgIHJlc3Vs
dFJhbmdlLnN0YXJ0ID0gYm91bmRhcnkocmFuZ2UubG9jYXRpb24pOwogICAgICAgICBpZiAoZm91
bmRFbmQpIHsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHJhbmdlRW5kIC0g
ZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4
dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0
T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmFu
Z2VFbmQgPT0gZG9jVGV4dFBvc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5n
ZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5z
dGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1
blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkb2NUZXh0
UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0UmFuZ2UuZW5kID0gYm91bmRh
cnkocmFuZ2VFbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBk
b2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICBsb2NhdGlvbiArPSBsZW5ndGg7CiAg
ICAgfQotICAgIAotICAgIGlmICghc3RhcnRSYW5nZUZvdW5kKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKLSAgICBpZiAocmFuZ2VMZW5ndGggJiYgcmFuZ2VFbmQgPiBkb2NUZXh0UG9z
aXRpb24pIC8vIHJhbmdlRW5kIGlzIG91dCBvZiBib3VuZHMKLSAgICAgICAgcmVzdWx0UmFuZ2Ut
PnNldEVuZCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2UtPmVuZE9m
ZnNldCgpKTsKLSAgICAKKwogICAgIHJldHVybiByZXN1bHRSYW5nZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggMDkxNGY3YmNhNjE1MDlmYjVjM2RlZWFjOWQz
OGNlNGQ0YzM4OTY0Yi4uZjRlNDA4YTIxYTU1NmE1OGI4NDIzOGI4ZTMyYzEwMWE3MzZmZDViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlICJG
aW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgpAQCAtMTAzLDkgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QgeyBj
b3B5YWJsZVRleHQoKS5hcHBlbmRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAogICAgIC8v
IEZJWE1FOiBNb3ZlIHRoZXNlIHRvIFNpbXBsZVJhbmdlLCBDaGFyYWN0ZXJSYW5nZSwgYW5kIENo
YXJhY3RlckNvdW50IGFuZCBtb3ZlIG91dCBvZiB0aGlzIGNsYXNzIHRvIHRoZSB0b3AgbGV2ZWwg
KGJvdHRvbSBvZiB0aGlzIGZpbGUpLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBp
bnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBib29sIHNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiwgc2l6ZV90
JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNl
dCwgaW50IGNoYXJhY3RlckNvdW50KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoKTsKQEAg
LTI4OSwxMyArMjg4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlkTG9va0FoZWFkIHsgdHJ1
ZSB9OwogfTsKIAotdXNpbmcgQ2hhcmFjdGVyQ291bnQgPSBzdGQ6OnNpemVfdDsKLQotc3RydWN0
IENoYXJhY3RlclJhbmdlIHsKLSAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiB7IDAgfTsKLSAg
ICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAwIH07Ci19OwogCiBXRUJDT1JFX0VYUE9SVCBDaGFy
YWN0ZXJDb3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRv
ckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQT1JU
IEJvdW5kYXJ5UG9pbnQgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdl
JiwgQ2hhcmFjdGVyQ291bnQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIENoYXJhY3RlclJhbmdlLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURl
dGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bQppbmRleCAyYjkzMTdiMTcxM2YyNjBhMmRhZjM4YzViMWZiYTRlMDg0YWI3Y2E2Li5lMmY4ZjU3
YjM5NTUxNzdiY2RlZjczYWE0MmI3Mzc4YzhhYzkzMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShW
aXNpYmxlUG9zaXRpb24KICAgICAgICAgQ0ZSYW5nZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IERE
UmVzdWx0R2V0UmFuZ2UocmVzdWx0KTsKICAgICAgICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3Vs
dFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uICYmIChoaXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5D
b250ZXh0LmxvY2F0aW9uKSA8IHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCkgewogICAgICAg
ICAgICAgbWFpblJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNvbnRl
eHQubG9jYXRpb24sIHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCk7CisgICAgICAgICAgICBt
YWluUmVzdWx0UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpj
b250ZXh0UmFuZ2UsICptYWtlQ2hhcmFjdGVyUmFuZ2UocmVzdWx0UmFuZ2VJbkNvbnRleHQpKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTUwOCw5ICs1MDgsMTIg
QEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJh
bmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+
IGZyYWdtZW50UmFuZ2VzOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9IGNy
ZWF0ZUxpdmVSYW5nZShpdGVyYXRvci5yYW5nZSgpKTsKICAgICAgICAgQ0ZJbmRleCBmcmFnbWVu
dEluZGV4ID0gcXVlcnlSYW5nZS5zdGFydC5xdWVyeUluZGV4OwotICAgICAgICBpZiAoZnJhZ21l
bnRJbmRleCA9PSBxdWVyeVJhbmdlLmVuZC5xdWVyeUluZGV4KQotICAgICAgICAgICAgZnJhZ21l
bnRSYW5nZXMuYXBwZW5kKFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmN1cnJlbnRSYW5nZSwgcXVl
cnlSYW5nZS5zdGFydC5vZmZzZXQsIHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uu
c3RhcnQub2Zmc2V0KSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoZnJhZ21lbnRJbmRl
eCA9PSBxdWVyeVJhbmdlLmVuZC5xdWVyeUluZGV4KSB7CisgICAgICAgICAgICBDaGFyYWN0ZXJS
YW5nZSBmcmFnbWVudFJhbmdlOworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZS5sb2NhdGlvbiA9
IHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZS5sZW5n
dGggPSBxdWVyeVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsKKyAg
ICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNo
YXJhY3RlclJhbmdlKCpjdXJyZW50UmFuZ2UsIGZyYWdtZW50UmFuZ2UpKSk7CisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0KQogICAgICAg
ICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChjdXJyZW50UmFuZ2UpOwogICAgICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9u
YXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9v
a3VwLm1tCmluZGV4IGQ2NDhmZDcwZmMzOGZjOTJjMjRlNTE3ODkwNDdjZWY2MjYzZmE1MDkuLjZi
YzViZTFmZTc0ZTA1MWEzYTZjYjBiYzYxZmYyODhhNGUxMjY5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTI4NywxMCArMjg3
LDkgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFy
eUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY28KIAogICAgIFJlZlB0cjxSYW5nZT4gZnVsbENo
YXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpOwog
ICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQo
KSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5z
dGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnJhbmdlVG9QYXNz
XSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFu
Z2U7CisgICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5z
dGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnJhbmdlVG9QYXNz
XSkuZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CiAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdo
bGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2Uo
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICptYWtlQ2hhcmFjdGVy
UmFuZ2UoaGlnaGxpZ2h0UmFuZ2UpKSksIG5pbCB9OwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIApAQCAtMzU4LDEzICszNTcsMTIgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+
LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQK
ICAgICBOU1JhbmdlIHNlbGVjdGVkUmFuZ2UgPSBbZ2V0UlZTZWxlY3Rpb25DbGFzcygpIHJldmVh
bFJhbmdlQXRJbmRleDpoaXRJbmRleCBzZWxlY3RlZFJhbmdlczpAW1tOU1ZhbHVlIHZhbHVlV2l0
aFJhbmdlOnNlbGVjdGlvblJhbmdlXV0gc2hvdWxkVXBkYXRlU2VsZWN0aW9uOm5pbF07CiAKICAg
ICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dCgqZnVsbENoYXJhY3RlclJhbmdlKTsKLSAg
ICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgp
IGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV0pOwot
ICAgIE5TUmFuZ2UgaGlnaGxpZ2h0UmFuZ2UgPSBpdGVtLmdldCgpLmhpZ2hsaWdodFJhbmdlOwor
ICAgIGF1dG8gaGlnaGxpZ2h0UmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UoYWRvcHROUyhbYWxs
b2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6
c2VsZWN0ZWRSYW5nZV0pLmdldCgpLmhpZ2hsaWdodFJhbmdlKTsKIAotICAgIGlmIChoaWdobGln
aHRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFoaWdobGlnaHRSYW5nZS5sZW5ndGgp
CisgICAgaWYgKCFoaWdobGlnaHRSYW5nZSB8fCAhaGlnaGxpZ2h0UmFuZ2UtPmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAgICAgCi0gICAgcmV0dXJuIHsgVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2Nh
dGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3JlYXRl
TGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqaGln
aGxpZ2h0UmFuZ2UpKSwgbmlsIH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHAKaW5kZXggYTJiODE4Mjg3N2IyOGFmMjljOGEwNjM5NTRkMzc0Y2Q1YWE1YTVk
YS4uZDNjZjA2YzkzZDE5ZDg1ZWU1MTQ1ZDAyYTEyZDUyYjgzYmM3YTAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTcy
LDExICs3Miw4IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiAgICAgaWYg
KGVuZE9mZnNldCA8IHJlc3VsdExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBy
ZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9v
dCwgZW5kT2Zmc2V0IC0gcmVzdWx0TGVuZ3RoLCBlbmRPZmZzZXQpOwotICAgIGlmICghcmVzdWx0
UmFuZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERp
Y3RhdGlvblJlc3VsdE1hcmtlcigqcmVzdWx0UmFuZ2UsIG1fbWV0YWRhdGEpOworICAgIGF1dG8g
cmVzdWx0UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKCpyb290KSwgeyBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCB9
KTsKKyAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVz
dWx0UmFuZ2UsIG1fbWV0YWRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5t
bQppbmRleCA1MTM1YjkwNmRlZTE4ZTAxNzc5ZWM2MTE0NzQzMWM3OTVlMzhhNThlLi42NWQ1ZGQ1
NjJlOTM3MGNlYmZjZTUzYzMyMjVlMjczNWM1NWI1ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KQEAgLTE0MiwxNCAr
MTQyLDE0IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rp
b25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0CiAKICAgICBOU1JhbmdlIHJhbmdlVG9Q
YXNzID0gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyAqZnVsbENoYXJhY3RlclN0YXJ0LCAq
cG9zaXRpb25Cb3VuZGFyeSB9KSwgMCk7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmls
OwotICAgIE5TUmFuZ2UgZXh0cmFjdGVkUmFuZ2UgPSB0b2tlblJhbmdlKHBsYWluVGV4dChmdWxs
Q2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpOworICAgIGF1dG8g
ZXh0cmFjdGVkUmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UodG9rZW5SYW5nZShwbGFpblRleHQo
ZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZvcHRpb25zKSk7CiAKICAg
ICAvLyB0b2tlblJhbmdlIHNvbWV0aW1lcyByZXR1cm5zIHtOU05vdEZvdW5kLCAwfSBpZiBpdCB3
YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIGdvb2Qgc3RyaW5nLgogICAgIC8vIEZJWE1FICgxNTkw
NjMpOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayBmb3IgemVybyBsZW5ndGggaGVyZS4KLSAg
ICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhZXh0cmFjdGVk
UmFuZ2UubGVuZ3RoKQorICAgIGlmICghZXh0cmFjdGVkUmFuZ2UgfHwgIWV4dHJhY3RlZFJhbmdl
LT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OwogCi0gICAgcmV0dXJu
IHsgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBleHRyYWN0ZWRS
YW5nZS5sb2NhdGlvbiwgZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSwgb3B0aW9ucyB9OworICAgIHJl
dHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgKmV4dHJhY3RlZFJhbmdlKSksIG9wdGlvbnMgfTsKIH0KIAogc3RhdGljIHZvaWQg
ZXhwYW5kU2VsZWN0aW9uQnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0lu
dGVnZXIgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0Fk
ZGVkQmVmb3JlU3RhcnQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQWZ0ZXJFbmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBjYjMwNzFiYzQzMjhlNGVlM2Q0NWMzZjJjM2FiZDJiNWJmMWFjMDk3
Li45ZjBhNDA2ZGU0MTQ5MTgzZjg1MTE2MTI0YjNlZDVjMTliMWVmMmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTgwMyw4ICs4MDMsNyBAQCB1bnNpZ25lZCBQYWdlOjpjb3VudEZpbmRNYXRjaGVz
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZwogCiBzdHJ1
Y3QgRmluZFJlcGxhY2VtZW50UmFuZ2UgewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiByb290
OwotICAgIHNpemVfdCBsb2NhdGlvbiB7IG5vdEZvdW5kIH07Ci0gICAgc2l6ZV90IGxlbmd0aCB7
IDAgfTsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKIH07CiAKIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYg
cmFuZ2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKQEAgLTgxNiwxMCArODE1LDEw
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZp
bmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
IAogICAgICAgICAvLyBFbnN1cmUgdGhhdCByYW5nZXMgYXJlIHNvcnRlZCBieSB0aGVpciBlbmQg
b2Zmc2V0cywgcGVyIGVkaXRpbmcgY29udGFpbmVyLgotICAgICAgICBhdXRvIGVuZE9mZnNldEZv
clJhbmdlID0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGg7CisgICAgICAgIGF1dG8gZW5k
T2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLnJhbmdlLmxlbmd0
aDsKICAgICAgICAgYXV0byBpbnNlcnRpb25JbmRleCA9IHJhbmdlTGlzdC5zaXplKCk7CiAgICAg
ICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlTGlzdC5yYmVnaW4oKTsgaXRlcmF0b3IgIT0g
cmFuZ2VMaXN0LnJlbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgYXV0byBlbmRPZmZz
ZXRCZWZvcmVJbnNlcnRpb25JbmRleCA9IGl0ZXJhdG9yLT5sb2NhdGlvbiArIGl0ZXJhdG9yLT5s
ZW5ndGg7CisgICAgICAgICAgICBhdXRvIGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0g
aXRlcmF0b3ItPnJhbmdlLmxvY2F0aW9uICsgaXRlcmF0b3ItPnJhbmdlLmxlbmd0aDsKICAgICAg
ICAgICAgIGlmIChlbmRPZmZzZXRGb3JSYW5nZSA+PSBlbmRPZmZzZXRCZWZvcmVJbnNlcnRpb25J
bmRleCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGluc2VydGlvbkluZGV4
LS07CkBAIC04NjIsMTEgKzg2MSwxMSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2Um
IHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAg
ICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdoIHJhbmdlcyB3aGVuIHJlcGxhY2luZyB0ZXh0
LCBzdWNoIHRoYXQgZWFybGllciB0ZXh0IHJlcGxhY2VtZW50cyBkb24ndCBjbG9iYmVyIHJlcGxh
Y2VtZW50IHJhbmdlcyBsYXRlciBvbi4KICAgICAgICAgYXV0byYgcmFuZ2VzID0gcmFuZ2VzQnlD
b250YWluZXJOb2RlLmZpbmQoY29udGFpbmVyKS0+dmFsdWU7CiAgICAgICAgIGZvciAoYXV0byBp
dGVyYXRvciA9IHJhbmdlcy5yYmVnaW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VzLnJlbmQoKTsgKytp
dGVyYXRvcikgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLmdldCgpLCBpdGVyYXRvci0+bG9jYXRpb24s
IGl0ZXJhdG9yLT5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29s
bGFwc2VkKCkpCisgICAgICAgICAgICBhdXRvIHJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdl
KG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqY29udGFpbmVyKSwgaXRlcmF0b3ItPnJh
bmdlKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS5jb2xsYXBzZWQoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKGNyZWF0ZUxpdmVSYW5nZShyYW5nZSkucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNl
bGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlv
bjo6SW5zZXJ0UmVwbGFjZW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtODk4LDcgKzg5Nyw3
IEBAIHVpbnQzMl90IFBhZ2U6OnJlcGxhY2VSYW5nZXNXaXRoVGV4dChjb25zdCBWZWN0b3I8UmVm
PFJhbmdlPj4mIHJhbmdlc1RvUmVwbGFjZSwKICAgICAgICAgaWYgKHJlcGxhY2VtZW50TG9jYXRp
b24gPT0gbm90Rm91bmQgfHwgIXJlcGxhY2VtZW50TGVuZ3RoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0
Um9vdCksIHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0pOworICAgICAg
ICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhpZ2hlc3RSb290KSwgeyByZXBs
YWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCB9IH0pOwogICAgIH0KIAogICAgIHJl
cGxhY2VSYW5nZXMoKnRoaXMsIHJlcGxhY2VtZW50UmFuZ2VzLCByZXBsYWNlbWVudFRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKaW5kZXggZDBkMDBj
NmJkNTczMjc3M2MwYTM3ZThiYjUzNjU3ZWIzNDc3ZGViMy4uZDI0NWNjZDllYzkxMjAyZWMzZDBm
NDllZDU1NGMzMDUwZWU5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2luZy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zMSwxMCArMzEsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYzLDE2ICs2MiwxNCBAQCBlbnVtIFRl
eHRDaGVja2luZ1Byb2Nlc3NUeXBlIHsKIH07CiAKIHN0cnVjdCBHcmFtbWFyRGV0YWlsIHsKLSAg
ICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5n
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwogICAgIFN0cmluZyB1c2VyRGVzY3JpcHRp
b247CiB9OwogCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKICAgICBUZXh0Q2hlY2tpbmdU
eXBlIHR5cGU7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBsZW5ndGg7CisgICAgQ2hhcmFj
dGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGRldGFpbHM7CiAgICAg
U3RyaW5nIHJlcGxhY2VtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBhZjI3Yjk5ZjM4N2MxMjhhZmZiNDM2OWFiNGVjM2E5YzBiZmZjMjk4Li4xMzRlYTMxZmNl
OGY5ODg5MTEyY2MxNGMwN2ZkMTc0ZGJlNWJjZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0yMDQ0LDkgKzIwNDQsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5h
bHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBz
Y29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK1JlZlB0cjxSYW5nZT4g
SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgdW5z
aWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCByYW5nZUxv
Y2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyBy
YW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9CiAKIHVuc2lnbmVkIEludGVybmFsczo6
bG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJiByYW5nZSkKQEAg
LTIwNzUsOSArMjA3NSw5IEBAIFN0cmluZyBJbnRlcm5hbHM6OnJhbmdlQXNUZXh0VXNpbmdCYWNr
d2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBwbGFpblRl
eHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcocmFuZ2UpOwogfQogCi1SZWY8
UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCBpbnQgcmFuZ2VMb2NhdGlv
biwgaW50IHJhbmdlTGVuZ3RoKQorUmVmPFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdl
JiByYW5nZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpCiB7
Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFuZ2UsIHJhbmdlTG9jYXRpb24s
IHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0
ZXJSYW5nZShyYW5nZSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9CiAKIFJl
ZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNvbnN0IFJh
bmdlJiBzZWFyY2hSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQpCkBAIC0yNDMyLDggKzI0MzIsNyBAQCB2b2lkIEludGVybmFsczo6aGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIHVuc2lnbmVkIGxvY2F0aQogCiAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6Ok5vbmU7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gbG9jYXRpb247Ci0gICAgcmVzdWx0
Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXN1bHQucmFuZ2UgPSB7IGxvY2F0aW9uLCBsZW5ndGgg
fTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7CiAgICAgY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKHJlc3VsdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlMjM1MjM0MWRiOGMxNWQ0Mjlm
OWNlZmQyODlkZjUyMjcwZTVhYzdjLi5jZjc5ZTUwYzdiODQ3M2Y2ZmUyNTJmOGNjNzY4NTljNmY5
MTU3MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5NSwxMiArMjk1LDEy
IEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGludmFsaWRhdGVDb250cm9sVGlu
dHMoKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxl
bWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIHVu
c2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25l
ZCBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmKTsKICAgICB1
bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0IFJhbmdlJik7CiAg
ICAgU3RyaW5nIHJhbmdlQXNUZXh0KGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNU
ZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmKTsKLSAgICBSZWY8UmFu
Z2U+IHN1YnJhbmdlKFJhbmdlJiwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7
CisgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24s
IHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8UmFuZ2U+PiBy
YW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGludCB4LCBpbnQgeSk7CiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNvbnN0IFJhbmdlJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggMTYyZmFmNDk0NmVhYWRkOTgwZTU3ODlhMThiYmRlYzU1ODNmNjMyMy4uMzc1NzkwNzcwNGY5
MzEzZTY4NDE0YzAwNTU5MTc0MWU0NmEyNWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtMzI1LDEyICszMjUsMTIgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAK
ICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50
IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCk7CiAKLSAgICBSYW5nZT8g
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgbG9uZyByYW5nZUxvY2F0
aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCBzY29wZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25l
ZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvY2F0aW9uRnJvbVJhbmdl
KEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZy
b21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdl
QXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3
YXJkc1RleHRJdGVyYXRvcihSYW5nZSByYW5nZSk7Ci0gICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2Ug
cmFuZ2UsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CisgICAgUmFuZ2Ug
c3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIHVuc2lnbmVkIGxvbmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWdu
ZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBSYW5nZT8gcmFu
Z2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgsIGxvbmcgeSk7CiAgICAgUmFu
Z2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFuZ2UsIERPTVN0cmluZyB0ZXh0
LCBsb25nIHRhcmdldE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3Bw
CmluZGV4IGI4OTkzM2ZmYTFiZjI4NDNjMjZmZGJkNjZkMjkyNmVkMDBjNWY2YTEuLjc2ZWY0NzIy
ZDc1MWNmNmU1OWFhYjllZGZhYjY2NTZlNzA0ZjE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcApAQCAtMzMsNDIgKzMzLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpG
cmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRp
bmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gYmFzZSkKIHsK
LSAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOworICAgIEFTU0VSVChlZGl0
aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOworICAgIFdlYkNvcmU6OkNoYXJhY3RlclJh
bmdlIHJhbmdlIHsgZWRpdGluZ1JhbmdlLmxvY2F0aW9uLCBlZGl0aW5nUmFuZ2UubGVuZ3RoIH07
CiAKLSAgICAvLyBTYW5pdGl6ZSB0aGUgaW5wdXQsIGJlY2F1c2UgVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0YWtlcyBzaWduZWQgaW50ZWdlcnMuCi0gICAgaWYgKHJh
bmdlLmxvY2F0aW9uID4gSU5UX01BWCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaW50
IGxlbmd0aDsKLSAgICBpZiAocmFuZ2UubGVuZ3RoIDw9IElOVF9NQVggJiYgcmFuZ2UubG9jYXRp
b24gKyByYW5nZS5sZW5ndGggPD0gSU5UX01BWCkKLSAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nh
c3Q8aW50PihyYW5nZS5sZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbGVuZ3RoID0gSU5UX01B
WCAtIHJhbmdlLmxvY2F0aW9uOwotCi0gICAgaWYgKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9
PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgeworICAgIGlmIChiYXNl
ID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8v
IE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgY2FsbGVk
IGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVu
IGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgogICAgICAgICAvLyBXZSBoYXZlIHRvIGRv
IHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0
aG9zZSBpcyBub3QKICAgICAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28g
c2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgICAgIC8v
IHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQg
YXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0
J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc3RhdGljX2Nhc3Q8aW50Pihy
YW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKKyAgICAg
ICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKSk7CiAgICAgfQogCi0gICAgQVNTRVJU
KGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBh
cmFncmFwaCk7Ci0KLSAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKTsKLSAgICBpZiAoIXNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoYmFzZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG86OlBhcmFncmFwaCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5k
YXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpKTsKKyAg
ICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFw
aChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlm
ICghcGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8mIHJv
b3ROb2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUo
KTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdlYkNvcmU6OmNoYXJhY3RlckNv
dW50KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2Rl
LCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgcmFuZ2UubG9jYXRpb24sIGxlbmd0aCk7CisgICAgYXV0
byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFy
dC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNy
ZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpw
YXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQpIH0sIHJhbmdlKSk7CiB9CiAKIEVkaXRp
bmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNv
bnN0IFdlYkNvcmU6OlJhbmdlKiByYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKaW5kZXgg
OTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2OS4uZTA0M2Y5NzI0MGU0MjVl
Y2QyNWE0MjdlZGQ5MjdhY2I3NDVlMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1Jhbmdl
LmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
OiB1aW50OF90IHsKICAgICBQYXJhZ3JhcGgsCiB9OwogCisvLyBGSVhNRTogUmVwbGFjZSB0aGlz
IHdpdGggT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+Lgogc3RydWN0IEVkaXRpbmdSYW5nZSB7CiAg
ICAgRWRpdGluZ1JhbmdlKCkKICAgICAgICAgOiBsb2NhdGlvbihub3RGb3VuZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIzMDdhYTI1
ODllZjgxNDBlYWY3NTkwNDE4ZWJlODFhYmMxYTkxODAuLmZhYjQ4NGRlYWExODJiNDZiNWRmM2Jh
OWQ0YWE2ZDNjYmQwY2NlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYUNvbnN0cmFpbnRzLmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNlZW1zIGxpa2Ugd2UgY291
bGQgdXNlIHN0ZDo6dHVwbGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVsb3cgYSBsb3QhCisKIG5h
bWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpAQCAtMjUwLDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVRdWVy
eU9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVRdWVyeU9wdGlvbgogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZ2UmIHJhbmdlKQorewor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxvY2F0aW9uKTsKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sZW5ndGgpOworfQorCitP
cHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsb2NhdGlv
bjsKKyAgICBkZWNvZGVyID4+IGxvY2F0aW9uOworICAgIGlmICghbG9jYXRpb24pCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOwor
ICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24sICpsZW5ndGggfSB9Owor
fQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiBpbmZv
KQogewogICAgIGVuY29kZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAtMjA1MywyMiArMjA3Niwx
NiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhbW1h
ckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBk
ZXRhaWwpCiB7Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247Ci0gICAgZW5jb2RlciA8
PCBkZXRhaWwubGVuZ3RoOworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJhbmdlOwogICAgIGVuY29k
ZXIgPDwgZGV0YWlsLmd1ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwudXNlckRlc2NyaXB0
aW9uOwogfQogCiBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJE
ZXRhaWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxpbnQ+IGxv
Y2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2NhdGlvbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4gbGVuZ3RoOwot
ICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9wdGlvbmFsPENo
YXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAgIGlmICghcmFu
Z2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gZ3Vlc3NlczsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9wdGlvbmFsPEdyYW1tYXJE
ZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3Ro
KSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfX07CisgICAg
cmV0dXJuIHsgeyAqcmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3Jp
cHRpb24pIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3RE
YXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3RE
YXRhJiByZXF1ZXN0KQpAQCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRl
eHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVj
a2kKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sb2Nh
dGlvbjsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAgZW5jb2RlciA8PCByZXN1
bHQucmFuZ2U7CiAgICAgZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsKICAgICBlbmNvZGVyIDw8
IHJlc3VsdC5yZXBsYWNlbWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUsOSBAQCBPcHRpb25hbDxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZGVj
b2RlKERlY29kZXImCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsK
LSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNv
ZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJS
YW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdyYW1tYXJE
ZXRhaWw+PiBkZXRhaWxzOwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0aW9uYWw8VGV4dENoZWNr
aW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNv
ZGVyJgogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgqbG9jYXRpb24pLCBXVEZN
b3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH19
OworICAgIHJldHVybiB7IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92
ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNo
ZWV0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2Vy
U3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uMWFiYjQx
NmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIE1h
Y2hTZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBBYnNv
bHV0ZVBvc2l0aW9uQ29uc3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBzdHJ1Y3QgQ2FjaGVRdWVy
eU9wdGlvbnM7CitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRl
cmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBv
cHVwSW5mbzsKQEAgLTE0Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhOwogc3RydWN0
IFZpZXdwb3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAKLXRlbXBs
YXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogfTsK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5n
ZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2hh
cmFjdGVyUmFuZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFu
Z2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlu
Zm8mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggMGZkMmU1NjI4OTViMzE2M2VmNmU3OTZiODNkYTBmZTU2MjQx
OGMxZS4uMjliZDE4ZjdkYTMyMjBmMTkxNmMxYTc2NjhiNWEzZGVhNGMxNDhjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMzNjYsMTIgKzMz
NjYsOSBAQCBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgY29yZVRl
eHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeQogCiBzdGF0aWMgV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdChO
U1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5n
ZSA9IFtuc1Jlc3VsdCByYW5nZV07Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUobnNSZXN1bHQu
cmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICByZXN1bHQucmFu
Z2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFp
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcAppbmRl
eCA2ZWU0NDFiMTFhMjM5MDVlMzNjMzlkOGE5ZTAwZDM5N2Y5NmY1MmIxLi4wNmQ1Y2VjYzRlODUw
YTUyYjRjNzk0Y2UyMTYwNTY1NDBmOTUwZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHcmFtbWFyRGV0YWlsLmNwcApAQCAtNDQsOCArNDQsOCBAQCBSZWY8V2ViR3JhbW1hckRl
dGFpbD4gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRh
aWwmIGdyYQogCiBXZWJHcmFtbWFyRGV0YWlsOjpXZWJHcmFtbWFyRGV0YWlsKGludCBsb2NhdGlv
biwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5nJiB1c2VyRGVz
Y3JpcHRpb24pCiB7Ci0gICAgbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gbG9jYXRpb247Ci0g
ICAgbV9ncmFtbWFyRGV0YWlsLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBtX2dyYW1tYXJEZXRhaWwu
cmFuZ2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubGVu
Z3RoID0gbGVuZ3RoOwogCiAgICAgc2l6ZV90IG51bUd1ZXNzZXMgPSBndWVzc2VzLT5zaXplKCk7
CiAgICAgbV9ncmFtbWFyRGV0YWlsLmd1ZXNzZXMucmVzZXJ2ZUNhcGFjaXR5KG51bUd1ZXNzZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCmluZGV4IGM5Yjc1
NTNjZDdiMDhlZWFjN2Q4MjMzOGIxMTBmNGFlZGQ5ZWY2YWMuLjM5MGI0YTVmN2I5ZWFjNjMxZmQ3
MzI0MTY1N2UyMjFkYTVjMTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdyYW1tYXJEZXRhaWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFt
bWFyRGV0YWlsLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vi
R3JhbW1hckRldGFpbD4gY3JlYXRlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJh
eSogZ3Vlc3NlcywgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24pOwogICAgIHN0YXRpYyBS
ZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwm
KTsKIAotICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5s
b2NhdGlvbjsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRh
aWwubGVuZ3RoOyB9CisgICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFy
RGV0YWlsLnJhbmdlLmxvY2F0aW9uOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGg7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gZ3Vl
c3NlcygpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNh
MTUxZjc2YzA4NjhkYzQ4ODMwYWZmZGM0NzFmZS4uZjYwOGM4ZGI1YzYwNjUzMGNhYTU5NmVkNmFi
NWU5NWQ2Y2VkZTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Rl
eHRDaGVja2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hl
Y2tlcklPUy5tbQpAQCAtMjEyLDggKzIxMiw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAK
ICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUg
PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0g
bWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3Bl
bGxlZFJhbmdlLmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJS
YW5nZShtaXNzcGVsbGVkUmFuZ2UpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJl
c3VsdCkpOwogCiAgICAgICAgIG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9u
ICsgbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRm
ZmI4NGVlNjM0Li5hYzNiZWUwMGIxNjU5M2FjZjQ1NzFlYTk5YzExMDE2Y2MxNGY0NTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQs
MjIgKzMzNCwyMCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dy
YXBoeTpOVUxMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0
Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAg
ICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAg
ICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0
VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5k
KTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NF
UlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAg
IEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byBy
ZXN1bHRSYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwog
ICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBj
aGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAg
ICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50
eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRS
YW5nZTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5n
VHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxz
ID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50
eXBlID0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9
IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJh
bmdlOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRl
dGFpbHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAg
ICAgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChT
cGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1Jhbmdl
ID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFT
U0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRl
dGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAg
ZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRl
dGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAg
ICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RG
b3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5
ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0
aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykK
QEAgLTM3MCwzNiArMzY3LDMxIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVj
a2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5n
VHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0
cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVs
c2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRD
aGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBl
cy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdl
LmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0
aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAg
cmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRp
b24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBy
ZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5n
ZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBs
YWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
biAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24p
KSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAg
cmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1
bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdl
ID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21p
bmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgfQpAQCAtNDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tl
cjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwg
Y29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNz
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFp
bC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAg
ICBhdXRvIGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAg
ICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlv
bnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1h
clJhbmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFp
bC5sZW5ndGgpOwotICAgIE5TU3RyaW5nICpncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1h
ckRldGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZ3Jh
bW1hckRldGFpbERpY3QgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3Jh
bW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRp
b24sIGNvcnJlY3Rpb25zLmdldCgpLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXSk7CisgICAg
TlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbjsKKyAgICBOU0RpY3Rpb25hcnkgKmRldGFpbCA9IEB7CisgICAgICAgIE5TR3JhbW1hclJh
bmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAg
ICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAg
ICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgfTsKIAot
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1Bh
bmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFp
bERpY3QuZ2V0KCldOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1
cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRh
aWw6ZGV0YWlsXTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3Bl
bGxEb2N1bWVudFRhZyBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0
IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggOWNlNWRiYWMxMTRhNDk1ZmVhNGE5ZTk1M2Q5YmZmYzgxZWJkNzZjZC4u
NTJiYjdjNzYzZDAwYjAwM2Q4MWNkMGU4YjE5Zjk4OWZjYWIxYmEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTY1LDggKzY1LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlVGV4dENoZWNraW5nUmVxdWVzdElEKCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCBmMThjYWE3MmNiZDk2NTMx
NzU1ZTkyZWNmYjIwZWY0ZGI4Y2E1M2FmLi43MGEzOTAzNWQ1OGM4MTJjMmNiMDEzMTlmNWExNmM2
ZmE1OWY1ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCkBA
IC04Nyw3ICs4Nyw3IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmFu
Z2VBbmRPZmZzZXQ+IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94CiAgICAgVGV4dEl0ZXJhdG9y
OjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5nZS5nZXQoKSwgc2VsZWN0
aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAgICAgc2VsZWN0aW9uTG9jYXRpb24gKz0g
b2Zmc2V0OwogCi0gICAgcmV0dXJuIHt7IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0
aW9uIH19OworICAgIHJldHVybiB7eyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0
aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OwogfQogCiB2b2lkIFRl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0
cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1
aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWlu
dDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
QXR0cmlidXRlZFN0cmluZyBhbgogCiAgICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxv
Y2F0aW9uVG9SZXN0b3JlID0gbG9jYXRpb25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7CiAgICAg
ICAgICAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jl
c3RvcmUgPiBsb2NhdGlvbkluUm9vdCArIHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJl
bGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxl
Y3Rpb25Ub1Jlc3RvcmUgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlLCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwg
c2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDApOwogICAgICAgICAgICAgICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uVG9SZXN0b3JlLmdldCgpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRT
dHJpbmcgYW4KICAgICB9CiAKICAgICBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBlbnVtZXJhdGVB
dHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBs
ZW5ndGhdKSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRT
dHJpbmdLZXksIGlkPiAqYXR0cnMsIE5TUmFuZ2UgYXR0cmlidXRlUmFuZ2UsIEJPT0wgKnN0b3Ap
IHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFu
Z2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CisgICAgICAgIGF1dG8gYXR0cmli
dXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJvb3QsIGxvY2F0aW9uSW5Sb290
ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CiAgICAg
ICAgIGlmICghYXR0cmlidXRlQ29yZVJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0x
OTksNyArMTk5LDcgQEAgQXR0cmlidXRlZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYgdGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0
PERvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgp
KTsKLSAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNy
ZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBt
YXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAg
IGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1
cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0
KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgICAgICBzaXplX3Qgc3VicmFu
Z2VMb2NhdGlvbjsKICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxlbmd0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDJiM2ExNGI1OWE0
ZTc4ODQyN2NmOTE0YjdiMjMyZGExMGMyODA1YS4uOTE3MDRkMzNjOWM3MDhiMTA5YWFhZTRlNzQ2
NzNiMjMzYjYwMjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTU0MjgsNyArNTQyOCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGVsZXRlU3Vycm91
bmRpbmcoaW50NjRfdCBvZmZzZXQsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KQogICAgIGF1dG8g
c3Vycm91bmRpbmdSYW5nZSA9IG1ha2VSYW5nZShzdGFydE9mRWRpdGFibGVDb250ZW50KHNlbGVj
dGlvblN0YXJ0KSwgc2VsZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gY3Vyc29yUG9zaXRpb24gPSBX
ZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCgqc3Vycm91bmRpbmdSYW5nZSk7CiAgICAgYXV0byYgcm9v
dE5vZGUgPSBzdXJyb3VuZGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJv
b3ROb2RlKCk7Ci0gICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwg
Y2hhcmFjdGVyQ291bnQpOworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoJnJvb3ROb2RlLCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291
bnQpOwogICAgIGlmICghc2VsZWN0aW9uUmFuZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBhODdkYmVmNTQ3MjA3MTUxNzVjZTcyNTY0YzZhOGY1YWFjMTQxYzdiLi5mOTUyZDE2NWJiNTg1
NjJjMmY4YmYyNDI2ZDljNzlhMGQ2ZGUzYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDA2NiwxOCArNDA2NiwyMCBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9u
RGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdAogICAgIHNpemVfdCBzZWxlY3Rpb25MZW5ndGg7CiAg
ICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290LCByYW5n
ZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7CiAKLSAgICBDaGVj
a2VkSW50NjQgbmV3U2VsZWN0aW9uTG9jYXRpb24geyBzZWxlY3Rpb25Mb2NhdGlvbiB9OwotICAg
IENoZWNrZWRJbnQ2NCBuZXdTZWxlY3Rpb25MZW5ndGggeyBzZWxlY3Rpb25MZW5ndGggfTsKLSAg
ICBuZXdTZWxlY3Rpb25Mb2NhdGlvbiArPSBsb2NhdGlvbkRlbHRhOwotICAgIG5ld1NlbGVjdGlv
bkxlbmd0aCArPSBsZW5ndGhEZWx0YTsKKyAgICBhdXRvIG5ld1NlbGVjdGlvbkxvY2F0aW9uID0g
Y2hlY2tlZFN1bTxDaGFyYWN0ZXJDb3VudD4oc2VsZWN0aW9uTG9jYXRpb24sIGxvY2F0aW9uRGVs
dGEpOworICAgIGF1dG8gbmV3U2VsZWN0aW9uTGVuZ3RoID0gY2hlY2tlZFN1bTxDaGFyYWN0ZXJD
b3VudD4oc2VsZWN0aW9uTGVuZ3RoLCBsZW5ndGhEZWx0YSk7CiAKICAgICBpZiAobmV3U2VsZWN0
aW9uTG9jYXRpb24uaGFzT3ZlcmZsb3dlZCgpIHx8IG5ld1NlbGVjdGlvbkxlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChyb290LCBuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwg
bmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2FmZUdldCgpKSkKLSAgICAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBDaGFyYWN0ZXJSYW5nZSBuZXdTZWxlY3Rpb25SYW5nZTsKKyAgICBuZXdTZWxlY3Rpb25SYW5n
ZS5sb2NhdGlvbiA9IG5ld1NlbGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpOworICAgIG5ld1Nl
bGVjdGlvblJhbmdlLmxlbmd0aCA9IG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKTsKKwor
ICAgIGF1dG8gcmVzb2x2ZWRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VT
ZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCBuZXdTZWxlY3Rpb25SYW5nZSk7CisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVk
UmFuZ2UpLnB0cigpLCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxk
Q2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQpAQCAtNDE5MiwxNiArNDE5NCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1
bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwog
ICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcm9vdENvbnRhaW5lck5vZGUgPSByb290Tm9k
ZS0+aXNDb250YWluZXJOb2RlKCkgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPihyb290Tm9kZS5n
ZXQoKSkgOiByb290Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBUZXh0SXRlcmF0b3I6Omdl
dExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3RDb250YWluZXJOb2RlLmdldCgpLCByYW5n
ZU9mSW50ZXJlc3QuZ2V0KCksIHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uLCByYW5nZU9mSW50ZXJl
c3RMZW5ndGgpOwogCi0gICAgICAgIENoZWNrZWRTaXplIG1pZHBvaW50TG9jYXRpb24geyByYW5n
ZU9mSW50ZXJlc3RMb2NhdGlvbiB9OworICAgICAgICBDaGVja2VkPENoYXJhY3RlckNvdW50LCBS
ZWNvcmRPdmVyZmxvdz4gbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9u
IH07CiAgICAgICAgIG1pZHBvaW50TG9jYXRpb24gKz0gcmFuZ2VPZkludGVyZXN0TGVuZ3RoIC8g
MjsKICAgICAgICAgaWYgKG1pZHBvaW50TG9jYXRpb24uaGFzT3ZlcmZsb3dlZCgpKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBtaWRwb2ludFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290Q29udGFpbmVyTm9kZS5nZXQoKSwgbWlkcG9pbnRM
b2NhdGlvbi51bnNhZmVHZXQoKSwgMCk7CisgICAgICAgIGF1dG8gbWlkcG9pbnQgPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqcm9vdENvbnRhaW5lck5vZGUpLCBtaWRwb2ludExvY2F0aW9u
LnVuc2FmZUdldCgpKSk7CiAKLSAgICAgICAgYXV0byBtaWRwb2ludCA9IG1pZHBvaW50UmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0
aW9uID0gc3RhcnRPZldvcmQobWlkcG9pbnQpOwogICAgICAgICBpZiAoc3RhcnRPZlJhbmdlT2ZJ
bnRlcmVzdEluU2VsZWN0aW9uIDwgcmFuZ2VPZkludGVyZXN0U3RhcnQpIHsKICAgICAgICAgICAg
IHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IGVuZE9mV29yZChtaWRwb2ludCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KaW5kZXggY2E0NzkzMTA1NGI4MDI2MjY4NzNlM2Y1M2ZiNWVlMzA1
NGU5ODUxMy4uM2I5NDYzMDRkZmI3NTIxMTQxM2U5ZjhkMTEwN2Y2Zjg3NjU5OWQyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQpAQCAtODY1LDEyICs4NjUsMTEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0
cmkKIAogICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbbV93ZWJWaWV3IF9VSUtpdERl
bGVnYXRlRm9yd2FyZGVyXSBjaGVja1NwZWxsaW5nT2ZTdHJpbmc6c3RyaW5nLmNyZWF0ZU5TU3Ry
aW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV07CiAgICAgZm9yIChOU1ZhbHVlICppbmNvbWluZ1Jl
c3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9
IFtpbmNvbWluZ1Jlc3VsdCByYW5nZVZhbHVlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdl
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgcmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAg
ICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sZW5ndGggPiAw
KTsKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CisgICAgICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2Uo
aW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgfQogCkBAIC05MzksMTEgKzkzOCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWls
CiAgICAgICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAgICAgICAgTlNWYWx1ZSAq
ZGV0YWlsUmFuZ2VBc05TVmFsdWUgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJSYW5n
ZV07CiAgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZSk7Ci0gICAgICAgIE5TUmFu
Z2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKLSAg
ICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAg
ICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICBncmFtbWFyRGV0
YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgZ3JhbW1hckRl
dGFpbC5sZW5ndGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsKKyAgICAgICAgQVNTRVJUKGRldGFp
bFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAg
ICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOwor
ICAgICAgICBncmFtbWFyRGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxS
YW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlKTsKICAgICAgICAgZ3JhbW1hckRldGFpbC51c2VyRGVz
Y3JpcHRpb24gPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25d
OwogICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFt
bWFyQ29ycmVjdGlvbnNdOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2Vz
KQpAQCAtOTU3LDIyICs5NTQsMjAgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogCiAgICAgZm9yIChOU1RleHRDaGVja2lu
Z1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5T
UmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1Rl
eHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsK
LSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAg
ICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNv
bWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJU
KGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBhdXRvIHJlc3VsdFJh
bmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAgICAgICAg
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIGNoZWNraW5n
VHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7CiAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3Vs
dFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5j
b21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0g
cmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAg
ICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAgICAgICAgICAgICAg
ICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC05ODEsOCArOTc2LDcgQEAgc3RhdGljIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRp
b25TZXQ8VGV4dEMKICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0
YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRl
dGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxv
Y2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkZXRhaWwu
bGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZGV0YWlsLnJh
bmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAgICAgICAgICAgICAg
ICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpO
U0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5TQXJyYXkgKmd1ZXNz
ZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsK
ICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtOTkz
LDM2ICs5ODcsMzEgQEAgc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNB
cnJheSAqaW5jb21pbmdSZXN1bHRzLCBPcHRpb25TZXQ8VGV4dEMKICAgICAgICAgfSBlbHNlIGlm
IChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5j
b250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsK
KyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVz
dWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5cGVzLmNv
bnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5s
b2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7
CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRp
b247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQu
cmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRU
eXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNraW5nVHlwZXMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0
Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hl
Y2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIGNo
ZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbikpIHsKICAg
ICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1
bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3Vs
dCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OwogICAgICAgICB9CkBAIC0xMDQ5LDE2ICsxMDM4LDE4IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBz
dHJpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWls
JiBncmFtbWFyRGV0YWlsKQogewotICAgIE5TTXV0YWJsZUFycmF5KiBjb3JyZWN0aW9ucyA9IFtO
U011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdyYW1t
YXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7IGkrKykgewotICAgICAgICBOU1N0cmluZyogZ3Vlc3Mg
PSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmpl
Y3Q6Z3Vlc3NdOworICAgIE5TTXV0YWJsZUFycmF5ICpjb3JyZWN0aW9ucyA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nl
cykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBb
Y29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KLSAgICBOU1Jhbmdl
IGdyYW1tYXJSYW5nZSA9IE5TTWFrZVJhbmdlKGdyYW1tYXJEZXRhaWwubG9jYXRpb24sIGdyYW1t
YXJEZXRhaWwubGVuZ3RoKTsKLSAgICBOU1N0cmluZyogZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiA9
IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOwotICAgIE5TRGljdGlvbmFyeSogZ3JhbW1h
ckRldGFpbERpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdy
YW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlv
bnMsIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdOwotICAgIAotICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJp
bmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOworICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbk5TU3RyaW5nID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247
CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFu
Z2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAg
ICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAg
ICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucywKKyAgICB9OworICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdy
YW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGljdGlvbmFyeV07CiB9CiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNv
bnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCkBAIC0xMTk0LDcgKzExODUsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0
Q2hlY2tpbmdSZXN1bHQgYQogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmll
dyBjbGFzc11dKSB7CiAgICAgICAgIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoID0gYWNjZXB0
ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCk7CiAgICAgICAgIGlmIChyZXBsYWNlbWVu
dExlbmd0aCA+IDApIHsKLSAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFr
ZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7Cisg
ICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENh
bmRpZGF0ZS5yYW5nZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAg
TlNSYW5nZSBzb2Z0U3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKE5TTWF4UmFuZ2UocmVwbGFjZWRS
YW5nZSkgLSAxLCAxKTsKICAgICAgICAgICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNl
bWVudC5lbmRzV2l0aCgiICIpKQogICAgICAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKil2aWV3
IF9zZXRTb2Z0U3BhY2VSYW5nZTpzb2Z0U3BhY2VSYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBlZDVlZDIwNDAyOTU1NzhlYmU5OWViODA3
NzQyZDdlMDZiMDQ5ZTMwLi5kZDg3YWQ0OWEzNWE4MmUzMmRmMmJjZWNmNWRlMmZlNzVmYjY4NDRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgy
MSwxMCArODIxLDkgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFu
Z2U6KE5TUmFuZ2UpbnNyYW5nZQogCiAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlz
UmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbwogewotICAgIGlmIChuc3JhbmdlLmxvY2F0aW9u
ID4gSU5UX01BWCkKKyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdl
KG5zcmFuZ2UpOworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5zcmFu
Z2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFYIC0g
bnNyYW5nZS5sb2NhdGlvbjsKIAogICAgIGlmIChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5n
ZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBh
c3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQg
bWV0aG9kcyB0aGF0CkBAIC04MzYsNyArODM1LDcgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoK
ICAgICAgICAgYXV0byogZWxlbWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVs
ZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWxlbWVudCwgbnNy
YW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVu
dHMoKmVsZW1lbnQpLCAqcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0
aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC04NDQsMTAgKzg0
Myw5IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9
IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFn
cmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiByb290Tm9kZSA9
IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAKLSAg
ICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsg
cm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0pOwotICAgIHJldHVybiBXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdy
YXBoU3RhcnRJbmRleCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBh
dXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0
YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4g
Y3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFw
aFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgKnJhbmdlKSk7CiB9CiAKIC0gKERPTVJhbmdl
ICopX2NvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWRkZjIzZWNmM2NiYTViOWJj
OWVhOWYyNmVlZGNmMDM3OTk1Njg4Yy4uNmY5MWVmYjlhOTAxYWUxY2NiYWU1NmM5YjJmZDk5YzE0
MDk5NTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtNzI3OCwxMiArNzI3OCw5IEBAIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHlwZSB0eXBlCiAKIHN0YXRpYyBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENo
ZWNraW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1Jh
bmdlIHJlc3VsdFJhbmdlID0gbnNSZXN1bHQucmFuZ2U7Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5
cGUobnNSZXN1bHQucmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFu
Z2UubG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAg
ICByZXN1bHQucmFuZ2UgPSAqV2ViQ29yZTo6bWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJh
bmdlKTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmlu
ZzsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApp
bmRleCBkNzA1M2VjMzIwNGNhYWVlMGU0OWE4MWUxNWJlMTEyODM0OThjZGM0Li4xNzVhMDRiOWRi
Y2UwODMwMTMwNWZhMzlmNDU5MDcxNTE4ZGQ2ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcApAQCAtNzc2MSwyMyArNzc2MSwyMSBAQCBIUkVTVUxUIFdlYlZpZXc6OmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZyhVSU5UIGxvY2F0aW9uLCBVSU5UIGxlbmd0aAog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSW50UmVjdCBy
ZXN1bHRJbnRSZWN0OwotICAgIHJlc3VsdEludFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQoMCwg
MCkpOwotICAgIHJlc3VsdEludFJlY3Quc2V0U2l6ZShJbnRTaXplKDAsIDApKTsKLSAgICAKLSAg
ICBpZiAobG9jYXRpb24gPiBJTlRfTUFYKQotICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGlm
IChsZW5ndGggPiBJTlRfTUFYIHx8IGxvY2F0aW9uICsgbGVuZ3RoID4gSU5UX01BWCkKLSAgICAg
ICAgbGVuZ3RoID0gSU5UX01BWCAtIGxvY2F0aW9uOwotICAgICAgICAKLSAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCgpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byogZWxlbWVudCA9
IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgp
OworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV1dHJuIEVfRkFJTDsKKworICAgIENoYXJh
Y3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uID0g
bG9jYXRpb247CisgICAgY2hhcmFjdGVyUmFuZ2UubGVuZ3RoID0gbGVuZ3RoOworICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKCplbGVtZW50KSwgY2hhcmFjdGVyUmFuZ2UpOwogCiAgICAgaWYgKCFyYW5nZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAgCisKICAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS5l
ZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7Ci0gICAgcmVzdWx0SW50UmVj
dCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKKyAgICBJbnRSZWN0IHJl
c3VsdEludFJlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAKICAg
ICByZXN1bHRJbnRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmQw
ZjBhZDkwYWM5OWQzZDJkNjY0YmNjMTRiMTA0YzE5YTliNTNiOC4uYjI3YzdhMTQxMjBmOTJmZDFm
MmI1MTRlODg0ZjEyNTUwODllN2YyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaWRld2F5cyBqaWdnbGVz
IHdoZW4gc2Nyb2xsaW5nIHRoZSBzaGVsdmVzIG9uIGJldGEubXVzaWMuYXBwbGUuY29tCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRl
eC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0
ZWQudHh0CmluZGV4IDBmNDBlZmQ4M2NiYTgwMDJkMThhMTYwN2I5YzU4NzJlZmUxZGU3MmMuLjIz
NGQzMzk2NzNhMjM2OGEzZTg0MjYxNzhlNzEyMTNmODQxYTBmMTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3Vu
ZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0CkBA
IC0xLDEyICsxLDEyIEBACiB0ZXh0CiB0ZXh0CiB0ZXh0Ci1UaGlzIHZlcmlmaWVzIHRoYXQgdGV4
dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBvdXQgb2Yg
Ym91bmRzCitUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jh
c2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMQogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAotUEFTUyBpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0
TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyBmYWxzZQorUEFTUyBpdGVtMS5pc1RleHRN
YXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4
LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbAppbmRleCAwYWIy
ZjE3OTU5OGRiYTA3NWMwNmVkNzI4YWYxMTA2OTZkNWU3MmExLi42YWM3ZjlmNjcyY2I2ODUxNWUw
N2EzYzUwMTBlZTY4MDBhMzFiYmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0
LW9mLWJvdW5kcy1jcmFzaC5odG1sCkBAIC0xNCwxMiArMTQsMTIgQEAgdGV4dAogCiA8c2NyaXB0
PgogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5k
ZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAg
ICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Ig
bm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggZ3JlYXRlciB0aGFuIDJeMzEiKTsKIAogICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKICAgICAgICAgdmFyIGl0ZW0xID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIHNob3VsZEJlRmFs
c2UoIml0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5
OTk5OTk5OSkpIik7ICAgICAgIAorICAgICAgICBzaG91bGRCZVRydWUoIml0ZW0xLmlzVGV4dE1h
cmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIik7CiAgICAg
fQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0
L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4
cGVjdGVkLnR4dAppbmRleCA2YTQ4NWFlYjI4MjY1NTg3ZTNkM2NjNjQ0OTc0M2JkYjU2ZTAzOWEy
Li5iYjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1w
bGFpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDE3
IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZp
ZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgog
MTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci01OCw1NzIsMCwx
OAotMTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTEw
LDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3Miw0MCwxOAotMCww
LDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhlIGJlZ2lubmluZzog
KDAsMCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgx
LDApLCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDApLCAoNTgs
NTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCksICg1OCw1NzIsMCwx
OCkKK2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVy
OiAoNSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIpLCAoNTAsNTcyLDgs
MTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQorZmlyc3QgbGluZTog
KDAsNiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEwLDU3Miw0OCwxOCkK
K2ZpcnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZSB3
aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAoMTgsNTcyLDQwLDE4
KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwgKDU4LDU3MiwwLDE4
KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCwwKSwgKDU4LDU3Miww
LDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywxKSwgKDU4LDU3Miww
LDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0Mjk0OTY3Mjk1KSwg
KDU4LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQv
Zmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKaW5kZXgg
NzkyNThiMTlhZWYxY2Y2YmFiZjljYTVjZTNkZDVkOGQyMjZkNjBkZS4uNjJjZGM5YjgyNmY5NjVm
ODU1ZDdkNWM4N2FlN2U1OTBkNDQ2MjlkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1w
bGFpbi5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tz
KCk7Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAg
fQogPC9zdHlsZT4KQEAgLTEyLDcgKzcsNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzog
MCB9CiA8Ym9keSBjb250ZW50ZWRpdGFibGU+CiAxMjM0NTYKIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLQogCXZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgib2wiKTsKIAkKIAlmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTIxLDQwICsxNSw0MiBA
QCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVu
ZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3Rh
cnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCAr
ICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9
CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQotCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0
aW9uKGRvY3VtZW50LmJvZHksIDApOwogCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcg
Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgx
LCAwKSk7IC8vIGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0
IGF0IHRoZSBlbmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0
ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDUsIDEpKTsgLy8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2
KSk7IC8vIGZpcnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5
NDk2NzI5NSkpOyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkp
OyAvLyBvdXQgb2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0
Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQot
CQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywg
MSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCisJCQl3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKKwkJCWxvZ1JlY3QoImNhcmV0IGF0
IHRoZSBiZWdpbm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJz
dCBjaGFyYWN0ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGlu
ZSIsIDYsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAw
KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFz
dCBjaGFyYWN0ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7
CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJz
dCBsaW5lIiwgMCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dS
ZWN0KCJmaXJzdCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5l
IHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVj
dCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0
KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1Jl
Y3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVj
dCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJ
CX0gY2F0Y2ggKGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsK
IAkJfQotCQkKKwogCQl2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsK
IAkJY29uc29sZS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKIAkJZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChjb25zb2xlKTsKLQkJCiAJfSBlbHNlIHsKIAkJZG9jdW1lbnQud3JpdGUo
IihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CiAJfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKaW5kZXggYWNmZDUyZjBiOTQ4YTY1M2Zj
MDZmMjhjNTNmZDI3MjE2NDBhOGFkNC4uYmIwMmM3YmUxMjBlODA3MGYyMDQ1ZGEzNjVkMmQwOWQz
NDY2YjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDI0ICsxLDE3IEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdp
bkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byA0IG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogMTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4
Ci01OCw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAs
NTcyLDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTE4LDU3
Miw0MCwxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAorY2FyZXQgYXQgdGhl
IGJlZ2lubmluZzogKDAsMCksICgxMCw1NzIsMCwxOCkKK2NhcmV0IGFmdGVyIHRoZSBmaXJzdCBj
aGFyYWN0ZXI6ICgxLDApLCAoMTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6
ICg2LDApLCAoNTgsNTcyLDAsMTgpCitjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmU6ICg2LDEwMCks
ICg1OCw1NzIsMCwxOCkKK2ZpcnN0IGNoYXJhY3RlcjogKDAsMSksICgxMCw1NzIsOCwxOCkKK2xh
c3QgY2hhcmFjdGVyOiAoNSwxKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDIp
LCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMTAwKSwgKDUwLDU3Miw4LDE4KQor
Zmlyc3QgbGluZTogKDAsNiksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw3KSwgKDEw
LDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDQyOTQ5NjcyOTUpLCAoMTAsNTcyLDQ4LDE4KQor
Zmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXI6ICgxLDQyOTQ5NjcyOTUpLCAo
MTgsNTcyLDQwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywwKSwg
KDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoMTAwMCww
KSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNywx
KSwgKDU4LDU3MiwwLDE4KQorb3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kOiAoNyw0
Mjk0OTY3Mjk1KSwgKDU4LDU3MiwwLDE4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbAppbmRleCBmZGNmYzZkNGIzNzc5YjliZDM5ZDg3NzFjZDJmYjBkYmE2MzBmMjFlLi5l
NWJmMjg2NjBjYzM3OGI2YWVlYmJjMzZkM2JlOWY5Mjk5ZGVmYTk0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbApAQCAtMSwxMCArMSw1IEBACiA8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgdGVzdFJ1bm5lci5kdW1w
RWRpdGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4KIGJvZHkgeyBtYXJnaW46
IDEwOyBwYWRkaW5nOiAwIH0KIDwvc3R5bGU+CkBAIC0yMSwzMyArMTYsMzYgQEAgYm9keSB7IG1h
cmdpbjogMTA7IHBhZGRpbmc6IDAgfQogCQlpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UpKTsKIAkJY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVt
KTsKIAl9Ci0JCisKKyAgICBmdW5jdGlvbiBsb2dSZWN0KGNvbW1lbnQsIHN0YXJ0LCBsZW5ndGgp
CisgICAgeworICAgICAgICBsb2coY29tbWVudCArICI6ICgiICsgc3RhcnQgKyAiLCIgKyBsZW5n
dGggKyAiKSwgKCIKKyAgICAgICAgICAgICsgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZShzdGFydCwgbGVuZ3RoKSArICIpIik7CisgICAgfQorCiAJaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0JCQogCQl0cnkgewotCQkKIAkJCXRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotCQkKKwogCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3Vt
ZW50LmJvZHksIDQpOwogICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRU
ZXh0KCI1NiIsIDAsIDEpOwogCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSgwLCAwKSk7IC8vIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCAwKSk7
IC8vIGNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAwKSk7IC8vIGNhcmV0IGF0IHRo
ZSBlbmQgb2YgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoNiwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMSkpOyAvLyBmaXJzdCBjaGFyYWN0ZXIKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEp
KTsgLy8gbGFzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDUsIDIpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxMDApKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA2KSk7IC8v
IGZpcnN0IGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDAsIDcpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCQkJbG9nKHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgNDI5NDk2NzI5
NSkpOyAvLyBmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMCkpOyAvLyBv
dXQgb2YgYm91bmRzLCBzaG91bGQgYmUgemVybyByZWN0Ci0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxMDAwLCAwKSk7IC8vIC0iLQotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgMSkpOyAv
LyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDcsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0KKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBi
ZWdpbm5pbmciLCAwLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGFmdGVyIHRoZSBmaXJzdCBjaGFy
YWN0ZXIiLCAxLCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBlbmQgb2YgbGluZSIsIDYs
IDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMTAwKTsKKwkJ
CWxvZ1JlY3QoImZpcnN0IGNoYXJhY3RlciIsIDAsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFy
YWN0ZXIiLCA1LCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMik7CisJCQls
b2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5l
IiwgMCwgNik7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIiwgMCwgNyk7CisJCQlsb2dSZWN0KCJm
aXJzdCBsaW5lIiwgMCwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJmaXJzdCBsaW5lIHdpdGhv
dXQgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDQyOTQ5NjcyOTUpOworCQkJbG9nUmVjdCgib3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMCk7CisJCQlsb2dSZWN0KCJvdXQg
b2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCAxMDAwLCAwKTsKKwkJCWxvZ1JlY3QoIm91
dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDcsIDEpOworCQkJbG9nUmVjdCgib3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgNDI5NDk2NzI5NSk7CiAJCX0gY2F0
Y2ggKGV4KSB7CiAJCQlsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKIAkJfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDli
M2Q3MDcyNDI3ZGNlZDA1ZTM2NjhiODY3ODkyN2JkMmE1MDEzZTAuLmM1NTM3ZTQ3YjZmOTkzNThh
ZTUxY2U2ZDcwMDI4MWI3YWNkMDg3N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0OSw3ICs4NDksMTAgQEAgd2Via2l0Lm9yZy9iLzIw
MzUxNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2l6aW5nL2R5bmFt
aWMtYXZhaWwKICMgU3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdL
MQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZh
bGlkYXRlIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMDUzMTQgWyBDYXRhbGluYSBdIGVkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFp
bHVyZSBdCisjIFJlc3VsdHMgYXJlIGdvb2Qgb24gQ2F0YWxpbmEgYW5kIG5ld2VyLiBEZWxldGUg
dGhlc2UgbGluZXMgd2hlbiB3ZSBzdG9wIHN1cHBvcnRpbmcgdGhlc2Ugb2xkZXIgdmVyc2lvbnMg
b2YgbWFjT1MuCitbIFNpZXJyYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIEhpZ2hTaWVycmEgXSBlZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1
cmUgXQorWyBNb2phdmUgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA1NDEyIFsgTW9q
YXZlIERlYnVnIF0gd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1j
YWxscy5odG1sIFsgVGltZW91dCBdCiAKQEAgLTk2Myw0ICs5NjYsNCBAQCB3ZWJraXQub3JnL2Iv
MjA5NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1cnNvci1uby1tb3VzZW1vdmUuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDk1NjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtIFsgUGFz
cyBDcmFzaCBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGls
ZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIv
Y2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBh
Y2IxZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1YWVkZDcxMWFhZTlkLi5mNDI0NGRiZjEzOGZiOWM4
MjQ3YzIzOTJlMzcyYTg0OWJhNTRjZmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjMsOSArMjIzLDkgQEAgd2Via2l0Lm9yZy9iLzEw
NTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdpbm5pbmctb2YtYXV0
b2NvcnJlY3QKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvcmVtb3Zp
bmctdW5kZXJsaW5lLWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVh
dGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3Nw
ZWxsaW5nL2FjY2VwdC1jYW5kaWRhdGUtYWxsb3dzLWF1dG9jb3JyZWN0LW9uLW5leHQtd29yZC5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5n
L2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vy
LWluY2x1ZGVzLWh5cGhlbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1s
aW5lcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1m
b250Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmds
aXNoLWJ0LXRleHQtd2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQt
d2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC0xMDc0
LDQgKzEwNzQsNCBAQCB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5
NjcyIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRj
aC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4
OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1z
dXBwb3J0LWNsaWNrLmh0bWwgWyBQYXNzIENyYXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCit3ZWJraXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1
YmJlci1zdXBwb3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMzcwNmMxOTVj
MjRmZTkwNjkzYTJiYWNiODI3M2EyNWNkZmI1NmEwLi41ZTk2Yjc5OWY5OTQyM2MwM2YxMWJhODhm
NDkwNWY3NmUzYTY5MTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5h
KyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtp
dC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBd
IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250
ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUt
c2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MjA0MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwg
WyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0
Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjRjYzExNTE5MGZmNzRkNWI4ZmU0Y2MyNmQ0YjJkMjY0YzJlZTVjMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
c3R5bGVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQK
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2lu
RWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4
dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBC
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3Rl
eHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4g
QiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi0xMjM0NTYKLTEwLDU3MiwwLDE4Ci0x
OCw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTYxLDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTIsNTcy
LDksMTgKLTUyLDU3Miw5LDE4Ci01Miw1NzIsOSwxOAotMTAsNTcyLDUxLDE4Ci0xMCw1NzIsNTEs
MTgKLTEwLDU3Miw1MSwxOAotMTgsNTcyLDQzLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCww
Ci0wLDAsMCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1y
YW5nZS0wMDEtZXhwZWN0ZWQudHh0CmluZGV4IDVhYWNlMDc0MDEwMTA2MGVjY2M0OTIwNTc0ODdi
YzZiZDgzMDM3MzkuLjc1ODU4Y2U2NTM4YTdjNTJkMDhkZjVjM2QzMmM0MTIxZTA0Mjc0NDEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1z
dWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEt
ZXhwZWN0ZWQudHh0CkBAIC04LDUgKzgsNSBAQCBUZXN0aW5nIHRleHQgd2l0aCBiciBlbGVtZW50
cyAoPGRpdj48YnI+PC9kaXY+aGVsbG88YnI+KQogKDEsIDEwMCk6IGhlbGxvCiAoNiwgMSk6CiAo
NywgMSk6Ci0oMTAwLCAwKTogdW5kZWZpbmVkCi0oMTAwLCAxMDApOiB1bmRlZmluZWQKKygxMDAs
IDApOgorKDEwMCwgMTAwKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1y
YW5nZS0wMDEuaHRtbAppbmRleCAzYTkzMDMyOGUxMDYwMzlmMTUzMTNmNGRjNDJhMTQ0ZWRkOGVi
NDViLi45NDMxYTM5ZTRlNDUzYjBiYThlNjU1MDgxMmI3NzhmMzJiZGY1ZWQ3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5n
LWZyb20tcmFuZ2UtMDAxLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCkBAIC0zNCw4ICsz
NCw4IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KICAgICAgICAgICAgIGxvZygi
KDEsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMSwgMTAwKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2coIig2LCAxKTogIiArIHRl
eHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg2LCAxKS5zdHJp
bmcoKSk7CiAgICAgICAgICAgICBsb2coIig3LCAxKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIu
YXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg3LCAxKS5zdHJpbmcoKSk7IC8vIHNob3VsZCBi
ZSBlbXB0eQotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xs
ZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVu
ZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJv
bGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBi
ZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250
cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBi
ZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJv
bGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBi
ZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRN
TCA9ICIiOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
LWV4cGVjdGVkLnR4dAppbmRleCBkNzk3ZDIyMzExYzFlM2Y5ZTU2ZTE3ZWExNzM1OGVhMWMyOWRk
NmU2Li42ODAxMjc5MDZjMWU4NjdiYmY2ZTgxMjQxNzZjZTEyMWU0NjgzYmZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5n
LWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKQEAg
LTcsOCArNyw4IEBAIFRlc3Rpbmcgc3R5bGVkIHRleHQgKDEyPGI+MzxpPjQ1NjwvaT48L2I+KQog
KDAsIDEwMCk6IDEyMzQ1NgogKDUsIDEpOiA2CiAoNSwgMik6IDYKLSgxMDAsIDApOiB1bmRlZmlu
ZWQKLSgxMDAsIDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6IAorKDEwMCwgMTAwKTogCiAKIFRl
c3RpbmcgcHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkKIHRvdGFsIGxlbmd0aDog
MTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKaW5kZXggODcx
ZGM3YjI3YWRlZWE0ZTI1Mzg1ZWJmYjNjYTQzNGYyMjg5YjBjMy4uY2Y2YzkxMWQ0YjU3NWIyZjc5
NjRjNzFlZjU2MDczM2U5NzVkYmY2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRp
bmc6IDAgfQogICAgICAgICAgICAgbG9nKCIoMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xs
ZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgwLCAxMDApLnN0cmluZygpKTsKICAgICAg
ICAgICAgIGxvZygiKDUsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vi
c3RyaW5nRnJvbVJhbmdlKDUsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDUsIDIp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDUs
IDIpLnN0cmluZygpKTsKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3Vs
ZCBiZSB1bmRlZmluZWQKLSAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1
dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBz
aG91bGQgYmUgdW5kZWZpbmVkCisgICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElu
cHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBz
aG91bGQgYmUgZW1wdHkKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMTAwKTogIiArIHRleHRJbnB1
dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDEwMCkpOyAvLyBz
aG91bGQgYmUgZW1wdHkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbG9nKCJcblRlc3Rpbmcg
cHJvcGVyIHNwYWNlIHJ1bnMgKDEuXzIuX18zLl9fXzRfNSkiKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuaW5uZXJIVE1MID0gIjEgJm5ic3A7MiAmbmJzcDsmbmJzcDszICZuYnNwOyZuYnNw
OyZuYnNwOzQmbmJzcDs1IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394853</attachid>
            <date>2020-03-28 19:51:39 -0700</date>
            <delta_ts>2020-03-28 23:15:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328195137.patch</filename>
            <type>text/plain</type>
            <size>165827</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFlNDkwOWMwODhhZGI4
OTU0NTk0MjYyYWI0MWI4MWIyYmUxYzQ0Yi4uNDEwYzNlYThhZDZiNjczNjNjZWMwNTkyMzkzZDc2
YTNjZTE0NDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAzLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yOCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBTY3JvbGxMYXRjaGluZyBs
b2cgY2hhbm5lbCBhbmQgaW1wcm92ZSBzb21lIGxvZ2dpbmcgZnVuY3Rpb25hbGl0eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3MzVkOWRmMjk2Y2ZlZWQ1ODI1YjBiZDQxNWI1YzcwYmIwOTk5ZDY0Li42OWQwNTBlMjE3
MzE0OGYxZGU0NWFiYzEzNjJmNDI2N2NmN2VhMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBA
CisyMDIwLTAzLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUg
cmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0y
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERlbGF5
IHByb2Nlc3Mgc3VzcGVuc2lvbiBmb3IgYSB3aGlsZSBhZnRlciBsb2FkaW5nIGFuIGFwcCBsaW5r
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQz
NGRmOGRmNTRjNzkwMTc3Zi4uYzRkNjM2OGE2NzlhYjg1YWY5MDliOWNlNzMyMTNmOGQxN2ZhNDU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDIwLTAz
LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0wMy0yNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBzaG91bGQgYXZvaWQgcmVhZGluZyBVUkwgc3RyaW5ncyBmcm9tIHRoZSBwYXN0
ZWJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5YWQ1Mzc4NTMyNGJiMzRjMGRkYjlkY2MxMTcw
YzhjZGQ0YTM2NmE4Li43OTdkM2MxMzk0ODMzYWQ4OGI3NTM0ZGQyNGUzZGZlNjc2MTlmZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5u
ZWxSZWdpc3RyeS5oCiAgICAgZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cy5oCiAKKyAgICBlZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKICAgICBlZGl0aW5nL0NsaXBib2Fy
ZEFjY2Vzc1BvbGljeS5oCiAgICAgZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCiAgICAg
ZWRpdGluZy9Db21wb3NpdGlvblVuZGVybGluZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWEzYzRiNGRmMTk0MjkzOTRhZjM4
M2ZmMjUwZjYwMjU5OTY3OTQyYi4uYzU5MGUxNWViMGZmMGQ3MWMzOTY4MzQ2YzdlNTdiNjRkNzA1
NzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjczNCw2ICsyNzM0LDcgQEAKIAkJOTNGMTlCMTcwODI0NUU1OTAwMUU5QUJD
IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0YxRDMxQTA1NThDQzVDMDA4MjFCQzAgLyogbGliaWN1Y29yZS5keWxp
YiAqLzsgfTsKIAkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUI4
MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggKi87IH07CiAJCTkzRjFENUMx
MTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAv
KiBKU1dlYkdMTG9zZUNvbnRleHQuaCAqLzsgfTsKKwkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4
IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFF
RTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAv
KiBXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3Qzkg
LyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vw
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBK
U0NvbW1lbnQuaCAqLzsgfTsKQEAgLTEwOTM0LDYgKzEwOTM1LDcgQEAKIAkJOTNGMUQ1QjkxMkQ1
MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdMTG9zZUNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0YxRDVCRTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjFENUJGMTJENTMzNTYwMDgzMkJFQyAvKiBK
U1dlYkdMTG9zZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJHTExvc2VDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjJDQzkx
MjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y2RjFFQjEyN0Y3MEIxMDA1NUNCMDYg
LyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYx
RUMxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTc1OSw2ICsyMTc2MSw3IEBACiAJCQkJOTMzMDlEOEMwOTlFNjQ5MTAwNTZFNTgx
IC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCAqLywKIAkJCQlGNEQ5ODE3RTIxOTVGQkY2MDA4
MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcCAqLywKIAkJCQlGNEQ5ODE3RDIxOTVG
QkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8sCisJCQkJOTNGMkNDOTEy
NDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8sCiAJCQkJN0MzQTkxRTUxQzk2
M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovLAogCQkJCTkzMzA5RDhE
MDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMz
MDlEOEUwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggKi8sCkBAIC0y
OTY0Miw2ICsyOTY0NSw3IEBACiAJCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5u
ZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkw
RDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTU5MkY3ODFBOTJB
QTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5
IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUw
MEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ4MzEwNzVjZDMxMWQ5
NTJjMmIxODY1OWJmZTM0ODU0ZWExN2M3NWIuLmQ1NjI5MDlmZmQyMWQ1ODQ2YTM3NDhhNDc0ZDZl
MzljZWE4YTQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBA
IC0yMzM4LDExICsyMzM4LDEwIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdl
ICopbGl2ZVJhbmdlCiAKIC0gKFJlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKW5zcmFuZ2UKIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAg
YXV0byByYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRf
TUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAg
ICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247Ci0gICAgICAg
IAorCiAgICAgLy8gb3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBj
YWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZl
biBhcmVhIGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbgogICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhp
cyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3Nl
IGlzIG5vdApAQCAtMjM1Miw3ICsyMzUxLDkgQEAgLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRv
RE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3Qg
PSBkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxl
RWxlbWVudCgpOwogICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIG5zcmFuZ2UubG9jYXRpb24s
IG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgKnJhbmdlKSk7CiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHRha2UgYSB0ZXh0IG1hcmtlciByZXByZXNlbnRpbmcg
YSBWaXNpYmxlUG9zaXRpb24gYW5kIGNvbnZlcnQgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KaW5kZXggODU5MmYwNzA3ODNkZjVhZDE4MzgyNzk0ZTVhZTlhZjk4YzBl
ZjJiMy4uYTNmNTNjOGUxZWEzNjM0YzRhOGU1YjA5MmFhOGYzNzIwMGJmYmY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTEwOTgsOSArMTA5OCw5IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywKICAgICAgICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAg
ICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOwotICAg
ICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3Np
YmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5s
b2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNz
cGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0
aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgQFlFUywgTlNN
YWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgp
KTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5T
QWNjZXNzaWJpbGl0eU1hcmtlZE1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQucmFuZ2UubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdl
Lmxlbmd0aCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMzY4MCwx
OSArMzY4MCwyMSBAQCAtIChpZClfdGV4dE1hcmtlckZvckluZGV4OihOU0ludGVnZXIpdGV4dElu
ZGV4CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHRleHRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLCB0ZXh0SW5kZXgsIDApOwotICAgIGlmICghdGV4dFJhbmdlIHx8ICF0
ZXh0UmFuZ2UtPmJvdW5kYXJ5UG9pbnRzVmFsaWQoKSkKKworICAgIGF1dG8qIGRvY3VtZW50RWxl
bWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCkpIHsKLSAgICAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UodGV4dFJhbmdlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKLSAgICB9Ci0gICAgcmV0
dXJuIG5pbDsKKworICAgIGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
YXV0byBib3VuZGFyeSA9IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKmRvY3VtZW50RWxlbWVudCksIHRleHRJbmRleCk7CisgICAgYXV0byBj
aGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdl
KGNyZWF0ZUxpdmVSYW5nZSh7IGJvdW5kYXJ5LCBib3VuZGFyeSB9KSwgdHJ1ZSk7CisgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsK
IH0KIAogLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdp
dGggdGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGY0ZTUxNzUwMTFhN2FmODA0
MjlkNjJkNjExOWMwODM5MDNjZmEzZDguLmUxM2UzM2M4ZmE2ZDgyYjZmOGI2YTIzODRkOTVhOGJm
NDgxODBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjpkZXRhY2goKQogICAgIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzID0geyB9OwogfQog
Ci1WZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0
VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYgcmFuZ2UpCitWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBm
b3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4dEl0ZXJhdG9yLmF0RW5k
KCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCkBAIC02OCwxMyArNjgsMTMgQEAgVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMo
Y29uc3QgUmFuZ2UmIHIKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCi12b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKK3ZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KQogewogICAgIGZvciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkp
CiAgICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50
TWFya2VyKHR5cGUsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZz
ZXQoKSwgZGVzY3JpcHRpb24pKTsKIH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSkKIHsKICAgICBmb3Ig
KGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRN
YXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0
ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCkpKTsKQEAgLTEy
Miw3ICsxMjIsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYgcgogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihSYW5nZSYg
cmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQordm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQogewogICAgIGZvciAoYXV0byB0
ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpCiAgICAgICAgIGFkZE1hcmtlcih0
ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2VyKERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25SZXN1bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5l
bmRPZmZzZXQoKSwgU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCksIG1ldGFkYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNjllMjU0
ZDVlNzJmMTU3NmMzMWRjMTdjZWY4YjZmYzc4ODlhN2VjNC4uMzYyZDc0NzQzNDllNGJjZjhiMzYz
OWNkZjQxMmNhNzlhM2M4YjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUmFu
Z2U7CiBjbGFzcyBSZW5kZXJlZERvY3VtZW50TWFya2VyOwogCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CisKIGNsYXNzIERvY3VtZW50TWFya2VyQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC00OCwxNSArNTAsMTUgQEAgcHVibGljOgogICAgIH5Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNYXJrZXIoY29uc3QgU2ltcGxlUmFu
Z2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIERvY3VtZW50TWFya2VyOjpEYXRhJiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdl
JiwgYm9vbCBhY3RpdmVNYXRjaCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IGFkZE1hcmtlcihSYW5nZSYsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBj
b25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CiAgICAgdm9pZCBhZGREaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlu
dGVycHJldGF0aW9ucyk7Ci0gICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoUmFuZ2Um
LCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9pZCBhZGREaWN0YXRpb25S
ZXN1bHRNYXJrZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRh
ZGF0YSk7CiAjZW5kaWYKICAgICB2b2lkIGFkZERyYWdnZWRDb250ZW50TWFya2VyKFJhbmdlJik7
CiAKQEAgLTEwNyw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRN
YXJrZXIoTm9kZSYsIGNvbnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxS
YW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICB0
eXBlZGVmIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwogICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0Pj4g
TWFya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBhNGRiYTlmOTNj
MWU4MWZlNWUyYjE3YWU3Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2MmNkM2E1YTEy
Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJWE1FOiBDb25z
aWRlciByZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdl
IG5vcm1hbGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBv
YmplY3RzLgogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNp
Z25lZCBvZmZzZXQpOwotUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNhZjg1Y2I4MzA3
OGQ3YTllNTEyMTdmMTQwNTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1YjcwMjA4YTdmN2Iz
MDYyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCArNTMsMjMgQEAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYg
YikKICAgICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQog
CisvLyBGSVhNRTogTm9kZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4gYWxnb3JpdGht
IGxpa2UgdGhpcywgc2luY2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4gdGhlIGlzQ2hh
cmFjdGVyRGF0YU5vZGUgdmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0aWMgYm9vbCBm
YXN0SXNDaGFyYWN0ZXJEYXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuICFub2Rl
LmlzQ29udGFpbmVyTm9kZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2RlLmlzQ2hhcmFj
dGVyRGF0YU5vZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBOb2RlOjpsZW5n
dGggc2luY2UgdGhlIERPTSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2RlJ3MgbGVuZ3Ro
Lgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmIChm
YXN0SXNDaGFyYWN0ZXJEYXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFj
dGVyRGF0YT4obm9kZSkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRDaGlsZE5vZGVz
KCk7Cit9CisKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2Rl
JiBub2RlKQoreworICAgIHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxlbmd0aChub2Rl
KSB9IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNkOTg1NWE4OTE5
YzM3NmUxNTdkMWNlZDljNWRlZWQ3YTE5NTcyNC4uYmQwZTFjNGVjZDBhMDE4NDM3ZjE5OTA0NmU1
NTdkY2EyY2MyNzEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUxLDYgKzUxLDkg
QEAgc3RydWN0IFNpbXBsZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+
Jik7CiB9OwogCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dF
QkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhO
b2RlJik7CisKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBs
ZVJhbmdlJik7CiAKIGlubGluZSBTaW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJh
bmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBlYmQ0Y2FiMzI2ZjJjMDk3NTU0MGNiMWQ2ZjllN2Ex
MjI3OWIyOTg4Li4xMjY4MTNjNmRkMGIzYjc4ZGRiZDMyMmMzMTMzNGU2ODgwNmY5OGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAKQEAgLTU5OSwxNyArNTk5LDE4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpjcmVhdGUocmFuZ2UuY2xvbmVSYW5nZSgpLCBhbHRl
cm5hdGl2ZSktPmFwcGx5KCk7CiAKICAgICAvLyBSZWNhbGN1bGF0ZSBwcmFncmFwaFJhbmdlQ29u
dGFpbmluZ0NvcnJlY3Rpb24sIHNpbmNlIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbW9kaWZp
ZWQgdGhlIERPTSwgc3VjaCB0aGF0IHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5p
bmdDb3JyZWN0aW9uIGlzIG5vIGxvbmdlciB2YWxpZC4gUmFkYXI6IDEwMzA1MzE1IEJ1Z3ppbGxh
OiA4OTUyNgotICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRyZWVTY29wZVJv
b3QucHRyKCksIHBhcmFncmFwaE9mZnNldEluVHJlZVNjb3BlLCBjb3JyZWN0aW9uT2Zmc2V0SW5Q
YXJhZ3JhcGggKyBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7Ci0gICAgaWYgKCF1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbikKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhT
dGFydENvbnRhaW5pbmdDb3JyZWN0aW9uID0gcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyh0cmVlU2NvcGVSb290KSwgcGFyYWdyYXBoT2Zmc2V0
SW5UcmVlU2NvcGUpOworICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3Jy
ZWN0aW9uID0gbWFrZUJvdW5kYXJ5UG9pbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKKyAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIHNldEVuZCh1cGRhdGVkUGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi5nZXQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKLSAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKCp1cGRhdGVkUGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgY29ycmVj
dGlvbk9mZnNldEluUGFyYWdyYXBoLCBhbHRlcm5hdGl2ZS5sZW5ndGgoKSk7CisgICAgQ2hhcmFj
dGVyQ291bnQgYWx0ZXJuYXRpdmVMZW5ndGhBc0NoYXJhY3RlckNvdW50ID0gYWx0ZXJuYXRpdmUu
bGVuZ3RoKCk7CisgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJh
bmdlKHsgdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24sICp1cGRhdGVk
UGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gfSwgeyBjb3JyZWN0aW9uT2Zmc2V0SW5Q
YXJhZ3JhcGgsIGFsdGVybmF0aXZlTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCB9KTsKIAogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKHBsYWluVGV4
dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBpZiAocGxhaW5U
ZXh0KHJlcGxhY2VtZW50UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLm1h
cmtlcnMoKTsKKyAgICBhdXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1
bWVudCgpLm1hcmtlcnMoKTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVz
VG9BZGQpCiAgICAgICAgIG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtl
clR5cGUsIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5h
dGl2ZVR5cGUsIG1hcmtlclR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4YWI3NmU1YmU0
NjBiMjM0OS4uMDg0ZWE3MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI4MywxMiAr
MjgzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdT
dHlsZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBo
KHBhcmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAgICAgICAgYXV0
byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZS5nZXQoKSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBl
bmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQot
ICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBl
bmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFydFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRleCwgVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBh
dXRvIGVuZFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFy
YWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5k
SW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zKSk7CisgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwog
fQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRl
RW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q2hhcmFjdGVyUmFuZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTM2ZmUyZDYxMmI3ZjMzZGYxYjI5NjM3ZWFk
NDRiYjkzNmFmNmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
aGFyYWN0ZXJSYW5nZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1Y3Qg
X05TUmFuZ2UgTlNSYW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IENoYXJhY3RlckNvdW50ID0gc3RkOjpzaXplX3Q7CisKK3N0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7
CisgICAgQ2hhcmFjdGVyQ291bnQgbG9jYXRpb24geyAwIH07CisgICAgQ2hhcmFjdGVyQ291bnQg
bGVuZ3RoIHsgMCB9OworCisjaWYgVVNFKENGKQorICAgIG9wZXJhdG9yIENGUmFuZ2UoKSBjb25z
dDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgb3BlcmF0b3IgTlNSYW5nZSgp
IGNvbnN0OworI2VuZGlmCit9OworCisjaWYgVVNFKENGKQorT3B0aW9uYWw8Q2hhcmFjdGVyUmFu
Z2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5E
QVRJT04pCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKE5TUmFu
Z2UpOworI2VuZGlmCisKKy8vIGlubGluZXMKKworI2lmIFVTRShDRikKKworaW5saW5lIENoYXJh
Y3RlclJhbmdlOjpvcGVyYXRvciBDRlJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0ZSYW5n
ZU1ha2UobG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0ZXJS
YW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFuZ2UgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJh
bmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kIHx8IHJhbmdlLmxvY2F0aW9uID49IDApOworICAg
IEFTU0VSVChyYW5nZS5sZW5ndGggPj0gMCk7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uIDwgMCB8
fCByYW5nZS5sZW5ndGggPCAwKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBDaGFyYWN0ZXJSYW5nZSB7IHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5nZS5s
b2NhdGlvbiksIHN0YXRpY19jYXN0PENoYXJhY3RlckNvdW50PihyYW5nZS5sZW5ndGgpIH07Cit9
CisKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pICYmIGRlZmluZWQoX19PQkpDX18pCisK
K2lubGluZSBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgTlNSYW5nZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOworfQorCitpbmxpbmUgT3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IG1ha2VDaGFyYWN0ZXJSYW5nZShOU1JhbmdlIHJhbmdlKQorewor
ICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxvY2F0aW9uLCBy
YW5nZS5sZW5ndGggfTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXgg
MTU0YmI4N2MzMzFkNDFkOTE2MTYyZTdkOTExMGQ0Nzg4MjdkMWM3MC4uNDZjMjUxNzJlYjJiZWRh
ZjI1ZTc5MzIzZjViZjM4MjM5Y2ExMGFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE0MTUsOCArMTQxNSw4IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZGVzdGlu
YXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbnQgc3RhcnRJbmRleCA9IC0xOwot
ICAgIGludCBlbmRJbmRleCA9IC0xOworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBzdGFy
dEluZGV4OworICAgIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBlbmRJbmRleDsKICAgICBib29s
IG9yaWdpbmFsSXNEaXJlY3Rpb25hbCA9IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwo
KTsKICAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgIWVuZGluZ1NlbGVjdGlvbigpLmlzTm9u
ZSgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxl
Y3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1MjgsMTYgKzE1MjgsMTUgQEAgdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBz
dGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3R5bGVJbkVtcHR5UGFyYWdyYXBoICYmIHNlbGVjdGlv
bklzRW1wdHlQYXJhZ3JhcGgpCiAgICAgICAgIGFwcGx5U3R5bGUoc3R5bGVJbkVtcHR5UGFyYWdy
YXBoLmdldCgpKTsKIAotICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiBzdGFydEluZGV4ICE9
IC0xKSB7CisgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggJiYgZW5kSW5k
ZXgpIHsKICAgICAgICAgLy8gRnJhZ21lbnQgY3JlYXRpb24gKHVzaW5nIGNyZWF0ZU1hcmt1cCkg
aW5jb3JyZWN0bHkgdXNlcyByZWd1bGFyCiAgICAgICAgIC8vIHNwYWNlcyBpbnN0ZWFkIG9mIG5i
c3BzIGZvciBzb21lIHNwYWNlcyB0aGF0IHdlcmUgcmVuZGVyZWQgKDExNDc1KSwgd2hpY2gKICAg
ICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3ZlIG9w
ZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAgICAv
LyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAwLCB0
cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCAr
IGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkKLSAgICAgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LT5zdGFydFBvc2l0
aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNLCBvcmlnaW5hbElzRGlyZWN0
aW9uYWwpKTsKKyAgICAgICAgYXV0byBzdGFydCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKnN0YXJ0SW5kZXgsIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgICAg
IGF1dG8gZW5kID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRl
c3RpbmF0aW9uSW5kZXggKyAqZW5kSW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbih7
IHN0YXJ0LCBlbmQsIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCB9KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDYwNDdiOTQ2NDNlM2Q1ZWE1
NzNhZmJkY2Y2NzZiMjAxMWFjODc1ZjcuLmRmYmE3MjFmNWVhZDNhMjAzZWQ2ZjY0YjliYzA1ZWFk
MjM5ZWMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNCwxMiArMTEx
NCwxMCBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zm
c2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsKLSAg
ICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGluZGV4
LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlkYXRlIGluZGljZXMgYmVjYXVzZSAK
LSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFuZ2UpCisgICAgaWYgKCFzY29wZSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyByYW5nZS0+c3RhcnRQb3NpdGlvbigp
IH07CisgICAgQ2hhcmFjdGVyQ291bnQgaW5kZXhBc0NoYXJhY3RlckNvdW50ID0gaW5kZXg7Cisg
ICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5kZXhBc0No
YXJhY3RlckNvdW50LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucykpIH07CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQzYWMwZmMwMTA5NTJiYWM0ZjEwNmUyYmI5ZDUwYWU3
NGVmN2ZhMjUuLmI2OTQ4OWY3NjU3NWQ1ZmEyODNiZWNhZDA0YzkxMmVlZDkwZGM5NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIyMjMsMTUgKzIyMjMsMTUgQEAgdm9pZCBFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQog
ICAgIE5vZGUmIHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5l
bmRDb250YWluZXIoKTsKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwID0gc3BlbGxp
bmdTZWFyY2hSYW5nZS0+ZW5kT2Zmc2V0KCk7CiAgICAgCi0gICAgaW50IG1pc3NwZWxsaW5nT2Zm
c2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBtaXNzcGVsbGluZ09mZnNldCA9IDA7CiAgICAg
R3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwotICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0
ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICBS
ZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBo
cmFzZTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAKICAgICBib29sIGlzU3BlbGxpbmcg
PSB0cnVlOwotICAgIGludCBmb3VuZE9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgZm91
bmRPZmZzZXQgPSAwOwogICAgIFN0cmluZyBmb3VuZEl0ZW07CiAgICAgUmVmUHRyPFJhbmdlPiBm
aXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
KSkgewpAQCAtMjMwNywxMCArMjMwNywxMCBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIC8vIHBhbmVsLCBh
bmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUgbGF0ZXIuCiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSA+IDApOwot
ICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAhPSAtMSAmJiBncmFtbWFyRGV0
YWlsLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5n
dGggPiAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRoaXMgZ2V0cyBj
b25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFw
aAotICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
KmdyYW1tYXJTZWFyY2hSYW5nZSwgZ3JhbW1hclBocmFzZU9mZnNldCArIGdyYW1tYXJEZXRhaWwu
bG9jYXRpb24sIGdyYW1tYXJEZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgYXV0byBiYWRHcmFtbWFy
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmdyYW1tYXJTZWFyY2hSYW5nZSwgeyBncmFt
bWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiwgZ3JhbW1hckRl
dGFpbC5yYW5nZS5sZW5ndGggfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwog
ICAgICAgICAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gV2UgZm91
bmQgYSBtaXNzcGVsbGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2VsZWN0
IHRoZSBtaXNzcGVsbGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3JlCiAg
ICAgICAgIC8vIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KICAg
ICAgICAgCi0gICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3Vi
cmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgbWlzc3BlbGxpbmdPZmZzZXQsIG1pc3NwZWxsZWRX
b3JkLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHNwZWxsaW5nU2VhcmNoUmFuZ2UsIHsgbWlzc3BlbGxpbmdPZmZzZXQsIG1p
c3NwZWxsZWRXb3JkLmxlbmd0aCgpIH0pOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJFQU0p
KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAg
ICAgCkBAIC0yNzczLDcgKzI3NzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVJhbmdlRm9yU3Bl
bGxDaGVja2luZyhSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYgcgogICAgIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShyYW5nZVRvUmVwbGFjZSwgcmVwbGFjZW1l
bnQpLT5hcHBseSgpOwogfQogCi1zdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNl
cnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3Jh
cGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgaW50
IHJlc3VsdExvY2F0aW9uLCBpbnQgcmVzdWx0TGVuZ3RoKQorc3RhdGljIHZvaWQgY29ycmVjdFNw
ZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1Bh
cmFncmFwaCYgcGFyYWdyYXBoLCBSYW5nZSYgcmFuZ2VUb1JlcGxhY2UsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnQsIENoYXJhY3RlckNvdW50IHJlc3VsdExvY2F0aW9uLCBDaGFyYWN0ZXJDb3Vu
dCByZXN1bHRMZW5ndGgpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBkb3duY2FzdDxDb250YWluZXJO
b2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENvbnRhaW5lcigpLnJvb3ROb2Rl
KCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZvaWQgY29ycmVjdFNwZWxsY2hl
Y2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRleHRDaGVja2luZ1BhcmEKICAg
ICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhhbmVkIGFmdGVyIFNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8gU2VlIDxyZGFyOi8vMTAzMDUz
MTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAgUmVmUHRyPFJhbmdlPiBuZXdQ
YXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
JnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQu
bGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhSYW5nZSwgcmVzdWx0TG9jYXRp
b24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3JhcGggPSBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1Jhbmdl
LmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gbmV3UGFyYWdy
YXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVuZ3RoICsgcmVw
bGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGggfSk7CisgICAgYXV0byBzcGVsbENoZWNr
aW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobmV3UGFyYWdyYXBoUmFuZ2UsIHsgcmVz
dWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpIH0pOworICAgIHBhcmFncmFwaCA9IFRl
eHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1JhbmdlKSwg
Y3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tpbmdSYW5nZSksIGNyZWF0ZUxpdmVSYW5nZShuZXdQ
YXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29u
c3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3ICsyODEwLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtB
bmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0
b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhwYW5kIHRoZSByYW5nZSB0byBlbmNvbXBhc3MgZW50
aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRl
eHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgc2Vs
ZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ID0g
ZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAgICAgYm9vbCByZXN0
b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsKQEAgLTI4MjMsOSArMjgyMiw5IEBAIHZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9u
ID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAgICAgICAgIHNl
bGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRUbyhjYXJldFBvc2l0aW9uKS5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiAoc2VsZWN0aW9u
T2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8fCBwYXJhZ3JhcGgudGV4dENoYXJBdChz
ZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKKyAgICAgICAgICAgIGlm
IChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4
dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClbc2VsZWN0aW9uT2Zmc2V0IC0gMV0gPT0g
bmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0aW9uRm9yUGFy
YWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0
ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAmJiBpc0Ft
YmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9m
ZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNlbGVj
dGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91
bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSkpCiAg
ICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSB0cnVlOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJl
cGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxU
ZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGludCBz
cGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZzZXRE
dWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5
cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMb2NhdGlvbiA9
IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBj
b25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5sZW5ndGg7Ci0gICAgICAgIGNvbnN0
IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoOwot
ICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiA9IHBhcmFn
cmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0b21hdGljUmVw
bGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIENoYXJh
Y3RlckNvdW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdFbmQo
KSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIFRleHRDaGVja2luZ1R5cGUgcmVz
dWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0
TG9jYXRpb24gPSByZXN1bHRzW2ldLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNl
bWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5y
YW5nZS5sZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IHJlc3VsdEVuZExvY2F0aW9uID0g
cmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IGF1
dG9tYXRpY1JlcGxhY2VtZW50RW5kTG9jYXRpb24gPSBwYXJhZ3JhcGguYXV0b21hdGljUmVwbGFj
ZW1lbnRTdGFydCgpICsgcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
ID0gcmVzdWx0c1tpXS5yZXBsYWNlbWVudDsKLSAgICAgICAgY29uc3QgYm9vbCByZXN1bHRFbmRz
QXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVj
dGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CisgICAgICAgIGJvb2wgcmVzdWx0
RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBz
ZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVuZExvY2F0aW9uOwogCiAgICAgICAgIC8vIE9u
bHkgbWFyayBtaXNzcGVsbGluZyBpZjoKICAgICAgICAgLy8gMS4gQ3VycmVudCB0ZXh0IGNoZWNr
aW5nIGlzbid0IGRvbmUgZm9yIGF1dG9jb3JyZWN0aW9uLCBpbiB3aGljaCBjYXNlIHNob3VsZE1h
cmtTcGVsbGluZyBpcyBmYWxzZS4KQEAgLTI4NTAsMTYgKzI4NDksMTYgQEAgdm9pZCBFZGl0b3I6
Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBWZWN0b3I8VGUKICAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiAhc2hvdWxkU2hv
d0NvcnJlY3Rpb25QYW5lbCAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nCiAgICAgICAgICAgICAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tpbmdT
dGFydCgpICYmIHJlc3VsdEVuZExvY2F0aW9uIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYg
IXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgIGF1dG8g
bWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVz
dWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IHBhcmFncmFw
aC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAgICAgICAgICAg
ICBpZiAoIW1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+aXNTcGVsbGluZ01hcmtlckFsbG93
ZWQobWlzc3BlbGxpbmdSYW5nZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcs
IHJlcGxhY2VtZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiBy
ZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNr
aW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChzaG91bGRNYXJrR3JhbW1hciAmJiByZXN1bHRUeXBlID09IFRleHRDaGVja2lu
Z1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1bHRM
b2NhdGlvbiwgcmVzdWx0TGVuZ3RoIH0pKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0TGVu
Z3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKICAgICAgICAgICAgIGZvciAoYXV0byYg
ZGV0YWlsIDogcmVzdWx0c1tpXS5kZXRhaWxzKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRl
dGFpbC5sZW5ndGggPiAwICYmIGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAg
ICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VDb3ZlcnMocmVzdWx0TG9jYXRpb24gKyBkZXRh
aWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8g
YmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uICsgZGV0
YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0
YWlsLnJhbmdlLmxlbmd0aCA+IDAgJiYgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOworICAg
ICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExv
Y2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pKSB7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5y
YW5nZS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJh
bmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjg3Nyw3ICsyODc2LDcgQEAgdm9p
ZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgZG9lc24n
dCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8gICAgKEZJWE1F
OiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRleHQgY2hlY2tp
bmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFjZW1lbnQgPSBy
ZXBsYWNlbWVudC5sZW5ndGgoKSA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5
OwotICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5nZShy
ZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2VUb1Jl
cGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3Ro
IH0pOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgbGlua3Mgc2hvdWxkIGJlIGRvbmUgb25seSBp
bW1lZGlhdGVseSBhZnRlciB0aGV5IGFyZSB0eXBlZC4KICAgICAgICAgICAgIGlmIChyZXN1bHRU
eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkxpbmsgJiYgc2VsZWN0aW9uT2Zmc2V0ICE9IHJlc3Vs
dEVuZExvY2F0aW9uICsgMSkKQEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRpdG9yOjptYXJr
QW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVj
dG9yPFRlCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCBhbGwg
b3RoZXIgcmVzdWx0cyBmb3IgdGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAgICAgICAgd2hp
bGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9jYXRpb24gKyBv
ZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAgICAgICAgICAg
IHdoaWxlIChpICsgMSA8IHJlc3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLnJhbmdlLmxv
Y2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgaSsrOwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9
IHRydWU7CkBAIC0yOTMxLDcgKzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VG
b3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAg
ICAgICAgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSByZXN1bHRMZW5ndGg7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVw
bGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFu
Z2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVu
Z3RoKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpB
Y2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkpOwogCiAgICAg
ICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBl
YXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0yOTQ1LDggKzI5
NDQsOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1Jl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGggZXh0ZW5kZWRQYXJhZ3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAgICAgICAgLy8g
UmVzdG9yZSB0aGUgY2FyZXQgcG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSByZXBsYWNlbWVu
dHMKICAgICAgICAgZXh0ZW5kZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKLSAg
ICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQg
Pj0gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgo
KSkgewotICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBo
LnN1YnJhbmdlKDAsIHNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0
aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJh
bmdlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRl
ZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigp
LCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3Jh
cGhCb3VuZGFyaWVzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOwpAQCAtMjk3Myw3ICsyOTcyLDggQEAgdm9pZCBFZGl0b3I6OmNoYW5n
ZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmluZywgc2VsZWN0
aW9uLmdldCgpKTsKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKCpzZWxlY3Rp
b24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmluZywgU2VsZWN0
UmVwbGFjZW1lbnQ6Ok5vLCBTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnQpOwot
ICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVj
a2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCByZXBsYWNlZFN0cmluZ0xlbmd0aEFzQ2hhcmFjdGVyQ291bnQgPSByZXBsYWNlZFN0cmluZy5s
ZW5ndGgoKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHBh
cmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFyYWN0ZXJD
b3VudCB9KTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKGNoYW5nZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50LCBTdHJpbmcoKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5tYXJrUmV2
ZXJzZWQoY2hhbmdlZFJhbmdlKTsKICNlbHNlCkBAIC0zNzc3LDEyICszNzc3LDEyIEBAIHZvaWQg
RWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiByYW5nZSwgY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nCiAKICAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiArIHJl
bGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgpOwogCi0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdl
T2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOwotICAgICAg
ICB1bnNpZ25lZCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2
ZVN0YXJ0UG9zaXRpb24gKyAxOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZU9mZnNl
dCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbjsKKyAgICAgICAgQ2hh
cmFjdGVyQ291bnQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRp
dmVTdGFydFBvc2l0aW9uICsgMTsKIAotICAgICAgICBhdXRvIHN1YnJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVuZ3RoKTsKKyAg
ICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyBzdWJy
YW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGggfSk7CiAKLSAgICAgICAgbWFya2VkUmFuZ2VzLmFw
cGVuZChzdWJyYW5nZS5wdHIoKSk7CisgICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQoY3JlYXRl
TGl2ZVJhbmdlKHN1YnJhbmdlKSk7CiAgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkuYWRkTWFya2VyKHN1YnJhbmdlLCBEb2N1bWVudE1hcmtlcjo6VGVsZXBob25lTnVtYmVy
KTsKIAogICAgICAgICBzY2FubmVyUG9zaXRpb24gKz0gcmVsYXRpdmVFbmRQb3NpdGlvbiArIDE7
CkBAIC0zOTkyLDE0ICszOTkyLDE0IEBAIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb250ZXh0UmFu
Z2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIAogUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJh
bmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0
KSBjb25zdAogewotICAgIGlmICghcmVzdWx0Lmxlbmd0aCkKKyAgICBpZiAoIXJlc3VsdC5yYW5n
ZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFJhbmdlPiBj
b250ZXh0UmFuZ2UgPSBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAgaWYg
KCFjb250ZXh0UmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LmxvY2F0aW9uLCByZXN1
bHQubGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJS
YW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQucmFuZ2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNj
aGVkdWxlRWRpdG9yVUlVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwCmluZGV4IGFkODI3ODg5Y2FiNTg1ZDMwMTU5NmE2M2FiZGVjNmZmNGI3
NWUzNzQuLmY4MzI3MmMyOGYwYTBkN2Q2N2MwZTcxMjI0YTc3YWM5NDFlYWY1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYz
LDggKzYzLDggQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVja2Vy
Q2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogICAgICAgICBUZXh0Q2hlY2tp
bmdSZXN1bHQgYmFkR3JhbW1hcjsKICAgICAgICAgYmFkR3JhbW1hci50eXBlID0gVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgYmFkR3JhbW1hci5sb2NhdGlvbiA9IGNoZWNrTG9j
YXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247Ci0gICAgICAgIGJhZEdyYW1tYXIubGVuZ3RoID0g
YmFkR3JhbW1hckxlbmd0aDsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sb2NhdGlvbiA9IGNo
ZWNrTG9jYXRpb24gKyBiYWRHcmFtbWFyTG9jYXRpb247CisgICAgICAgIGJhZEdyYW1tYXIucmFu
Z2UubGVuZ3RoID0gYmFkR3JhbW1hckxlbmd0aDsKICAgICAgICAgYmFkR3JhbW1hci5kZXRhaWxz
ID0gV1RGTW92ZShiYWRHcmFtbWFyRGV0YWlscyk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGJh
ZEdyYW1tYXIpOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHN0YXRpYyB2b2lkIGZpbmRNaXNzcGVsbGlu
Z3MoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8CiAK
ICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZzsKICAgICAgICAgICAg
IG1pc3NwZWxsaW5nLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAg
ICAgIG1pc3NwZWxsaW5nLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlzc3BlbGxpbmdMb2NhdGlv
bjsKLSAgICAgICAgICAgIG1pc3NwZWxsaW5nLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOwot
ICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJl
Y3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcu
bG9jYXRpb24sIG1pc3NwZWxsaW5nLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsK
KyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlz
c3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlLmxlbmd0aCA9
IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQg
PSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5z
dWJzdHJpbmcobWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24sIG1pc3NwZWxsaW5nLnJhbmdlLmxl
bmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1pc3NwZWxsaW5nKTsKICAgICAgICAgfQogCkBAIC0xMzksMTQgKzEzOSwxMyBAQCB2b2lk
IFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VUb05leHRFbmQoKQogdm9pZCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVlcygpCiB7CiAg
ICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9jaGVja2luZ0VuZC5yZXNldCgpOwog
ICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNldCgpOwogICAgIG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29mZnNldEFzUmFuZ2UgPSBudWxscHRy
OwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBo
OjpyYW5nZUxlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3Jh
cGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyQ291bnQocGFy
YWdyYXBoUmFuZ2UoKSk7CiB9CkBAIC0xNTgsMTIgKzE1NywxMiBAQCBSYW5nZSYgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICptX3BhcmFn
cmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6c3VicmFu
Z2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdAorUmVmPFJh
bmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKENoYXJhY3RlclJhbmdlIHJhbmdl
KSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJh
bmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBhcmFncmFwaFJhbmdlKCksIHJhbmdl
KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRU
byhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitFeGNlcHRpb25PcjxDaGFyYWN0ZXJD
b3VudD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHBhcmFn
cmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKICAgICBhdXRvIGVuZCA9IG1ha2VCb3VuZGFy
eVBvaW50KHBvc2l0aW9uKTsKQEAgLTE4NywzNSArMTg2LDMzIEBAIFJhbmdlJiBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6Om9mZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9vZmZzZXRB
c1JhbmdlOwogfQogCi1jb25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgp
IGNvbnN0CitTdHJpbmdWaWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051bGwoKSkKICAg
ICAgICAgbV90ZXh0ID0gcGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAgICByZXR1cm4g
bV90ZXh0OyAKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgp
IGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3Rh
cnQoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQogICAgICAgICBtX2NoZWNr
aW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAgIHJldHVybiAq
bV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0VuZCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNr
aW5nRW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAgICAgIG1fY2hl
Y2tpbmdFbmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwotICAgIHJldHVy
biAqbV9jaGVja2luZ0VuZDsKKyAgICByZXR1cm4gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdM
ZW5ndGgoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5ndGgo
KSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xl
bmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nTGVuZ3RoKQogICAgICAgICBtX2No
ZWNraW5nTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobV9jaGVja2luZ1JhbmdlKTsKICAgICByZXR1
cm4gKm1fY2hlY2tpbmdMZW5ndGg7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKIHsKICAgICBp
ZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KQogICAgICAgICByZXR1cm4gKm1fYXV0b21h
dGljUmVwbGFjZW1lbnRTdGFydDsKQEAgLTIyOSw3ICsyMjYsNyBAQCBpbnQgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4g
Km1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFn
cmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdAorQ2hhcmFjdGVyQ291bnQg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0
CiB7CiAgICAgaWYgKG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgIHJldHVy
biAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKQEAgLTI0NiwxMiArMjQzLDEyIEBAIFRl
eHRDaGVja2luZ0hlbHBlcjo6VGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYgY2xpZW50
LCBSYW5nZSYgcmFuZ2UpCiAKIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hlbHBl
cigpID0gZGVmYXVsdDsKIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0
cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5n
T2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5n
ZSkKIHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKIAogICAgIFN0cmluZyBmaXJz
dE1pc3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOworICAgIENoYXJh
Y3RlckNvdW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAKICAgICBmb3IgKFdvcmRBd2FyZUl0
ZXJhdG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3VycmVudENodW5rT2Zmc2V0ICs9IGl0
LnRleHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFN0cmluZ1ZpZXcgdGV4
dCA9IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjc0LDE3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdI
ZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwg
Ym9vCiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPj0gMCAmJiBtaXNzcGVsbGlu
Z0xlbmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8IHRleHRMZW5ndGggJiYgbWlzc3Bl
bGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3Bl
bGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSByYW5n
ZSBvZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3VycmVudENodW5rT2Zmc2V0ICsgbWlz
c3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgYXV0byBt
aXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UsIHsgY3VycmVu
dENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVy
Q291bnQ+KG1pc3NwZWxsaW5nTGVuZ3RoKSB9KTsKIAogICAgICAgICAgICAgLy8gUmVtZW1iZXIg
Zmlyc3QtZW5jb3VudGVyZWQgbWlzc3BlbGxpbmcgYW5kIGl0cyBvZmZzZXQuCiAgICAgICAgICAg
ICBpZiAoIWZpcnN0TWlzc3BlbGxpbmcpIHsKICAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxs
aW5nT2Zmc2V0ID0gY3VycmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKICAg
ICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxp
bmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gbWlzc3BlbGxpbmdSYW5nZS5wdHIoKTsKKyAgICAg
ICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UobWlzc3Bl
bGxpbmdSYW5nZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFN0b3JlIG1hcmtl
ciBmb3IgbWlzc3BlbGxlZCB3b3JkLgotICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdS
YW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5n
UmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAKICAgICAgICAgICAgIC8vIEJhaWwgb3V0
IGlmIHdlJ3JlIG1hcmtpbmcgb25seSB0aGUgZmlyc3QgbWlzc3BlbGxpbmcsIGFuZCBub3QgYWxs
IGluc3RhbmNlcy4KICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTI5OCw3ICsyOTUsNyBA
QCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZp
cnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogICAgIHJldHVybiBmaXJzdE1pc3NwZWxsaW5nOwog
fQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFk
R3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRG
aXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQorU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9v
bCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRG
aXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewogICAg
IGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKQEAgLTMxMyw4ICszMTAsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAg
IC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3
ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAg
ICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IDA7Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlv
biA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFy
RGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxl
bmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0
R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIApAQCAt
MzM0LDggKzMzMSw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3Nw
ZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgd2hpbGUgKHRvdGFs
TGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxSYW5nZUxlbmd0aCkgewogICAgICAgICAvLyBJdGVyYXRl
IHRocm91Z2ggdGhlIHNlYXJjaCByYW5nZSBieSBwYXJhZ3JhcGhzLCBjaGVja2luZyBlYWNoIG9u
ZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIuCiAgICAgICAgIGF1dG8gY3VycmVudExlbmd0aCA9
IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgaW50IGN1cnJlbnRTdGFy
dE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7Ci0gICAgICAg
IGludCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVy
Q291bnQgY3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0T2Zm
c2V0IDogMDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudEVuZE9mZnNldCA9IGN1cnJl
bnRMZW5ndGg7CiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8v
IERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdp
bmFsIHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAg
ICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgpA
QCAtMzQ2LDkgKzM0Myw5IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICBT
dHJpbmcgcGFyYWdyYXBoU3RyaW5nID0gcGxhaW5UZXh0KHBhcmFncmFwaFJhbmdlLnB0cigpKTsK
ICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAg
ICAgICAgICAgYm9vbCBmb3VuZEdyYW1tYXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnQg
c3BlbGxpbmdMb2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VM
b2NhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9
IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdMb2NhdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0g
MDsKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyRGV0YWlsTG9jYXRpb24g
PSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gcmVzdWx0czsKQEAgLTM2MSw0MiArMzU4LDQyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
CiAgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVj
a2VyKCksIHBhcmFncmFwaFN0cmluZywgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywgY3VycmVudFNl
bGVjdGlvbik7CiAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYg
cmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCA+IDApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQubG9jYXRpb247Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5zdWJz
dHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQucmFuZ2Uu
bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFn
cmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2Uu
bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5s
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC50
eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcmVzdWx0LmxvY2F0aW9uIDwgY3Vy
cmVudEVuZE9mZnNldCAmJiByZXN1bHQubG9jYXRpb24gKyByZXN1bHQubGVuZ3RoID4gY3VycmVu
dFN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxl
bmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlv
biA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQu
dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlv
biA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0LnJh
bmdlLmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVyIHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwg
c2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBzcGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lucyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRh
aWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVz
dWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuZGV0YWlscy5zaXplKCk7IGorKykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1
bHQuZGV0YWlsc1tqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
LT5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
LT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVz
dWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiArIGRldGFpbC0+bGVuZ3RoIDw9IGN1cnJl
bnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LmxvY2F0aW9uICsgZGV0YWls
LT5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0
YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdl
LmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubGVuZ3Ro
IDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIgfHwgcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbEluZGV4ID0g
ajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9u
ID0gcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0
aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm91bmRHcmFtbWFyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Zm91bmRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFz
ZUxvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gcmVzdWx0LmRldGFpbHNbZ3Jh
bW1hckRldGFpbEluZGV4XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFy
UGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2Ug
PSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0
LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhZEdy
YW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0YWlsTG9j
YXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9IHNwZWxs
aW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIENo
YXJhY3RlckNvdW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRT
dGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IGNoYXJhY3RlckNvdW50KHsg
Km1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSksICptYWtlQm91bmRh
cnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKICAgICAgICAgICAg
ICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CkBAIC00MDUsNyArNDAyLDcgQEAgU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9v
bCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQ
aHJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNl
T2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAg
ICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3Jh
bW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1h
clBocmFzZU9mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludChtX3Jh
bmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxpbmcg
PSBmYWxzZTsKQEAgLTQyOCwxOCArNDI1LDE4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAK
ICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIAotaW50IFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJE
ZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGlu
dCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK2ludCBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFt
bWFyRGV0YWlscywgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFy
YWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1h
cmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4gRmluZCB0aGUg
ZWFybGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2ggcmFuZ2UgKGlm
IGFueSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBmb3IgZWFjaCBk
ZXRhaWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIg
PSAtMTsKKyAgICBDaGFyYWN0ZXJDb3VudCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSAw
OwogICAgIGludCBlYXJsaWVzdERldGFpbEluZGV4ID0gLTE7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGdyYW1tYXJEZXRhaWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IEdy
YW1tYXJEZXRhaWwqIGRldGFpbCA9ICZncmFtbWFyRGV0YWlsc1tpXTsKLSAgICAgICAgQVNTRVJU
KGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9uID49
IDApOworICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
QVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgIAotICAgICAgICBp
bnQgZGV0YWlsU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgIENoYXJhY3RlckNvdW50IGRldGFpbFN0YXJ0
T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwtPnJh
bmdlLmxvY2F0aW9uOwogICAgICAgICAKICAgICAgICAgLy8gU2tpcCB0aGlzIGRldGFpbCBpZiBp
dCBzdGFydHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UKICAgICAgICAgaWYgKGRl
dGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPCBzdGFydE9mZnNldCkKQEAgLTQ1MCwzMCArNDQ3
LDMwIEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29u
c3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChtYXJrQWxsKSB7Ci0gICAgICAgICAgICBhdXRvIGJhZEdyYW1t
YXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBocmFz
ZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0
aCk7Ci0gICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1l
bnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gYmFk
R3JhbW1hclJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UuZ2V0KCksIHsgYmFk
R3JhbW1hclBocmFzZUxvY2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPnJhbmdlLmxvY2F0
aW9uLCBkZXRhaWwtPnJhbmdlLmxlbmd0aCB9KTsKKyAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5n
ZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLCBE
b2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBvbmx5IGlmIGl0
J3MgZWFybGllciB0aGFuIG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFpbHMgYXJlbid0
IGluIGEgZ3VhcmFudGVlZCBvcmRlcikKLSAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXgg
PCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+bG9jYXRpb24pIHsK
KyAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9j
YXRpb25Tb0ZhciA+IGRldGFpbC0+cmFuZ2UubG9jYXRpb24pIHsKICAgICAgICAgICAgIGVhcmxp
ZXN0RGV0YWlsSW5kZXggPSBpOwotICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlvblNv
RmFyID0gZGV0YWlsLT5sb2NhdGlvbjsKKyAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRp
b25Tb0ZhciA9IGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgcmV0dXJuIGVhcmxpZXN0RGV0YWlsSW5kZXg7CiB9CiAKLVN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRl
dGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRh
aWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zm
c2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1l
dGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVy
bi4KLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1hckRl
dGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPSAw
OworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID0gMDsKICAgICBvdXRHcmFtbWFy
RGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgb3V0R3JhbW1hclBocmFzZU9mZnNldCA9IDA7CiAg
ICAgCi0gICAgU3RyaW5nIGZpcnN0QmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJpbmdWaWV3IGZp
cnN0QmFkR3JhbW1hclBocmFzZTsKIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNoIHJhbmdlIHRv
IGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgZ3JhbW1hciBjaGVja2luZyBuZWVk
cyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZz
ZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgdGhlIG9y
aWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ4MSwxMSArNDc4LDExIEBAIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1h
ckRldGFpbCwKICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKG1fcmFuZ2UuY29w
eVJlZigpKTsKICAgICAKICAgICAvLyBTdGFydCBjaGVja2luZyBmcm9tIGJlZ2lubmluZyBvZiBw
YXJhZ3JhcGgsIGJ1dCBza2lwIHBhc3QgcmVzdWx0cyB0aGF0IG9jY3VyIGJlZm9yZSB0aGUgc3Rh
cnQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZS4KLSAgICBmb3IgKGludCBzdGFydE9mZnNl
dCA9IDA7IHN0YXJ0T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgeworICAgIGZv
ciAoQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8IHBhcmFncmFw
aC5jaGVja2luZ0VuZCgpOyApIHsKICAgICAgICAgVmVjdG9yPEdyYW1tYXJEZXRhaWw+IGdyYW1t
YXJEZXRhaWxzOwogICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uID0gLTE7CiAg
ICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKLSAgICAgICAgbV9jbGllbnQu
dGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyhwYXJhZ3JhcGgu
dGV4dCgpKS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOworICAgICAgICBtX2Ns
aWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGgudGV4dCgp
LnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBocmFz
ZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFt
bWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwpAQCAtNTA2LDcgKzUwMyw3IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwKICAgICAgICAgLy8ga2VwdCBnb2luZyBzbyB3ZSBjb3VsZCBtYXJrIGFsbCBp
bnN0YW5jZXMpLgogICAgICAgICBpZiAoYmFkR3JhbW1hckluZGV4ID49IDAgJiYgZmlyc3RCYWRH
cmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb3V0R3JhbW1hclBocmFzZU9m
ZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0
KCk7Ci0gICAgICAgICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dFN1
YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGgp
OworICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHQoKS5z
dWJzdHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3Ro
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRm91bmQgb25lLiBXZSdyZSBkb25lIG5v
dywgdW5sZXNzIHdlJ3JlIG1hcmtpbmcgZWFjaCBpbnN0YW5jZS4KICAgICAgICAgICAgIGlmICgh
bWFya0FsbCkKQEAgLTUxOCw3ICs1MTUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAgICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgYmFkR3JhbW1hclBo
cmFzZUxlbmd0aDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBocmFz
ZTsKKyAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlLnRvU3RyaW5nKCk7CiB9CiAKIGJv
b2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdApAQCAtNTI5LDcg
KzUyNiw3IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25z
dAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBwYXNzZWQgcmFuZ2UgZXhhY3RseSBj
b3JyZXNwb25kcyB0byBhIGJhZCBncmFtbWFyIGRldGFpbCByYW5nZS4gVGhpcyBpcyBhbmFsb2dv
dXMKICAgICAvLyB0byBpc1NlbGVjdGlvbk1pc3NwZWxsZWQuIEl0J3Mgbm90IGdvb2QgZW5vdWdo
IGZvciB0aGVyZSB0byBiZSBzb21lIGJhZCBncmFtbWFyIHNvbWV3aGVyZSBpbiB0aGUgcmFuZ2Us
CiAgICAgLy8gb3Igb3ZlcmxhcHBpbmcgdGhlIHJhbmdlOyB0aGUgcmFuZ2VzIG11c3QgZXhhY3Rs
eSBtYXRjaC4KLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBncmFtbWFyUGhyYXNlT2Zmc2V0OwogICAgIAogICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRl
dGFpbDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IGZpbmRGaXJzdEJhZEdyYW1tYXIo
Z3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwpAQCAtNTQyLDE1ICs1
MzksMTUgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0
CiAgICAgaWYgKGdyYW1tYXJQaHJhc2VPZmZzZXQgPiAwKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICBBU1NFUlQo
Z3JhbW1hckRldGFpbC5sZW5ndGggPiAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5n
ZS5sb2NhdGlvbiA+PSAwKTsKKyAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGgg
PiAwKTsKIAogICAgIC8vIEJhZCBncmFtbWFyLCBidXQgc3RhcnQgb2YgZGV0YWlsIChlLmcuIHVu
Z3JhbW1hdGljYWwgd29yZCkgZG9lc24ndCBtYXRjaCBzdGFydCBvZiByYW5nZQotICAgIGlmIChn
cmFtbWFyRGV0YWlsLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNldCkKKyAgICBpZiAoZ3Jh
bW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFydCBvZiByYW5n
ZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5kIG9mIHJhbmdl
Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihncmFtbWFyRGV0YWlsLmxlbmd0aCkgIT0g
Y2hhcmFjdGVyQ291bnQobV9yYW5nZSkpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVu
Z3RoICE9IGNoYXJhY3RlckNvdW50KG1fcmFuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgLy8gVXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCB0byBiZSBkaXNwbGF5aW5nIHRo
aXMgZXJyb3IgKHdoZXRoZXIgb3Igbm90IHRoZSBzcGVsbGluZyBwYW5lbCBpcyBvbiBzY3JlZW4p
LgpAQCAtNTk0LDggKzU5MSw4IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6
Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVja2VyKCksIHBhcmFncmFwaC50ZXh0KCks
IGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAgICAgZm9yIChh
dXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMo
cmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSkgewotICAgICAgICAgICAgU3RyaW5nIG1p
c3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCk7CisgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBwYXJhZ3JhcGgu
Y2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LnJhbmdlKSkgeworICAgICAgICAgICAgU3RyaW5n
IG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoLmNoZWNraW5nU3Vic3RyaW5nKCkudG9TdHJpbmco
KTsKICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVsbGVk
V29yZCwgU3RyaW5nKCksIGN1cnJlbnRTZWxlY3Rpb24sIGd1ZXNzZXMpOwogICAgICAgICAgICAg
bV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29y
ZCk7CkBAIC02MDgsMTIgKzYwNSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxw
ZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgICAg
ICByZXR1cm4gZ3Vlc3NlczsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewot
ICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBw
YXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0
Lmxlbmd0aCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6
OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQucmFu
Z2UpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdC5kZXRhaWxzKSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChw
YXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMocmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLmxv
Y2F0aW9uLCBkZXRhaWwubGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFk
R3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwg
cmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sZW5n
dGggPiAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLnJhbmdlLmxvY2F0aW9uID49
IDApOworICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZU1hdGNoZXMo
eyByZXN1bHQucmFuZ2UubG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5y
YW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1tYXJQ
aHJhc2UgPSBwYXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBndWVzcyA6IGRldGFpbC5ndWVzc2VzKQogICAgICAgICAgICAgICAgICAgICAgICAg
Z3Vlc3Nlcy5hcHBlbmQoZ3Vlc3MpOwpAQCAtNjMxLDcgKzYyOCw3IEBAIHZvaWQgVGV4dENoZWNr
aW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nCiB7CiAgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBmaW5kRmly
c3RNaXNzcGVsbGluZy4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kIHRoZSAib3V0IHBhcmFt
ZXRlciI7CiAgICAgLy8gYWxsIHdlIG5lZWQgdG8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5jZS4K
LSAgICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zmc2V0
OwogICAgIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGlnbm9yZWRPZmZzZXQsIHRydWUsIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7CiB9CiAKQEAgLTY0MSw3ICs2MzgsNyBAQCB2b2lkIFRleHRDaGVja2lu
Z0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZl
YXR1cmUgb2Ygb2ZpbmRGaXJzdEJhZEdyYW1tYXIuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFu
ZCAib3V0IHBhcmFtZXRlcnMiOyBhbGwgd2UgbmVlZCB0bwogICAgIC8vIGRvIGlzIG1hcmsgZXZl
cnkgaW5zdGFuY2UuCiAgICAgR3JhbW1hckRldGFpbCBpZ25vcmVkR3JhbW1hckRldGFpbDsKLSAg
ICBpbnQgaWdub3JlZE9mZnNldDsKKyAgICBDaGFyYWN0ZXJDb3VudCBpZ25vcmVkT2Zmc2V0Owog
ICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGlnbm9yZWRPZmZz
ZXQsIHRydWUpOwogfQogI2VuZGlmCkBAIC02NjgsNyArNjY1LDcgQEAgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIE9w
dGlvblNldDwKICAgICBpZiAoY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyKSkgewogICAgICAgICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5ndGggPSB0ZXh0
Lmxlbmd0aCgpOwogICAgICAgICBmb3IgKGF1dG8mIG1pc3BlbGxpbmcgOiBtaXNwZWxsaW5ncykK
LSAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihncmFt
bWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcubG9jYXRpb24pOworICAgICAgICAgICAgZ3JhbW1h
ckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwgbWlz
cGVsbGluZy5yYW5nZS5sb2NhdGlvbik7CiAgICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhj
bGllbnQsIHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2Fs
RXJyb3JzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5oCmluZGV4IDNmMzllODY4ZDk5NDFlNWI4ODFiMDYxNmRkZmMxNmIzNDAxNTExZDQuLjM0
NmQ1YTgxOTJlYmRjYjc2M2IwYTVlMDY1ZjgxMTg4Y2YwYTg5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaApAQCAtMzYsMzQgKzM2LDI4IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNr
aW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgZXhwbGljaXQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+JiYgYXV0
b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFwaFJhbmdlKTsK
IAotICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwotICAgIFJlZjxSYW5nZT4gc3VicmFuZ2Uo
aW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsKLSAgICBFeGNl
cHRpb25PcjxpbnQ+IG9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CisgICAgQ2hhcmFj
dGVyQ291bnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKENo
YXJhY3RlclJhbmdlKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxDaGFyYWN0ZXJDb3VudD4gb2Zm
c2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICB2b2lkIGV4cGFuZFJhbmdlVG9OZXh0
RW5kKCk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0byByZXR1cm4g
YSBTdHJpbmdWaWV3LgotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0OwotCi0gICAgLy8g
RklYTUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGFuZCBqdXN0IGhhdmluZyB0aGUgY2FsbGVy
IHVzZSB0ZXh0KCkgZGlyZWN0bHkuCi0gICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVy
biB0ZXh0KCkubGVuZ3RoKCk7IH0KLSAgICBTdHJpbmcgdGV4dFN1YnN0cmluZyh1bnNpZ25lZCBw
b3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3Ry
aW5nKHBvcywgbGVuKTsgfQotICAgIFVDaGFyIHRleHRDaGFyQXQoaW50IGluZGV4KSBjb25zdCB7
IHJldHVybiB0ZXh0KClbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KV07IH0KKyAgICBTdHJp
bmdWaWV3IHRleHQoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAg
aW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdFbmQoKSBjb25zdDsK
LSAgICBpbnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcgY2hlY2tpbmdTdWJz
dHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNraW5nU3RhcnQoKSwgY2hl
Y2tpbmdMZW5ndGgoKSk7IH0KKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ1N0YXJ0KCkgY29u
c3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgY2hlY2tpbmdFbmQoKSBjb25zdDsKKyAgICBDaGFyYWN0
ZXJDb3VudCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgY2hlY2tpbmdT
dWJzdHJpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3RyaW5nKGNoZWNraW5nU3RhcnQo
KSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0KIAogICAgIC8vIERldGVybWluZXMgdGhlIHJhbmdlIGlu
IHdoaWNoIHdlIGFsbG93IGF1dG9tYXRpYyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBhbiBhdXRvbWF0
aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgbm90IHBhc3NlZCB0byB0aGUKICAgICAvLyB0ZXh0IGNo
ZWNraW5nIHBhcmFncmFwaCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hlY2tpbmcgcmFu
Z2UuCi0gICAgaW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKLSAgICBpbnQg
YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBh
dXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3Q7CisgICAgQ2hhcmFjdGVyQ291bnQgYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tpbmdSYW5n
ZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlv
biA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAg
ICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgp
IGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiBsb2NhdGlvbiAr
IGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9Ci0gICAgYm9v
bCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyBy
ZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID4gY2hl
Y2tpbmdTdGFydCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhDaGFyYWN0ZXJS
YW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPT0gY2hlY2tpbmdTdGFy
dCgpICYmIHJhbmdlLmxlbmd0aCA9PSBjaGVja2luZ0xlbmd0aCgpOyB9CisgICAgYm9vbCBpc0No
ZWNraW5nUmFuZ2VDb3ZlcmVkQnkoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlLmxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJh
bmdlLmxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOyB9CisgICAg
Ym9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7IHJl
dHVybiByYW5nZS5sb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgcmFuZ2UubG9jYXRpb24gKyBy
YW5nZS5sZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KICAgICBSYW5nZSYgcGFyYWdyYXBoUmFu
Z2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTc1LDExICs2OSwxMCBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwogICAgIG11dGFibGUgUmVm
UHRyPFJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0Owot
ICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNraW5nU3RhcnQ7Ci0gICAgbXV0YWJsZSBP
cHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdFbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1f
Y2hlY2tpbmdMZW5ndGg7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBs
YWNlbWVudExlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2No
ZWNraW5nU3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3VudD4gbV9jaGVj
a2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50U3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxDaGFyYWN0ZXJDb3Vu
dD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKIH07CiAKIGNsYXNzIFRleHRDaGVja2lu
Z0hlbHBlciB7CkBAIC04OCwxMSArODEsMTEgQEAgcHVibGljOgogICAgIFRleHRDaGVja2luZ0hl
bHBlcihFZGl0b3JDbGllbnQmLCBSYW5nZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdIZWxwZXIoKTsK
IAotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdP
ZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
KTsKLSAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwg
R3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CisgICAgU3RyaW5nIGZpbmRGaXJzdE1p
c3NwZWxsaW5nKENoYXJhY3RlckNvdW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1h
cmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgU3RyaW5n
IGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBib29s
JiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxp
bmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAjaWYgVVNFKEdSQU1N
QVJfQ0hFQ0tJTkcpCi0gICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFp
bCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1h
cmtBbGwpIGNvbnN0OworICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRh
aWwmIG91dEdyYW1tYXJEZXRhaWwsIENoYXJhY3RlckNvdW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zm
c2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogICAgIHZvaWQgbWFya0FsbEJhZEdyYW1tYXIoKTsK
ICAgICBib29sIGlzVW5ncmFtbWF0aWNhbCgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMDQsNyArOTcs
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29u
c3Q7CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0gICAgaW50IGZpbmRGaXJzdEdyYW1tYXJE
ZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50IGJhZEdyYW1tYXJQaHJhc2VM
b2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNv
bnN0OworICAgIGludCBmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFy
RGV0YWlsPiYsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hhcmFj
dGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBtYXJr
QWxsKSBjb25zdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IGJhMWI3MjBhZWYwMzQ4YmZhOWZlZGQ3ZDNkNjY3MDI4NDA0MDY3YjUuLjli
N2ExMThiMDUxNTliYmZlZDZjZGZjODk3MjIxZTNjMWUwMDZlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIzNTEsMTIgKzIzNTEsNiBAQCBDaGFyYWN0ZXJD
b3VudCBjaGFyYWN0ZXJDb3VudChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLVJlZjxSYW5nZT4gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZzZXQs
IGludCBjaGFyYWN0ZXJDb3VudCkKLXsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBlbnRpcmVSYW5n
ZUl0ZXJhdG9yKGVudGlyZVJhbmdlKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50
aXJlUmFuZ2Uub3duZXJEb2N1bWVudCgpLCBlbnRpcmVSYW5nZUl0ZXJhdG9yLCBjaGFyYWN0ZXJP
ZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGlzSW5zaWRl
UmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiB7CiAgICAgQVNTRVJUKCFp
dGVyYXRvci5hdEVuZCgpKTsKQEAgLTIzNjUsODUgKzIzNTksNjQgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KFRleHRJdGVyYXRvciYgaXRlcmF0b3IpCiAgICAg
cmV0dXJuIG5vZGUgJiYgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChub2RlLT5yZW5kZXJlcigp
KTsKIH0KIAotUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdl
TGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK0JvdW5kYXJ5UG9pbnQgcmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVy
Q291bnQgbG9jYXRpb24sIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogewotICAgIFJl
ZjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwot
Ci0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5kID0gcmFuZ2VM
b2NhdGlvbiArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5kID0gZmFsc2U7
Ci0KLSAgICBSZWY8UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2NvcGUp
OworICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIHsgbG9jYXRpb24sIDAg
fSwgYmVoYXZpb3IpLnN0YXJ0OworfQogCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5n
ZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OwotICAgIAotICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUgbmVj
ZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI4OT4uCi0gICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAmJiBp
dC5hdEVuZCgpKSB7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRS
dW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiByZXN1bHRSYW5n
ZTsKLSAgICB9Citjb25zdGV4cHIgQ2hhcmFjdGVyQ291bnQgY2xhbXBlZEFkZChDaGFyYWN0ZXJD
b3VudCBhLCBDaGFyYWN0ZXJDb3VudCBiKQoreworICAgIGF1dG8gc3VtID0gYSArIGI7CisgICAg
cmV0dXJuIHN1bSA+PSBhID8gc3VtIDogc3RkOjpudW1lcmljX2xpbWl0czxDaGFyYWN0ZXJDb3Vu
dD46Om1heCgpOworfQogCi0gICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsK
LSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1
blJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpOworU2ltcGxlUmFuZ2UgcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2Ug
cmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQoreworICAgIGF1dG8gcmVzdWx0
UmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHJhbmdlLmxvY2F0aW9uID8gc2NvcGUuZW5kIDogc2NvcGUu
c3RhcnQsIChyYW5nZS5sb2NhdGlvbiB8fCByYW5nZS5sZW5ndGgpID8gc2NvcGUuZW5kIDogc2Nv
cGUuc3RhcnQgfTsKKyAgICBhdXRvIHJhbmdlRW5kID0gY2xhbXBlZEFkZChyYW5nZS5sb2NhdGlv
biwgcmFuZ2UubGVuZ3RoKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiA9IDA7CisgICAg
Zm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFk
dmFuY2UoKSkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7
CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQucmFuZ2UoKTsKIAotICAgICAgICBib29s
IGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxv
Y2F0aW9uIDw9IGRvY1RleHRQb3NpdGlvbiArIGxlbmd0aDsKLSAgICAgICAgYm9vbCBmb3VuZEVu
ZCA9IHJhbmdlRW5kID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9z
aXRpb24gKyBsZW5ndGg7CisgICAgICAgIGF1dG8gZm91bmQgPSBbJl0gKENoYXJhY3RlckNvdW50
IHRhcmdldExvY2F0aW9uKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2Nh
dGlvbiA+PSBsb2NhdGlvbiAmJiB0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGxlbmd0aDsK
KyAgICAgICAgfTsKKyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRp
b24pOworICAgICAgICBib29sIGZvdW5kRW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAg
IGlmIChmb3VuZEVuZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJv
dW5kIGZvciB0aGUgZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdy
b25nCi0gICAgICAgICAgICAvLyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUg
cmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQg
dGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0
ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBs
YWNlZCBlbGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5n
IHRoaXMgd2l0aCBUZXh0SXRlcmF0b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29u
ZGl0aW9uYWxseSB0byBoZWxwIHVzIGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUu
CiAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8
IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZh
bmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAg
ICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9z
aXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAg
ICAgICAgICAgICAgUG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5u
ZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5p
c05vdE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5k
KCpydW5FbmQuY29udGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVy
Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAg
ICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRh
cnlQb2ludChWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRS
dW5SYW5nZS5zdGFydCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAg
ICAgICAgICBzdGFydFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5S
YW5nZS0+c3RhcnRDb250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAg
ICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigp
LCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRp
b24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3Rh
cnQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQo
KSk7CisgICAgICAgIGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExv
Y2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0
UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJn
ZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFy
dC5jb250YWluZXIuZ2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2Nh
dGlvbjsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFp
bmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5z
dGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5k
U3RhcnQpCisgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxv
Y2F0aW9uKTsKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1
blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAg
IGludCBvZmZzZXQgPSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAg
ICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zm
c2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5n
ZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAg
ICAgbG9jYXRpb24gKz0gbGVuZ3RoOwogICAgIH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VG
b3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3Ro
ICYmIHJhbmdlRW5kID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91
bmRzCi0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWlu
ZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3Vs
dFJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAwOTE0
ZjdiY2E2MTUwOWZiNWMzZGVlYWM5ZDM4Y2U0ZDRjMzg5NjRiLi5mNGU0MDhhMjFhNTU2YTU4Yjg0
MjM4YjhlMzJjMTAxYTczNmZkNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0
ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91
dFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCkBAIC0xMDMsOSArMTA0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRl
cihidWlsZGVyKTsgfQogCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gU2ltcGxlUmFuZ2Us
IENoYXJhY3RlclJhbmdlLCBhbmQgQ2hhcmFjdGVyQ291bnQgYW5kIG1vdmUgb3V0IG9mIHRoaXMg
Y2xhc3MgdG8gdGhlIHRvcCBsZXZlbCAoYm90dG9tIG9mIHRoaXMgZmlsZSkuCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
Q29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgs
IGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29w
ZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJh
bmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgaW5pdCgpOwpAQCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9kaWRMb29rQWhlYWQgeyB0cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJDb3VudCA9
IHN0ZDo6c2l6ZV90OwotCi1zdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJhY3RlckNv
dW50IGxvY2F0aW9uIHsgMCB9OwotICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAgfTsKLX07
CiAKIFdFQkNPUkVfRVhQT1JUIENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNp
bXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVo
YXZpb3IpOworV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9j
YXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgU2lt
cGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFj
dGVyUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFmMzhjNWIx
ZmJhNGUwODRhYjdjYTYuLmUyZjhmNTdiMzk1NTE3N2JjZGVmNzNhYTQyYjczNzhjOGFjOTMwMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAg
LTk3LDcgKzk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0
ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJhbmdlIHJl
c3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAgICAgICBp
ZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhpdExv
Y2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNv
bnRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OwotICAgICAg
ICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJh
bmdlLCByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQu
bGVuZ3RoKTsKKyAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmNvbnRleHRSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShy
ZXN1bHRSYW5nZUluQ29udGV4dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNTA4LDkgKzUwOCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RD
b250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAg
ICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxS
YW5nZT4gY3VycmVudFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwog
ICAgICAgICBDRkluZGV4IGZyYWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5k
ZXg7Ci0gICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5k
ZXgpCi0gICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJy
YW5nZSgqY3VycmVudFJhbmdlLCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5l
bmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7Cisg
ICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsK
KyAgICAgICAgICAgIENoYXJhY3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBm
cmFnbWVudFJhbmdlLmxvY2F0aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAg
ICAgICBmcmFnbWVudFJhbmdlLmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5
UmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNy
ZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21l
bnRSYW5nZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5n
ZS5zdGFydC5vZmZzZXQpCiAgICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1
cnJlbnRSYW5nZSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5MmMyNGU1
MTc4OTA0N2NlZjYyNjNmYTUwOS4uNmJjNWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4OGE0ZTEy
NjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5
TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxv
b2t1cC5tbQpAQCAtMjg3LDEwICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5T
RGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogCiAg
ICAgUmVmUHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBo
U3RhcnQsIHBhcmFncmFwaEVuZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQo
ZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0g
YWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNl
bGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0g
aXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0g
YWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNl
bGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAotICAgIHJl
dHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxp
Z2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJl
dHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmlsIH07CiAK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0zNTgsMTMgKzM1NywxMiBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3Vw
OjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRS
VlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFu
Z2VzOkBbW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRh
dGVTZWxlY3Rpb246bmlsXTsKIAogICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpm
dWxsQ2hhcmFjdGVyUmFuZ2UpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5T
KFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRS
YW5nZTpzZWxlY3RlZFJhbmdlXSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0u
Z2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CisgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IG1ha2VDaGFy
YWN0ZXJSYW5nZShhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0
ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCkuaGlnaGxpZ2h0UmFu
Z2UpOwogCi0gICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwg
IWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWhpZ2hsaWdodFJhbmdlIHx8ICFoaWdo
bGlnaHRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAg
ICAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFu
Z2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwg
fTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpm
dWxsQ2hhcmFjdGVyUmFuZ2UsICpoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKICAgICAKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAppbmRleCBhMmI4MTgyODc3YjI4YWYy
OWM4YTA2Mzk1NGQzNzRjZDVhYTVhNWRhLi5kM2NmMDZjOTNkMTlkODVlZTUxNDVkMDJhMTJkNTJi
ODNiYzdhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmNwcApAQCAtNzIsMTEgKzcyLDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0TGVuZ3RoKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9m
ZnNldCk7Ci0gICAgaWYgKCFyZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRSYW5nZSwg
bV9tZXRhZGF0YSk7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNldCAtIHJl
c3VsdExlbmd0aCwgZW5kT2Zmc2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERp
Y3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVlMThlMDE3NzllYzYxMTQ3
NDMxYzc5NWUzOGE1OGUuLjY1ZDVkZDU2MmU5MzcwY2ViZmNlNTNjMzIyNWUyNzM1YzU1YjVmM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBM
ZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1
cExlZ2FjeS5tbQpAQCAtMTQyLDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+
LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQK
IAogICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7
ICpmdWxsQ2hhcmFjdGVyU3RhcnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0pLCAwKTsKICAgICBOU0Rp
Y3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgTlNSYW5nZSBleHRyYWN0ZWRSYW5nZSA9IHRv
a2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNz
LCAmb3B0aW9ucyk7CisgICAgYXV0byBleHRyYWN0ZWRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5n
ZSh0b2tlblJhbmdlKHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRv
UGFzcywgJm9wdGlvbnMpKTsKIAogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJldHVybnMg
e05TTm90Rm91bmQsIDB9IGlmIGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJp
bmcuCiAgICAgLy8gRklYTUUgKDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZv
ciB6ZXJvIGxlbmd0aCBoZXJlLgotICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kIHx8ICFleHRyYWN0ZWRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFleHRyYWN0ZWRS
YW5nZSB8fCAhZXh0cmFjdGVkUmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0
ciwgbmlsIH07CiAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hh
cmFjdGVyUmFuZ2UsIGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5nZS5sZW5n
dGgpLCBvcHRpb25zIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFy
YWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqZXh0cmFjdGVkUmFuZ2UpKSwgb3B0aW9u
cyB9OwogfQogCiBzdGF0aWMgdm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMoUERGU2Vs
ZWN0aW9uICpzZWxlY3Rpb24sIE5TSW50ZWdlciBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCwg
TlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRCZWZvcmVTdGFydCwgTlNJbnRlZ2VyJiBjaGFyYWN0
ZXJzQWRkZWRBZnRlckVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNiMzA3MWJjNDMyOGU0ZWUz
ZDQ1YzNmMmMzYWJkMmI1YmYxYWMwOTcuLjlmMGE0MDZkZTQxNDkxODNmODUxMTYxMjRiM2VkNWMx
OWIxZWYyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODAzLDggKzgwMyw3IEBAIHVuc2lnbmVk
IFBhZ2U6OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25z
IG9wdGlvbnMsIHVuc2lnCiAKIHN0cnVjdCBGaW5kUmVwbGFjZW1lbnRSYW5nZSB7CiAgICAgUmVm
UHRyPENvbnRhaW5lck5vZGU+IHJvb3Q7Ci0gICAgc2l6ZV90IGxvY2F0aW9uIHsgbm90Rm91bmQg
fTsKLSAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwog
fTsKIAogc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8
RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRU
ZXh0KQpAQCAtODE2LDEwICs4MTUsMTAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdl
JiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJhbmdlcyBh
cmUgc29ydGVkIGJ5IHRoZWlyIGVuZCBvZmZzZXRzLCBwZXIgZWRpdGluZyBjb250YWluZXIuCi0g
ICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxl
bmd0aDsKKyAgICAgICAgYXV0byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLnJhbmdlLmxvY2F0
aW9uICsgcmFuZ2UucmFuZ2UubGVuZ3RoOwogICAgICAgICBhdXRvIGluc2VydGlvbkluZGV4ID0g
cmFuZ2VMaXN0LnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VMaXN0
LnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZUxpc3QucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0g
ICAgICAgICAgICBhdXRvIGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3It
PmxvY2F0aW9uICsgaXRlcmF0b3ItPmxlbmd0aDsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+cmFuZ2UubG9jYXRpb24gKyBpdGVyYXRv
ci0+cmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgaWYgKGVuZE9mZnNldEZvclJhbmdlID49IGVu
ZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaW5zZXJ0aW9uSW5kZXgtLTsKQEAgLTg2MiwxMSArODYxLDExIEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVu
dFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggcmFu
Z2VzIHdoZW4gcmVwbGFjaW5nIHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVwbGFjZW1l
bnRzIGRvbid0IGNsb2JiZXIgcmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAgICAgICBh
dXRvJiByYW5nZXMgPSByYW5nZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIpLT52YWx1
ZTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBpdGVyYXRv
ciAhPSByYW5nZXMucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIuZ2V0
KCksIGl0ZXJhdG9yLT5sb2NhdGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7Ci0gICAgICAgICAgICBp
ZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpj
b250YWluZXIpLCBpdGVyYXRvci0+cmFuZ2UpOworICAgICAgICAgICAgaWYgKHJhbmdlLmNvbGxh
cHNlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJhbmdlKS5wdHIo
KSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwog
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBs
YWNlbWVudFRleHQsIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFy
dFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC04OTgsNyArODk3LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dp
dGhUZXh0KGNvbnN0IFZlY3RvcjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgICAg
ICBpZiAocmVwbGFjZW1lbnRMb2NhdGlvbiA9PSBub3RGb3VuZCB8fCAhcmVwbGFjZW1lbnRMZW5n
dGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5h
cHBlbmQoeyBXVEZNb3ZlKGhpZ2hlc3RSb290KSwgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFj
ZW1lbnRMZW5ndGggfSk7CisgICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdURk1v
dmUoaGlnaGVzdFJvb3QpLCB7IHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3Ro
IH0gfSk7CiAgICAgfQogCiAgICAgcmVwbGFjZVJhbmdlcygqdGhpcywgcmVwbGFjZW1lbnRSYW5n
ZXMsIHJlcGxhY2VtZW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAppbmRleCBkMGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0NzdkZWIz
Li5kMjQ1Y2NkOWVjOTEyMDJlYzNkMGY0OWVkNTU0YzMwNTBlZTk3Y2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEwICszMSw5IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NjMsMTYgKzYyLDE0IEBAIGVudW0gVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgewogfTsKIAogc3Ry
dWN0IEdyYW1tYXJEZXRhaWwgewotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3RoOwor
ICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAg
ICAgU3RyaW5nIHVzZXJEZXNjcmlwdGlvbjsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1
bHQgewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAg
aW50IGxlbmd0aDsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8R3JhbW1h
ckRldGFpbD4gZGV0YWlsczsKICAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGFmMjdiOTlmMzg3YzEyOGFmZmI0MzY5YWI0ZWMz
YTljMGJmZmMyOTguLjEzNGVhMzFmY2U4Zjk4ODkxMTJjYzE0YzA3ZmQxNzRkYmU1YmNlNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIwNDQsOSArMjA0NCw5IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdl
TGVuZ3RoKQorUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5n
ZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCgmc2NvcGUsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4g
Y3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoc2NvcGUpLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0K
IAogdW5zaWduZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwg
Y29uc3QgUmFuZ2UmIHJhbmdlKQpAQCAtMjA3NSw5ICsyMDc1LDkgQEAgU3RyaW5nIEludGVybmFs
czo6cmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFu
Z2UpCiAgICAgcmV0dXJuIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVz
dGluZyhyYW5nZSk7CiB9CiAKLVJlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5nZSYg
cmFuZ2UsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitSZWY8UmFuZ2U+IElu
dGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1
bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5n
ZShyYW5nZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVM
aXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHJhbmdlTG9jYXRpb24sIHJh
bmdlTGVuZ3RoIH0pKTsKIH0KIAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlT2ZTdHJp
bmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkKQEAgLTI0MzIsOCArMjQzMiw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwg
dW5zaWduZWQgbG9jYXRpCiAKICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6Tm9uZTsKLSAgICByZXN1bHQubG9jYXRpb24g
PSBsb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gbGVuZ3RoOworICAgIHJlc3VsdC5yYW5n
ZSA9IHsgbG9jYXRpb24sIGxlbmd0aCB9OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IGNhbmRp
ZGF0ZTsKICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFuZGxlQWNj
ZXB0ZWRDYW5kaWRhdGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IGUyMzUyMzQxZGI4YzE1ZDQyOWY5Y2VmZDI4OWRmNTIyNzBlNWFjN2MuLmNmNzllNTBjN2I4
NDczZjZmZTI1MmY4Y2M3Njg1OWM2ZjkxNTcxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtMjk1LDEyICsyOTUsMTIgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gaW52YWxpZGF0ZUNvbnRyb2xUaW50cygpOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGlu
dCByYW5nZUxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChFbGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFu
Z2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3Bl
LCBjb25zdCBSYW5nZSYpOwogICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50JiBz
Y29wZSwgY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2Um
KTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25z
dCBSYW5nZSYpOwotICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFuZ2VMb2Nh
dGlvbiwgaW50IHJhbmdlTGVuZ3RoKTsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwg
dW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24o
aW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRp
b24oY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNjJmYWY0OTQ2ZWFhZGQ5ODBlNTc4OWExOGJiZGVj
NTU4M2Y2MzIzLi4zNzU3OTA3NzA0ZjkzMTNlNjg0MTRjMDA1NTkxNzQxZTQ2YTI1ZGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMjUsMTIgKzMyNSwxMiBAQCBlbnVt
IENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzY3Jv
bGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywg
bG9uZyBoKTsKIAotICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50
IHNjb3BlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOworICAgIFJhbmdl
PyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25lZCBsb25n
IHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVk
IGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAg
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdl
KTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIERPTVN0cmlu
ZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlKTsKLSAg
ICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJh
bmdlTGVuZ3RoKTsKKyAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWduZWQgbG9u
ZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxv
bmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihSYW5n
ZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKaW5kZXggYjg5OTMzZmZhMWJmMjg0M2MyNmZkYmQ2NmQy
OTI2ZWQwMGM1ZjZhMS4uNzZlZjQ3MjJkNzUxY2Y2ZTU5YWFiOWVkZmFiNjY1NmU3MDRmMTZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0zMyw0MiArMzMsMzIgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1Jh
bmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
YW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykK
K1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZy
YW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbyBiYXNlKQogewotICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBub3RG
b3VuZCk7CisgICAgQVNTRVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7Cisg
ICAgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24s
IGVkaXRpbmdSYW5nZS5sZW5ndGggfTsKIAotICAgIC8vIFNhbml0aXplIHRoZSBpbnB1dCwgYmVj
YXVzZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHRha2VzIHNpZ25l
ZCBpbnRlZ2Vycy4KLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpbnQgbGVuZ3RoOwotICAgIGlmIChyYW5nZS5sZW5ndGggPD0g
SU5UX01BWCAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYKQotICAg
ICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxlbmd0aCk7Ci0gICAgZWxzZQot
ICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gcmFuZ2UubG9jYXRpb247Ci0KLSAgICBpZiAoZWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFi
bGVSb290KSB7CisgICAgaWYgKGJhc2UgPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0
YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0
aGlzIGNvZGUgcGF0aCBpcyBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgICAgIC8v
IGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24uCiAg
ICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0
ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdAogICAgICAgICAvLyBkaXJlY3RseSBp
biB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIg
c29sdXRpb24gaXMKICAgICAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQg
b2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgICAgICAv
LyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVu
dCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICAgICAg
YXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2Up
KTsKICAgICB9CiAKLSAgICBBU1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKLQotICAgIGF1dG8mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGlmICghc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChiYXNl
ID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKIAotICAgIGF1dG8gcGFy
YWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlv
bi52aXNpYmxlU3RhcnQoKSkpOworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRh
cnlQb2ludChzdGFydE9mUGFyYWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVy
LT50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4
ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhT
dGFydCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyByYW5nZS5sb2Nh
dGlvbiwgbGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2Rl
KCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFy
YWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkg
fSwgcmFuZ2UpKTsKIH0KIAogRWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0aW5nUmFuZ2UuaAppbmRleCA5NDczOGI3Zjg4ZTllMDU4ZGEyZWQyNTRhMTYwNDRlYmM2
YjkzMDY5Li5lMDQzZjk3MjQwZTQyNWVjZDI1YTQyN2VkZDkyN2FjYjc0NWUzNjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNzIEVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA6IHVpbnQ4X3QgewogICAgIFBhcmFncmFwaCwKIH07CiAK
Ky8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgd2l0aCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4uCiBz
dHJ1Y3QgRWRpdGluZ1JhbmdlIHsKICAgICBFZGl0aW5nUmFuZ2UoKQogICAgICAgICA6IGxvY2F0
aW9uKG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggYjMwN2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFhOTE4MC4u
ZmFiNDg0ZGVhYTE4MmI0NmI1ZGYzYmE5ZDRhYTZkM2NiZDBjY2U5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTgsNiArMTE4LDgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29uc3RyYWludHMuaD4KICNlbmRpZgogCisvLyBG
SVhNRTogU2VlbXMgbGlrZSB3ZSBjb3VsZCB1c2Ugc3RkOjp0dXBsZSB0byBjdXQgZG93biB0aGUg
Y29kZSBiZWxvdyBhIGxvdCEKKwogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0yNTAsNiArMjUyLDI3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDYWNoZVF1ZXJ5T3B0aW9ucz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDYWNoZVF1ZXJ5T3B0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxDaGFyYWN0ZXJSYW5nZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDaGFy
YWN0ZXJSYW5nZSYgcmFuZ2UpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmFuZ2UubG9jYXRpb24pOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJhbmdlLmxlbmd0aCk7Cit9CisKK09wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENv
ZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOworICAgIGRlY29kZXIgPj4gbG9jYXRpb247CisgICAg
aWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICps
b2NhdGlvbiwgKmxlbmd0aCB9IH07Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVu
Z2luZTo6Q2FjaGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8mIGluZm8pCiB7CiAgICAgZW5jb2RlciA8PCBpbmZvLmlkZW50aWZp
ZXI7CkBAIC0yMDUzLDIyICsyMDc2LDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFX
aXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpCiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkKIHsKLSAgICBlbmNvZGVyIDw8IGRldGFpbC5s
b2NhdGlvbjsKLSAgICBlbmNvZGVyIDw8IGRldGFpbC5sZW5ndGg7CisgICAgZW5jb2RlciA8PCBk
ZXRhaWwucmFuZ2U7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwuZ3Vlc3NlczsKICAgICBlbmNvZGVy
IDw8IGRldGFpbC51c2VyRGVzY3JpcHRpb247CiB9CiAKIE9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+
IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPGludD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsK
LSAgICBpZiAoIWxvY2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8aW50PiBsZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFs
ZW5ndGgpCisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIg
Pj4gcmFuZ2U7CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwpAQCAtMjA4MSw3ICsyMDk4
LDcgQEAgT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWls
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1c2VyRGVzY3JpcHRpb24pCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqbG9j
YXRpb24pLCBXVEZNb3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpndWVzc2VzKSwgV1RGTW92ZSgqdXNl
ckRlc2NyaXB0aW9uKSB9fTsKKyAgICByZXR1cm4geyB7ICpyYW5nZSwgV1RGTW92ZSgqZ3Vlc3Nl
cyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVGV4dENoZWNraW5nUmVxdWVzdERhdGEmIHJlcXVlc3QpCkBAIC0yMTE3LDggKzIxMzQsNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVGV4dENoZWNraQogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2lu
Z1Jlc3VsdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzdWx0LnR5cGUpOwotICAg
IGVuY29kZXIgPDwgcmVzdWx0LmxvY2F0aW9uOwotICAgIGVuY29kZXIgPDwgcmVzdWx0Lmxlbmd0
aDsKKyAgICBlbmNvZGVyIDw8IHJlc3VsdC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5k
ZXRhaWxzOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LnJlcGxhY2VtZW50OwogfQpAQCAtMjEyOSwx
NCArMjE0NSw5IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBP
cHRpb25hbDxpbnQ+IGxvY2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYg
KCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PGludD4gbGVuZ3RoOwotICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQor
ICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdl
OworICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRldGFpbHM7CkBAIC0yMTQ5LDcgKzIxNjAs
NyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNr
aW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKHR5cGUpLCBX
VEZNb3ZlKCpsb2NhdGlvbiksIFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmRldGFpbHMpLCBX
VEZNb3ZlKCpyZXBsYWNlbWVudCkgfX07CisgICAgcmV0dXJuIHsgeyB0eXBlLCAqcmFuZ2UsIFdU
Rk1vdmUoKmRldGFpbHMpLCBXVEZNb3ZlKCpyZXBsYWNlbWVudCkgfSB9OwogfQogCiB2b2lkIEFy
Z3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4ZjQ4NzYwZGY2ZGRhYzBkYzRkNWNlZjE3
M2VhNGEyMTZlODRmMDE3Li4xYWJiNDE2YzE0YmJkNGFlNWI5Yzk3ODhiN2MwMWEwYjViNjI3ZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY5LDYgKzY5LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CisKIGNsYXNzIEFic29sdXRlUG9zaXRpb25Db25zdHJhaW50czsKIGNsYXNzIEFm
ZmluZVRyYW5zZm9ybTsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAtMTE2LDYg
KzExNyw3IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hl
ZXQ7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKK3N0cnVjdCBDaGFyYWN0ZXJSYW5nZTsK
IHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2
ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwpAQCAtMTQyLDcgKzE0NCw3IEBAIHN0cnVj
dCBWZWxvY2l0eURhdGE7CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogc3RydWN0IFdpbmRv
d0ZlYXR1cmVzOwogICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7Cit0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwogdXNpbmcgRmxvYXRCb3hFeHRlbnQg
PSBSZWN0RWRnZXM8ZmxvYXQ+OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMTYsNiArMjE4
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNh
Y2hlUXVlcnlPcHRpb25zJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZSYpOworICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mbz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwZmQyZTU2Mjg5NWIz
MTYzZWY2ZTc5NmI4M2RhMGZlNTYyNDE4YzFlLi4yOWJkMThmN2RhMzIyMGYxOTE2YzFhNzY2OGI1
YTNkZWE0YzE0OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtMzM2NiwxMiArMzM2Niw5IEBAIHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRDaGVja2luZ1R5CiAK
IHN0YXRpYyBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJv
bU5TVGV4dENoZWNraW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsK
LSAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW25zUmVzdWx0IHJhbmdlXTsKLQogICAgIFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4
dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24g
PSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQu
cmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3Ry
aW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkdyYW1tYXJEZXRhaWwuY3BwCmluZGV4IDZlZTQ0MWIxMWEyMzkwNWUzM2MzOWQ4YTllMDBkMzk3
Zjk2ZjUyYjEuLjA2ZDVjZWNjNGU4NTBhNTJiNGM3OTRjZTIxNjA1NjU0MGY5NTBlZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCkBAIC00NCw4ICs0
NCw4IEBAIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUoY29u
c3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhCiAKIFdlYkdyYW1tYXJEZXRhaWw6OldlYkdy
YW1tYXJEZXRhaWwoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2Vz
LCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBtX2dyYW1tYXJEZXRhaWwu
bG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoID0gbGVuZ3Ro
OworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIG1f
Z3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggPSBsZW5ndGg7CiAKICAgICBzaXplX3QgbnVtR3Vl
c3NlcyA9IGd1ZXNzZXMtPnNpemUoKTsKICAgICBtX2dyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5yZXNl
cnZlQ2FwYWNpdHkobnVtR3Vlc3Nlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFt
bWFyRGV0YWlsLmgKaW5kZXggYzliNzU1M2NkN2IwOGVlYWM3ZDgyMzM4YjExMGY0YWVkZDllZjZh
Yy4uMzkwYjRhNWY3YjllYWM2MzFmZDczMjQxNjU3ZTIyMWRhNWMxOTVkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtNDIsOCArNDIsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoaW50IGxvY2F0aW9u
LCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNj
cmlwdGlvbik7CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogCi0gICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uOyB9Ci0gICAgaW50IGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sZW5ndGg7IH0KKyAgICBpbnQgbG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb247IH0KKyAgICBpbnQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aDsgfQog
ICAgIFJlZjxBUEk6OkFycmF5PiBndWVzc2VzKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1
c2VyRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwudXNlckRlc2Ny
aXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0
Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJH
dGsuY3BwCmluZGV4IDQxMDhmYWQ2ZDI2NjU3ZWFkZTkwODZjMTZjZmRmMjE4MTA3Y2NiMjUuLjFk
YTkwZWVjNGRiNzBiNTEwYTEzZWFhN2RlM2U1MDViZmQ1ZjQzMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcApAQCAtMjY5LDggKzI2OSw4IEBA
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFn
cmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IG1p
c3NwZWxsaW5nUmVzdWx0OwogICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LmxvY2F0aW9u
ID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKLSAgICAgICAgbWlzc3BlbGxpbmdSZXN1
bHQubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0
LnJhbmdlLmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAg
bWlzc3BlbGxpbmdSZXN1bHQucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CiAgICAg
ICAgIHBhcmFncmFwaENoZWNraW5nUmVzdWx0LmFwcGVuZChtaXNzcGVsbGluZ1Jlc3VsdCk7CiAg
ICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGg7
CiAgICAgICAgIC8vIEdlbmVyYWxseSwgd2UgZW5kIHVwIGNoZWNraW5nIGF0IHRoZSB3b3JkIHNl
cGFyYXRvciwgbW92ZSB0byB0aGUgYWRqYWNlbnQgd29yZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQppbmRleCA5MjAwZWI2MDhiM2ExNTFmNzZjMDg2
OGRjNDg4MzBhZmZkYzQ3MWZlLi5mNjA4YzhkYjVjNjA2NTMwY2FhNTk2ZWQ2YWI1ZTk1ZDZjZWRl
NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1t
CkBAIC0yMTIsOCArMjEyLDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNr
ZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSBtaXNzcGVsbGVk
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSBtaXNzcGVsbGVkUmFuZ2Uu
bGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKG1pc3Nw
ZWxsZWRSYW5nZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdURk1vdmUocmVzdWx0KSk7CiAK
ICAgICAgICAgb2Zmc2V0U29GYXIgPSBtaXNzcGVsbGVkUmFuZ2UubG9jYXRpb24gKyBtaXNzcGVs
bGVkUmFuZ2UubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVj
a2VyTWFjLm1tCmluZGV4IDBjYTEzM2EyYWRjZTQxYTdjZmNmM2EwZDQxNGFiNGZmYjg0ZWU2MzQu
LmFjM2JlZTAwYjE2NTkzYWNmNDU3MWVhOTljMTEwMTZjYzE0ZjQ1MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTMzNCwyMiArMzM0LDIw
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydGhvZ3JhcGh5Ok5VTEwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3b3JkQ291bnQ6TlVMTF07CiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jl
c3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFu
Z2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRD
aGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAg
ICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAg
ICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChpbmNvbWlu
Z1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGlu
Y29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBhdXRvIHJlc3VsdFJhbmdl
ID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlm
IChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlw
ZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250
YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICAgICAgVGV4dENoZWNr
aW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21p
bmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0
Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVz
dWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFu
Z2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAg
ICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0YWlscykgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAgICAgICAgICAgICAgICAg
R3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC0zNTgsOCArMzU2LDcgQEAgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1l
bnRUYWcgc3AKICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWls
UmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFp
bE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0
aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkZXRhaWwubGVu
Z3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdl
ID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAgICAgICAgICAgICAgICBk
ZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dy
YW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMg
PSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAg
ICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpAQCAtMzcwLDM2
ICszNjcsMzEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250
YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAg
ICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpE
YXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAg
ICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3Ry
aW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNr
aW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRS
YW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCBy
ZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICB9CkBAIC00NDMsMTcgKzQzNSwyMCBAQCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgog
CiB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoU3Bl
bGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFt
bWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7
ICsraSkgewotICAgICAgICBOU1N0cmluZyAqZ3Vlc3MgPSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNb
aV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOworICAgIGF1dG8gY29y
cmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBm
b3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7CisgICAgICAgIE5TU3Ry
aW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmpl
Y3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQogCi0gICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBO
U01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7
Ci0gICAgTlNTdHJpbmcgKmdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbjsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBncmFtbWFyRGV0YWls
RGljdCA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtl
eXM6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2Us
IGdyYW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVj
dGlvbnMuZ2V0KCksIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdKTsKKyAgICBOU1N0cmluZyAq
ZGVzY3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAg
IE5TRGljdGlvbmFyeSAqZGV0YWlsID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFt
bWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAgICAgTlNHcmFt
bWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucy5nZXQoKSwKKyAgICB9OwogCi0gICAgW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3Jh
bW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdC5nZXQo
KV07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxs
aW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpkZXRhaWxd
OwogfQogCiB2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZChTcGVsbERvY3VtZW50
VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcywg
Ym9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCmluZGV4IGYxOGNhYTcyY2JkOTY1MzE3NTVlOTJlY2ZiMjBlZjRk
YjhjYTUzYWYuLjcwYTM5MDM1ZDU4YzgxMmMyY2IwMTMxOWY1YTE2YzZmYTU5ZjVkMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTg3LDcgKzg3LDcgQEAg
T3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3gKICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5k
TGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdldCgpLCBzZWxlY3Rpb25Mb2NhdGlvbiwgc2Vs
ZWN0aW9uTGVuZ3RoKTsKICAgICBzZWxlY3Rpb25Mb2NhdGlvbiArPSBvZmZzZXQ7CiAKLSAgICBy
ZXR1cm4ge3sgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBz
ZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07CisgICAgcmV0
dXJuIHt7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyb290LCBzZWxlY3Rpb25Mb2NhdGlvbiwgbGVu
Z3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07CiB9CiAKIHZvaWQgVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFu
bm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCwg
dWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2ZVJl
cGxhY2VtZW50TGVuZ3RoKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5n
IGFuCiAKICAgICAgICAgICAgICAgICBzaXplX3Qgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUg
PSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9mZnNldDsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdG9yZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSA+IGxvY2F0aW9u
SW5Sb290ICsgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uICsgcmVsYXRpdmVSZXBsYWNlbWVu
dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblRvUmVzdG9yZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgc2VsZWN0aW9u
TG9jYXRpb25Ub1Jlc3RvcmUsIDApOworICAgICAgICAgICAgICAgICAgICBhdXRvIHNlbGVjdGlv
blRvUmVzdG9yZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyb290LCBzZWxlY3Rpb25Mb2NhdGlv
blRvUmVzdG9yZSwgMCk7CiAgICAgICAgICAgICAgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVU
byhzZWxlY3Rpb25Ub1Jlc3RvcmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbgogICAgIH0K
IAogICAgIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdl
Ok5TTWFrZVJhbmdlKDAsIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6
MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0tleSwgaWQ+ICph
dHRycywgTlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwgQk9PTCAqc3RvcCkgewotICAgICAgICBhdXRv
IGF0dHJpYnV0ZUNvcmVSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgocm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0
cmlidXRlUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5n
ZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1
dGVDb3JlUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBB
dHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vi
c3RyaW5nQmV0d2VlblBvc2l0aW9ucwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBhdXRvJiB0ZXh0Q2hlY2tpbmdEYXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6
OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFya2VyLT5kYXRhKCkpOwotICAgICAgICAgICAg
YXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1
cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0
KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjcmVhdGVMaXZlUmFuZ2UoY3VycmVudFRleHRSYW5nZSks
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRPZmZzZXQoKSAtIG1hcmtlci0+c3Rh
cnRPZmZzZXQoKSk7CiAKICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxvY2F0aW9uOwogICAg
ICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMmIzYTE0YjU5YTRlNzg4NDI3Y2Y5MTRiN2Iy
MzJkYTEwYzI4MDVhLi43YWIxMDZhMWI5MWQ2NjNkMDY2NmNlNTZmZGEyZDA1NGNjOTczYWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQy
MCwyMCArNTQyMCwyMyBAQCB2b2lkIFdlYlBhZ2U6OmRlbGV0ZVN1cnJvdW5kaW5nKGludDY0X3Qg
b2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudCkKICAgICBpZiAoIXRhcmdldEZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24g
PSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgYXV0byYgc2VsZWN0
aW9uID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxl
Y3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2VsZWN0aW9uU3Rh
cnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CiAgICAgYXV0byBzdXJyb3VuZGluZ1Jhbmdl
ID0gbWFrZVJhbmdlKHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3RhcnQpLCBzZWxl
Y3Rpb25TdGFydCk7Ci0gICAgYXV0byBjdXJzb3JQb3NpdGlvbiA9IFdlYkNvcmU6OmNoYXJhY3Rl
ckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKTsKLSAgICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5k
aW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBh
dXRvIHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7
Ci0gICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkKKyAgICBpZiAoIXN1cnJvdW5kaW5nUmFuZ2UpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIENoYXJhY3RlclJh
bmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uID0gV2ViQ29y
ZTo6Y2hhcmFjdGVyQ291bnQoKnN1cnJvdW5kaW5nUmFuZ2UpICsgb2Zmc2V0OworICAgIGNoYXJh
Y3RlclJhbmdlLmxlbmd0aCA9IGNoYXJhY3RlckNvdW50OworICAgIGF1dG8gc2VsZWN0aW9uUmFu
Z2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KHJvb3ROb2RlKSwgY2hhcmFjdGVyUmFuZ2UpOworCiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgdGFyZ2V0RnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpzZWxlY3Rpb25SYW5nZSwgU0VM
X0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklO
SVRZKSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFy
dERlbGV0ZShmYWxzZSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZVNlbGVj
dGlvbkNoYW5nZXMoZmFsc2UpOwogICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBhODdkYmVmNTQ3MjA3MTUxNzVjZTcyNTY0YzZhOGY1YWFjMTQxYzdiLi41ZjQ1NTZkMzRmOTc1
MzEyNDI5YTI1Y2MzM2IwODhjMzk3ODhlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDA3Niw4ICs0MDc2LDEyIEBA
IHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25E
ZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
cm9vdCwgbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCksIG5ld1NlbGVjdGlvbkxlbmd0
aC51bnNhZmVHZXQoKSkpCi0gICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgQ2hhcmFjdGVyUmFuZ2Ug
bmV3U2VsZWN0aW9uUmFuZ2U7CisgICAgbmV3U2VsZWN0aW9uUmFuZ2UubG9jYXRpb24gPSBuZXdT
ZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKTsKKyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sZW5n
dGggPSBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCk7CisKKyAgICBhdXRvIHJlc29sdmVk
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2UpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlZFJhbmdlKS5wdHIoKSwgRE9X
TlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMs
IFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTQxOTIs
MTYgKzQxOTYsMTUgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4
dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHJvb3RDb250YWluZXJOb2RlID0gcm9vdE5vZGUtPmlzQ29udGFpbmVyTm9k
ZSgpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4ocm9vdE5vZGUuZ2V0KCkpIDogcm9vdE5vZGUt
PnBhcmVudE5vZGUoKTsKICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShyb290Q29udGFpbmVyTm9kZS5nZXQoKSwgcmFuZ2VPZkludGVyZXN0LmdldCgp
LCByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiwgcmFuZ2VPZkludGVyZXN0TGVuZ3RoKTsKIAotICAg
ICAgICBDaGVja2VkU2l6ZSBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRp
b24gfTsKKyAgICAgICAgQ2hlY2tlZDxDaGFyYWN0ZXJDb3VudCwgUmVjb3JkT3ZlcmZsb3c+IG1p
ZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiB9OwogICAgICAgICBtaWRw
b2ludExvY2F0aW9uICs9IHJhbmdlT2ZJbnRlcmVzdExlbmd0aCAvIDI7CiAgICAgICAgIGlmICht
aWRwb2ludExvY2F0aW9uLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGF1dG8gbWlkcG9pbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgocm9vdENvbnRhaW5lck5vZGUuZ2V0KCksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0
KCksIDApOworICAgICAgICBhdXRvIG1pZHBvaW50ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVu
dHMoKnJvb3RDb250YWluZXJOb2RlKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNhZmVHZXQoKSkpOwog
Ci0gICAgICAgIGF1dG8gbWlkcG9pbnQgPSBtaWRwb2ludFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IHN0YXJ0T2ZXb3Jk
KG1pZHBvaW50KTsKICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlv
biA8IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0KSB7CiAgICAgICAgICAgICBzdGFydE9mUmFuZ2VPZklu
dGVyZXN0SW5TZWxlY3Rpb24gPSBlbmRPZldvcmQobWlkcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IGNhNDc5MzEwNTRiODAyNjI2ODczZTNmNTNmYjVlZTMwNTRlOTg1MTMuLjNiOTQ2MzA0
ZGZiNzUyMTE0MTNlOWY4ZDExMDdmNmY4NzY1OTlkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAg
LTg2NSwxMiArODY1LDExIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKICAgICBOU0FycmF5
ICppbmNvbWluZ1Jlc3VsdHMgPSBbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0g
Y2hlY2tTcGVsbGluZ09mU3RyaW5nOnN0cmluZy5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkuZ2V0KCldOwogICAgIGZvciAoTlNWYWx1ZSAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdS
ZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQg
cmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kICYmIHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21p
bmdSZXN1bHQucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNT
RVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CiAgICAgICAgIFRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxv
Y2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAg
ICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJh
bmdlVmFsdWUpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgIH0KIApAQCAt
OTM5LDExICs5MzgsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogICAgICAgICBHcmFtbWFy
RGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgICAgIE5TVmFsdWUgKmRldGFpbFJhbmdlQXNOU1Zh
bHVlID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyUmFuZ2VdOwogICAgICAgICBBU1NF
UlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUpOwotICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2Ug
PSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChkZXRh
aWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQoZGV0YWls
TlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGRl
dGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubGVuZ3RoID0gZGV0
YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5y
YW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoZGV0YWls
UmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKKyAgICAgICAgZ3JhbW1hckRl
dGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFu
Z2VWYWx1ZSk7CiAgICAgICAgIGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2RldGFp
bCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgTlNBcnJh
eSAqZ3Vlc3NlcyA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsK
ICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk1NywyMiArOTU0
LDIwIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmlu
Y29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gcmVzdWx0czsKIAogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5n
UmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdl
ID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJl
c3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3Vs
dFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5y
YW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9ICptYWtlQ2hhcmFj
dGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1Rl
eHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1t
YXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAg
ICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwg
ZGV0YWlsOwpAQCAtOTgxLDggKzk3Niw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAg
ICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVl
IHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1Jhbmdl
Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5T
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5T
UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFj
dGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNj
cmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2Ny
aXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0
YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAg
Zm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk5MywzNiArOTg3LDMxIEBAIHN0
YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVz
dWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tp
bmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4
dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
YW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFj
ZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAt
MTA0OSwxNiArMTAzOCwxOCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkK
IHsKLSAgICBOU011dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXldOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMu
c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1hckRldGFpbC5n
dWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBO
U011dGFibGVBcnJheSAqY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAg
IGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNT
dHJpbmcgKmd1ZXNzTlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9i
amVjdDpndWVzc05TU3RyaW5nXTsKICAgICB9Ci0gICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBO
U01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7
Ci0gICAgTlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbjsKLSAgICBOU0RpY3Rpb25hcnkqIGdyYW1tYXJEZXRhaWxEaWN0ID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0
aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0
aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLCBOU0dyYW1tYXJDb3Jy
ZWN0aW9ucywgbmlsXTsKLSAgICAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJh
c2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25O
U1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFy
eSAqZGljdGlvbmFyeSA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJE
ZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJl
Y3Rpb25zIDogY29ycmVjdGlvbnMsCisgICAgfTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdy
YW1tYXJQaHJhc2UgZGV0YWlsOmRpY3Rpb25hcnldOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3Nw
ZWxsZWRXb3JkKQpAQCAtMTE5NCw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0IGEK
ICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgewogICAg
ICAgICB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxh
Y2VtZW50Lmxlbmd0aCgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7Ci0g
ICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENh
bmRpZGF0ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAgICAgTlNSYW5n
ZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUucmFuZ2UubG9j
YXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ugc29mdFNwYWNl
UmFuZ2UgPSBOU01ha2VSYW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0gMSwgMSk7CiAg
ICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoIiAi
KSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFu
Z2U6c29mdFNwYWNlUmFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggZWQ1ZWQyMDQwMjk1NTc4ZWJlOTllYjgwNzc0MmQ3ZTA2YjA0OWUzMC4u
ZGQ4N2FkNDlhMzVhODJlMzJkZjJiY2VjZjVkZTJmZTc1ZmI2ODQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MjEsMTAgKzgyMSw5IEBAIC0g
KFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFu
Z2UKIAogLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFu
Z2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJ
c1JlbGF0aXZlVG8KIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAg
YXV0byByYW5nZSA9IFdlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5n
dGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9N
QVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247
CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVk
aXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0
IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAt
ODM2LDcgKzgzNSw3IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJh
bmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgICAgIGF1dG8qIGVs
ZW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5z
cmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgKnJh
bmdlKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKHJhbmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdl
SXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpAQCAtODQ0LDEwICs4NDMsOSBAQCAtIChSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdl
SXNSZWxhdGl2ZVRvOgogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2lu
dChzdGFydE9mUGFyYWdyYXBoKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+
Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhT
dGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpw
YXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50
cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUo
c2NvcGVFbmQpIH0sICpyYW5nZSkpOwogfQogCiAtIChET01SYW5nZSAqKV9jb252ZXJ0TlNSYW5n
ZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDVkZGYyM2VjZjNjYmE1YjliYzllYTlmMjZlZWRjZjAzNzk5
NTY4OGMuLjZmOTFlZmI5YTkwMWFlMWNjYmFlNTZjOWIyZmQ5OWMxNDA5OTUyYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTcyNzgsMTIgKzcyNzgs
OSBAQCBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5n
VHlwZShOU1RleHRDaGVja2luZ1R5cGUgdHlwZQogCiBzdGF0aWMgV2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdChOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9
IG5zUmVzdWx0LnJhbmdlOwotCiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHJlc3Vs
dDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKG5zUmVzdWx0LnJlc3Vs
dFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
IHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0g
KldlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDhkZjFjNzIxYmI2OGY2ZTAxMDE3ZTY1
NTI0YzkzYzBkZmVlMjg4NDYuLjQ2OTc5ZDcxYWZmNzUxOWFlMGE0YWVmOTIxZjlkYzllOGE1MDQx
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNzkwLDE0ICs3OTAsMTkgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9y
PEdyYW1tYXJEZXRhaWwKICAgICAgICAgaWYgKGVudW1EZXRhaWxzT2JqLT5OZXh0KDEsICZkZXRh
aWxPYmosICZmZXRjaGVkKSAhPSBTX09LKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
R3JhbW1hckRldGFpbCBkZXRhaWw7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sZW5n
dGgoJmRldGFpbC5sZW5ndGgpKSkKKyAgICAgICAgaW50IGxlbmd0aDsKKyAgICAgICAgaWYgKEZB
SUxFRChkZXRhaWxPYmotPmxlbmd0aCgmbGVuZ3RoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxvY2F0aW9uKCZkZXRhaWwubG9jYXRpb24p
KSkKKyAgICAgICAgaW50IGxvY2F0aW9uOworICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+
bG9jYXRpb24oJmxvY2F0aW9uKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQlN0
cmluZyB1c2VyRGVzYzsKICAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPnVzZXJEZXNjcmlw
dGlvbigmdXNlckRlc2MpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEdyYW1t
YXJEZXRhaWwgZGV0YWlsOworICAgICAgICBkZXRhaWwucmFuZ2UubG9jYXRpb24gPSBsb2NhdGlv
bjsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgZGV0YWls
LnVzZXJEZXNjcmlwdGlvbiA9IFN0cmluZyh1c2VyRGVzYywgU3lzU3RyaW5nTGVuKHVzZXJEZXNj
KSk7CiAKICAgICAgICAgQ09NUHRyPElFbnVtU3BlbGxpbmdHdWVzc2VzPiBlbnVtR3Vlc3Nlc09i
ajsKQEAgLTgyNiw3ICs4MzEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjbwogICAgICAgICBn
dWVzc2VzQlNUUnMuYXBwZW5kKGd1ZXNzLnJlbGVhc2UoKSk7CiAgICAgfQogICAgIEJTdHJpbmcg
dXNlckRlc2NyaXB0aW9uQlNUUihkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKLSAgICBlZC0+dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLmxv
Y2F0aW9uLCBkZXRhaWwubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVzc2VzQlNUUnMu
ZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXplKCkpOworICAgIGVkLT51cGRhdGVTcGVsbGlu
Z1VJV2l0aEdyYW1tYXJTdHJpbmcoQlN0cmluZyhzdHJpbmcpLCBkZXRhaWwucmFuZ2UubG9jYXRp
b24sIGRldGFpbC5yYW5nZS5sZW5ndGgsIHVzZXJEZXNjcmlwdGlvbkJTVFIsIGd1ZXNzZXNCU1RS
cy5kYXRhKCksIChpbnQpZ3Vlc3Nlc0JTVFJzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGd1ZXNzZXNCU1RScy5zaXplKCk7IGkrKykKICAgICAgICAgU3lzRnJlZVN0cmlu
ZyhndWVzc2VzQlNUUnNbaV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBkNzA1M2VjMzIwNGNhYWVlMGU0OWE4MWUxNWJlMTEyODM0OThjZGM0Li4xN2FlNWIwYTU2OGM2
Mzc1NTdhNDUyYzU1YWQzMzI4YjkzNzFiZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcApAQCAtNzc2MSwyMyArNzc2MSwyMSBAQCBIUkVTVUxUIFdlYlZpZXc6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZyhVSU5UIGxvY2F0aW9uLCBVSU5UIGxlbmd0aAogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSW50UmVjdCByZXN1
bHRJbnRSZWN0OwotICAgIHJlc3VsdEludFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQoMCwgMCkp
OwotICAgIHJlc3VsdEludFJlY3Quc2V0U2l6ZShJbnRTaXplKDAsIDApKTsKLSAgICAKLSAgICBp
ZiAobG9jYXRpb24gPiBJTlRfTUFYKQorICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZnJh
bWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7Cisg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGlmIChsZW5ndGgg
PiBJTlRfTUFYIHx8IGxvY2F0aW9uICsgbGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbGVuZ3Ro
ID0gSU5UX01BWCAtIGxvY2F0aW9uOwotICAgICAgICAKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZy
YW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBs
b2NhdGlvbiwgbGVuZ3RoKTsKKworICAgIENoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOwor
ICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgY2hhcmFjdGVyUmFu
Z2UubGVuZ3RoID0gbGVuZ3RoOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjcmVhdGVMaXZl
UmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cygqZWxlbWVudCksIGNoYXJhY3RlclJhbmdlKSk7CiAKICAgICBpZiAoIXJhbmdlKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwotICAgICAKKwogICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLmVkaXRv
cigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICByZXN1bHRJbnRSZWN0ID0g
ZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOworICAgIEludFJlY3QgcmVzdWx0
SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKIAogICAgIHJl
c3VsdEludFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZDBmMGFk
OTBhYzk5ZDNkMmQ2NjRiY2MxNGIxMDRjMTlhOWI1M2I4Li5iMjdjN2ExNDEyMGY5MmZkMWYyYjUx
NGU4ODRmMTI1NTA4OWU3ZjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMjAtMDMtMjIgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDIwLTAzLTI3ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNpZGV3YXlzIGppZ2dsZXMgd2hl
biBzY3JvbGxpbmcgdGhlIHNoZWx2ZXMgb24gYmV0YS5tdXNpYy5hcHBsZS5jb20KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91
dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50
eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3YjljNTg3MmVmZTFkZTcyYy4uMjM0ZDMz
OTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEs
MTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFy
a2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IG91dCBvZiBib3Vu
ZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3
aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAyXjMxCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJr
ZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNlCitQQVNTIGl0ZW0xLmlzVGV4dE1hcmtl
clZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIHRydWUKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0
LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sCmluZGV4IDBhYjJmMTc5
NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEuLjZhYzdmOWY2NzJjYjY4NTE1ZTA3YTNj
NTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2Yt
Ym91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwxMiBAQCB0ZXh0CiAKIDxzY3JpcHQ+CiAK
LSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBm
b3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3Qg
Y3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMSIpOwogCiAgICAgaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAgICAgICB2YXIgaXRlbTEgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgi
aXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5
OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaXRlbTEuaXNUZXh0TWFya2Vy
VmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsKICAgICB9CiAK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0
ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2QzY2M2NDQ5NzQzYmRiNTZlMDM5YTIuLmJi
MDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWlu
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMTcgQEAK
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2YgQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0
NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0x
MCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcy
LDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCww
Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCww
KSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCks
ICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIs
MCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQor
Zmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1
LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkK
K2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2
KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmly
c3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhv
dXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgp
CitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgp
CitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgs
NTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJz
dHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbAppbmRleCA3OTI1
OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2MGRlLi42MmNkYzliODI2Zjk2NWY4NTVk
N2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWlu
Lmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsK
LTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiA8
L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0K
IDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1NgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjEsNDAgKzE1LDQyIEBAIGJv
ZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hp
bGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9nUmVjdChjb21tZW50LCBzdGFydCwg
bGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQgKyAiOiAoIiArIHN0YXJ0ICsgIiwi
ICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICArIHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0aCkgKyAiKSIpOworICAgIH0KKwog
CWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5IHsKLQkJCiAJCQl0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDAp
KTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsgLy8gY2FyZXQgYXQg
dGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0IGNoYXJhY3Rlcgot
CQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwg
MSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDYpKTsg
Ly8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3
Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8v
IG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsgLy8gLSItCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7
IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJCXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAorCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhl
IGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNo
YXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwg
NiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAxMDApOwor
CQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNo
YXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJ
CWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxp
bmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3Qo
ImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0
aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91
dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOworCQkJbG9nUmVjdCgi
b3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJCQlsb2dSZWN0KCJv
dXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBj
YXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOwogCQl9
Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOwogCQlj
b25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwogCQlkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2UgewogCQlkb2N1bWVudC53cml0ZSgiKGNh
bm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFj
dGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRleCBhY2ZkNTJmMGI5NDhhNjUzZmMwNmYy
OGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZi
M2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rm
b3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3Rl
ZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRp
dGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4
LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIs
OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTgsNTcyLDQw
LDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBhdCB0aGUgYmVn
aW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJh
Y3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYs
MCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMTAwKSwgKDU4
LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4KQorbGFzdCBj
aGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMiksICg1
MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgsMTgpCitmaXJz
dCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcy
LDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgsMTgpCitmaXJz
dCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5NSksICgxOCw1
NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgs
NTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAo
NTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAo
NTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5
NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5o
dG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3MWNkMmZiMGRiYTYzMGYyMWUuLmU1YmYy
ODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZhOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJh
Y3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0
aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7IG1hcmdpbjogMTA7
IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMzICsxNiwzNiBAQCBib2R5IHsgbWFyZ2lu
OiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOwog
CX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3RhcnQsIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCArICIsIiArIGxlbmd0aCAr
ICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9CisKIAlpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQu
Ym9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQo
IjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8g
Y2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVu
ZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAv
LyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmly
c3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7
IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBv
ZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0i
LQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
NywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lu
bmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3Rl
ciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7
CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9n
UmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3Rl
ciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1Jl
Y3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAw
LCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0
IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0
aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2Yg
Ym91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBi
b3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9m
IGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2Yg
Ym91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAo
ZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOwogCQl9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWIzZDcw
NzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNlMC4uYzU1MzdlNDdiNmY5OTM1OGFlNTFj
ZTZkNzAwMjgxYjdhY2QwODc3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtODQ5LDcgKzg0OSwxMCBAQCB3ZWJraXQub3JnL2IvMjAzNTE3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zaXppbmcvZHluYW1pYy1h
dmFpbAogIyBTdGFsZS13aGlsZS1yZXZhbGlkYXRlIGlzIG5vdCBzdXBwb3J0ZWQgb24gV0sxCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRh
dGUgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzIwNTMxNCBbIENhdGFsaW5hIF0gZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJl
IF0KKyMgUmVzdWx0cyBhcmUgZ29vZCBvbiBDYXRhbGluYSBhbmQgbmV3ZXIuIERlbGV0ZSB0aGVz
ZSBsaW5lcyB3aGVuIHdlIHN0b3Agc3VwcG9ydGluZyB0aGVzZSBvbGRlciB2ZXJzaW9ucyBvZiBt
YWNPUy4KK1sgU2llcnJhIF0gZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2Utc3R5bGVkLmh0bWwgWyBGYWlsdXJlIF0KK1sgSGlnaFNpZXJyYSBdIGVkaXRpbmcvbWFj
L2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBd
CitbIE1vamF2ZSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdl
LXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDU0MTIgWyBNb2phdmUg
RGVidWcgXSB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxz
Lmh0bWwgWyBUaW1lb3V0IF0KIApAQCAtOTYzLDQgKzk2Niw0IEBAIHdlYmtpdC5vcmcvYi8yMDk0
OTQgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLW5vLW1vdXNlbW92ZS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwOTU2MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9zZW5kLXJlc3BvbnNlLXVwbG9hZC1ldmVudC1wcm9ncmVzcy5odG0gWyBQYXNzIENy
YXNoIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA5NjIxIGZhc3QvbG9hZGVyL2NoaWxkLWZy
YW1lLWFkZC1hZnRlci1iYWNrLWZvcndhcmQuaHRtbCBbIFBhc3MgVGltZW91dCBdClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGls
ZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjYjFl
ZjZjMzNmMWRjZjQ5NmI2ZGE3YWZlNzVhZWRkNzExYWFlOWQuLmY0MjQ0ZGJmMTM4ZmI5YzgyNDdj
MjM5MmUzNzJhODQ5YmE1NGNmY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIyMyw5ICsyMjMsOSBAQCB3ZWJraXQub3JnL2IvMTA1NjE2
IGVkaXRpbmcvbWFjL3NwZWxsaW5nL21vdmUtY3Vyc29yLXRvLWJlZ2lubmluZy1vZi1hdXRvY29y
cmVjdAogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9yZW1vdmluZy11
bmRlcmxpbmUtYWZ0ZXItYWNjZXB0aW5nLWF1dG9jb3JyZWN0aW9uLXVzaW5nLXB1bmN0dWF0aW9u
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxp
bmcvYWNjZXB0LWNhbmRpZGF0ZS1hbGxvd3MtYXV0b2NvcnJlY3Qtb24tbmV4dC13b3JkLmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNj
ZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2NlcHRhbmNlLmh0bWwgWyBGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXItaW5j
bHVkZXMtaHlwaGVuLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2
MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLWxhcmdlLWZvbnQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1oeXBoZW4uaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJr
ZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLWxhcmdlLWZvbnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGZhc3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gt
YnQtdGV4dC13aXRoLXNwZWxsaW5nLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTA1NjE2IGZhc3Qvd3JpdGluZy1tb2RlL2VuZ2xpc2gtcmwtdGV4dC13aXRo
LXNwZWxsaW5nLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKQEAgLTEwNzQsNCAr
MTA3NCw0IEBAIHdlYmtpdC5vcmcvYi8yMDk2MjQgWyBSZWxlYXNlIF0gdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvZml4ZWQvZm91ci1iYXJzLXpvb21lZC5oCiAKIHdlYmtpdC5vcmcvYi8yMDk2NzIg
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0
dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMjA5Njg4IG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci1zdXBwb3J0L3NjcnViYmVyLXN1cHBv
cnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
K3dlYmtpdC5vcmcvYi8yMDk2ODggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVy
LXN1cHBvcnQvc2NydWJiZXItc3VwcG9ydC1jbGljay5odG1sIFsgUGFzcyBDcmFzaCBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGMzNzA2YzE5NWMyNGZl
OTA2OTNhMmJhY2I4MjczYTI1Y2RmYjU2YTAuLjVlOTZiNzk5Zjk5NDIzYzAzZjExYmE4OGY0OTA1
Zjc2ZTNhNjkxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xODcyLDcgKzE4NzIsNyBAQCB3ZWJraXQub3JnL2IvMjA0ODIwIFsgQ2F0YWxpbmErIF0g
ZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci02Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogd2Via2l0Lm9y
Zy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItOC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA0ODIwIFsgQ2F0YWxpbmErIF0gZmFz
dC90ZXh0L2Vtb2ppLWdlbmRlci05Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2VsZWN0aW9uL2NvbnRleHQt
bWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIw
NDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2VsZWN0aW9uL2NvbnRleHQtbWVudS1zZWxl
Y3QtZWRpdGFiaWxpdHkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDQy
NDcgWyBDYXRhbGluYSBdIHdlYmF1ZGlvL3NpbGVuY2UtYWZ0ZXItcGxheWJhY2suaHRtbCBbIEZh
aWx1cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRjYzI2ZDRiMmQyNjRjMmVlNWMwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0
aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4g
SSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gSSA+IEIgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+
IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IEkgPiBCID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLTEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3
MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01Miw1NzIsOSwx
OAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0xMCw1NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAot
MTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAs
MCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0
cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
LTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2UwNzQwMTAxMDYwZWNjYzQ5MjA1NzQ4N2JjNmJk
ODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRmNWMzZDMyYzQxMjFlMDQyNzQ0MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0
cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBl
Y3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3RpbmcgdGV4dCB3aXRoIGJyIGVsZW1lbnRzICg8
ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwgMTAwKTogaGVsbG8KICg2LCAxKToKICg3LCAx
KToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6
CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
LTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAzOWYxNTMxM2Y0ZGM0MmExNDRlZGQ4ZWI0NWIu
Ljk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3OGYzMmJkZjVlZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJv
bS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwKQEAgLTM0LDggKzM0LDgg
QEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAgICAgICAgICAgbG9nKCIoMSwg
MTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5n
ZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDYsIDEpOiAiICsgdGV4dElu
cHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDYsIDEpLnN0cmluZygp
KTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRy
aWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEpLnN0cmluZygpKTsgLy8gc2hvdWxkIGJlIGVt
cHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5h
dHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZp
bmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIHVu
ZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xs
ZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIGVt
cHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIGVt
cHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0g
IiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0
cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhw
ZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUzZjllNTZlMTdlYTE3MzU4ZWExYzI5ZGQ2ZTYu
LjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNlMTIxZTQ2ODNiZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJv
bS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtNyw4
ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAoMTI8Yj4zPGk+NDU2PC9pPjwvYj4pCiAoMCwg
MTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAyKTogNgotKDEwMCwgMCk6IHVuZGVmaW5lZAot
KDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKTogCisoMTAwLCAxMDApOiAKIAogVGVzdGlu
ZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KQogdG90YWwgbGVuZ3RoOiAxNQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVk
LXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAppbmRleCA4NzFkYzdi
MjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODliMGMzLi5jZjZjOTExZDRiNTc1YjJmNzk2NGM3
MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzog
MCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5h
dHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAsIDEwMCkuc3RyaW5nKCkpOwogICAgICAgICAg
ICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJp
bmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMik6ICIg
KyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMiku
c3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRy
b2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJl
IHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3Vs
ZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3Vs
ZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3Vs
ZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBsb2coIlxuVGVzdGluZyBwcm9w
ZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KSIpOwogICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZuYnNwOyZuYnNwOzMgJm5ic3A7Jm5ic3A7Jm5i
c3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394859</attachid>
            <date>2020-03-28 23:15:24 -0700</date>
            <delta_ts>2020-03-28 23:23:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328231522.patch</filename>
            <type>text/plain</type>
            <size>260969</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2ZGI1NTViNWMyNjEw
MGE3OWUwZTBjNTQ1MGVjMzMwYjE5ZDI3ZC4uZGMwNGE5MjdhYTM2MjI0MGRjYzEwNTRhY2Y5YjVl
NzA5ZWFjZTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBQdXQgQ2hhcmFjdGVyUmFu
Z2UgYW5kIENoYXJhY3Rlck9mZnNldCBpbnRvIGEgaGVhZGVyLCBDaGFyYWN0ZXJSYW5nZS5oLgor
ICAgICAgICAtIFVzZSB0aGVtIGZvciBjYXNlcyBvZiBjaGFyYWN0ZXIgb2Zmc2V0cy4gQmVjYXVz
ZSB0aGlzIGNhbiBiZSBhIHNpbmdsZQorICAgICAgICAgIG9mZnNldCBpbnRvIGFuIGVudGlyZSBk
b2N1bWVudCwgdXNlIGEgNjQtYml0IGludGVnZXIgc28gd2UgZG9uJ3QgbGltaXQKKyAgICAgICAg
ICBhbiBlbnRpcmUgZG9jdW1lbnQgdG8gMl4zMiBjaGFyYWN0ZXJzOyBpbiB0aGVvcnkgdGhpcyBt
YWtlcyBpdCBzbyB3ZQorICAgICAgICAgIGNhbiBzdXBwb3J0IGEgZG9jdW1lbnQgd2l0aCB0b25z
IG9mIHRleHQgbm9kZXMgdGhhdCBhZGQgdXAgdG8gbW9yZQorICAgICAgICAgIHRoYW4gMl4zMi4K
KyAgICAgICAgLSBCZWNhdXNlIENoYXJhY3RlclJhbmdlIHVzZXMgNjQtYml0IGludGVnZXJzIHdl
IGNhbiBub3cgY29udmVydCBtb3JlCisgICAgICAgICAgZWFzaWx5IHRvIGFuZCBmcm9tIE5TUmFu
Z2UgYW5kIENGUmFuZ2Ugb24gQ29jb2EgcGxhdGZvcm1zLiBPbmUgZGlmZmVyZW5jZQorICAgICAg
ICAgIGlzIHRoYXQgQ2hhcmFjdGVyUmFuZ2UgZG9lc24ndCB1c2UgYSAibm90IGZvdW5kIiB2YWx1
ZTsgaW5zdGVhZCB3ZQorICAgICAgICAgIHVzZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gd2hl
biB3ZSBuZWVkIGEgbnVsbCB2YWx1ZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6IEFkZGVk
IENoYXJhY3RlclJhbmdlLmguCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6CisgICAgICAgIFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdGV4dE1hcmtlckZvckluZGV4Ol0pOiBEaXR0
by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6
IFRha2UgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OmFkZE1hcmtlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIpOiBEaXR0by4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5n
ZXMuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDogRXhwb3J0IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbiBzbyBpdCBjYW4gYmUgdXNlZAorICAgICAgICBvdXRzaWRlIG9mIFdlYkNvcmUu
CisKKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmFz
dElzQ2hhcmFjdGVyRGF0YSk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0aGUgTm9kZSBjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aCk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0
aGUgTm9kZSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyk6IEFkZGVkLiBBbmFsb2dvdXMgdG8gdGhlCisgICAgICAgIFJhbmdlOjpzZWxlY3RO
b2RlQ29udGVudHMgZnVuY3Rpb24uCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICBVc2UgQ2hhcmFjdGVyQ291
bnQvUmFuZ2UsIHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKiBlZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb3Jy
ZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVy
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2lu
Z1Jlc3VsdCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHcmFtbWF0aWNhbEVycm9ycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1pc3NwZWxsaW5ncyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VW
YWx1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6
cmFuZ2VMZW5ndGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1BhcmFncmFwaDo6c3VicmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCBjb25zdCk6IERpdHRvLiBBbHNvIHVz
ZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjpj
aGVja2luZ1N0YXJ0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kIGNvbnN0KTogRGl0dG8uIEFsc28gY29tcHV0ZQorICAg
ICAgICB0aGlzIGJ5IGFkZGluZyBzdGFydCBhbmQgbGVuZ3RoLCBhbmQgZG9uJ3QgY2FjaGUgaXQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3Ro
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RCYWRHcmFtbWFyIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNh
bFJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxNaXNzcGVsbGluZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLiBBbHNvIGdvdCByaWQgb2YK
KyAgICAgICAgbV9jaGVja2luZ0VuZCBzaW5jZSBpdCdzIHN1ZmZpY2llbnQgdG8gY2FjaGUgdGhl
IHN0YXJ0IGFuZCB0aGUgbGVuZ3RoLgorICAgICAgICBTaG91bGQgY29tZSBiYWNrIGxhdGVyIGFu
ZCB1c2UgQ2hhcmFjdGVyUmFuZ2UgaW5zdGVhZCBvZiAyeCBDaGFyYWN0ZXJDb3VudC4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjbGFtcGVkQWRkKTogQWRkZWQuIEhlbHBzIGltcGxlbWVudCByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UgaW4gYSB3YXkKKyAgICAgICAgdGhhdCBjYW4gd29yayB3aXRoIGFueSBjaGFyYWN0ZXIg
Y291bnQgd2l0aG91dCBjb25jZXJuIGFib3V0IG92ZXJmbG93LgorICAgICAgICAoV2ViQ29yZTo6
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKTogQWRkZWQuIFJlcGxhY2VzIGJvdGggc3VicmFuZ2UgYW5k
CisgICAgICAgIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLCB1c2luZyBhbiBhbGdvcml0aG0g
Y2xvc2UgdG8gdGhlIG9uZSBmcm9tCisgICAgICAgIHRoZSBsYXR0ZXIgZnVuY3Rpb24sIGluY2x1
ZGluZyB3b3JrYXJvdW5kcyBpdCBoYWQuIFJlcGxhY2VkIHRoZSBib29sZWFuCisgICAgICAgICJm
b3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24iIHdpdGggdGhlIFRleHRJdGVyYXRvckJlaGF2aW9yIG9w
dGlvbnMsIHdoaWNoIHNlZW1zCisgICAgICAgIHRvIG1ha2UgZ29vZCBzZW5zZSBhdCBhbGwgdGhl
IGNhbGwgc2l0ZXMuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24p
OiBBZGRlZC4gTGlrZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UsIGJ1dAorICAgICAgICBpbnN0ZWFk
IG9mIHJlc29sdmluZyBDaGFyYWN0ZXJSYW5nZSB0byBTaW1wbGVSYW5nZSwgcmVzb2x2ZXMgQ2hh
cmFjdGVyQ291bnQKKyAgICAgICAgdG8gYSBCb3VuZGFyeVBvaW50LiBNYWRlIGEgc2VwYXJhdGUg
ZnVuY3Rpb24gZm9yIHRoaXMgaW4gY2FzZSB3ZSBsYXRlciByZWZhY3RvcgorICAgICAgICBmb3Ig
ZWZmaWNpZW5jeSwgYnV0IGZvciBub3cgc2ltcGx5IGNhbGxzIHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZSB3aXRoIGEgemVybworICAgICAgICBsZW5ndGggcmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5oOiBNb3ZlZCBDaGFyYWN0ZXJDb3VudCBhbmQgQ2hhcmFnZXJSYW5nZSBp
bnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLiBSZXBsYWNlZCBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZAorICAgICAgICBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlIHdpdGggcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uIGFuZCByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAg
IChXZWJDb3JlOjpkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOiBEaXR0by4K
KyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQpOiBEaXR0
by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJh
bmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhU
ZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDogRGl0
dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzdWJyYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6IERpdHRvLgorCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDogTWFkZSBsb2NhdGlvbiBhbmQgbGVuZ3RoIHVuc2lnbmVkIHJh
dGhlciB0aGFuIHNpZ25lZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRv
LgorCiAyMDIwLTAzLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGVkaXRpbmcgY29va2llIGtleS92YWx1ZXMgZnJv
bSBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjA5Y2RlNWU5NGI3OTAwNjIzZjU0MDZhYzlkNWYwZjBm
MTEwODg0OS4uMjMyYTc3M2JhOTk4ODgzMWNlNDY0YjlkYzBhYTU4OGRkNjE1Yzk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wMy0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvRWRpdGluZ1JhbmdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RWRpdGluZ1JhbmdlOjp0b1JhbmdlKTogVXNlIENoYXJhY3RlckNvdW50L1JhbmdlLAor
ICAgICAgICByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisKKyAgICAgICAgKiBTaGFy
ZWQvRWRpdGluZ1JhbmdlLmg6IEFkZGVkIGEgRklYTUUgYWJvdXQgcmVwbGFjaW5nIHdpdGggQ2hh
cmFjdGVyUmFuZ2UuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmVuY29kZSk6
IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVj
b2RlKTogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46
OmVuY29kZSk6IFVwZGF0ZWQgdG8gdXNlIENoYXJhY3RlclJhbmdlLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUpOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6IEFkZGVkIENo
YXJhY3RlclJhbmdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdS
ZXN1bHQpOiBVc2UgQ2hhcmFjdGVyQ291bnQvUmFuZ2UsCisgICAgICAgIHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRhaWwp
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHcmFtbWFyRGV0YWlsOjpsb2NhdGlvbiBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJHcmFtbWFyRGV0YWlsOjpsZW5ndGggY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENo
ZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2Vy
Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJhbmdlQW5kT2Zm
c2V0UmVsYXRpdmVUb1NlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVk
U3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsZXRlU3Vy
cm91bmRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhE
ZWx0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dCk6IERpdHRvLgorCiAyMDIwLTAzLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGVkaXRpbmcg
Y29va2llIGtleS92YWx1ZXMgZnJvbSBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBiYmQ5ZGJjYWRkNmExYWNlNGFkODNlNDM0ZGY4ZGY1NGM3OTAxNzdmLi5lMmFlOGVm
YjQ5MWVjMWE4ZjhmNWRkZTgyOTU5NDJlYTM4ZjU5MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMjggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6IFVzZSBD
aGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jh
bmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6IERp
dHRvLgorICAgICAgICAoY29yZSk6IERpdHRvLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6IERpdHRv
LgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9j
b252ZXJ0VG9ET01SYW5nZTpyYW5nZUlzUmVsYXRpdmVUbzpdKTogRGl0dG8uCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAodGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4
dENoZWNraW5nUmVzdWx0KTogRGl0dG8uCisKIDIwMjAtMDMtMjcgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkg
c2hvdWxkIGF2b2lkIHJlYWRpbmcgVVJMIHN0cmluZ3MgZnJvbSB0aGUgcGFzdGVib2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDI3NDE5NGVhYTA3MjJiZTdlYjFhZmJmYWIxY2Uz
MWYzMTAyNDc3MmIuLjkxNDQzZWRlMWEzOGZkNDJjMTUzMzlkYWNhZTMxY2U4MGE5MWFkZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0yOCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dy
YW1tYXJPZlN0cmluZyk6IFVzZSBDaGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2
ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVz
dGluZyk6IERpdHRvLgorCiAyMDIwLTAzLTE4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgYSBwcmVmbGlnaHQgZmFpbHMgaWYgcmVzcG9uc2Ug
aGVhZGVycyBhcmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWFkNTM3ODUzMjRiYjM0
YzBkZGI5ZGNjMTE3MGM4Y2RkNGEzNjZhOC4uNzk3ZDNjMTM5NDgzM2FkODhiNzUzNGRkMjRlM2Rm
ZTY3NjE5ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00ODcsNiArNDg3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMuaAogCisgICAgZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCiAgICAgZWRp
dGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25IaWdo
bGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxpbmUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhM2M0YjRk
ZjE5NDI5Mzk0YWYzODNmZjI1MGY2MDI1OTk2Nzk0MmIuLmM1OTBlMTVlYjBmZjBkNzFjMzk2ODM0
NmM3ZTU3YjY0ZDcwNTcyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzQsNiArMjczNCw3IEBACiAJCTkzRjE5QjE3MDgy
NDVFNTkwMDFFOUFCQyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxp
YmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJH
TExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oICovOyB9
OwogCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDVCRjEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi87IH07CisJCTkzRjJDQzkzMjQy
N0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJh
Y3RlclJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2RjFFQjEyN0Y3
MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJOTNGOTI1NDMwRjdF
RjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcy
MDA4NTQwNjQgLyogSlNDb21tZW50LmggKi87IH07CkBAIC0xMDkzNCw2ICsxMDkzNSw3IEBACiAJ
CTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHTExvc2VDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRjEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4
dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29u
dGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUIxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTksNiArMjE3NjEsNyBAQAogCQkJCTkzMzA5RDhDMDk5
RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi8sCiAJCQkJRjREOTgx
N0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8sCiAJCQkJ
RjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovLAor
CQkJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovLAogCQkJ
CTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywK
IAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
ICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjk2NDIsNiArMjk2NDUsNyBAQAogCQkJCUZEMzE2MDAyMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
MDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ODMxMDc1Y2QzMTFkOTUyYzJiMTg2NTliZmUzNDg1NGVhMTdjNzViLi5kNTYyOTA5ZmZkMjFkNTg0
NmEzNzQ4YTQ3NGQ2ZTM5Y2VhOGE0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjMzOCwxMSArMjMzOCwxMCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKWxpdmVSYW5nZQogCiAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJ
TlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFuZ2Uu
bGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJ
TlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0
aW9uOwotICAgICAgICAKKwogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
d2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNlbnRy
YXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KICAgICAvLyBXZSBo
YXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUg
RE9NIGZvciB0aG9zZSBpcyBub3QKQEAgLTIzNTIsNyArMjM1MSw5IEBAIC0gKFJlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50KiBz
ZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksICpyYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5lMTNlMzNjOGZhNmQ4MmI2Zjhi
NmEyMzg0ZDk1YThiZjQ4MTgwYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQuLjM2MmQ3NDc0
MzQ5ZTRiY2Y4YjM2MzljZGY0MTJjYTc5YTNjOGIwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsKIAorc3RydWN0
IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAgICB+
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNv
bnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1h
cmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVy
cHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAgIHZvaWQgYWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOworICAgIHZvaWQg
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2VkQ29udGVudE1h
cmtlcihSYW5nZSYpOwogCkBAIC0xMDcsNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgYWRkTWFya2VyKE5vZGUmLCBjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYpOworICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcj4gTWFya2Vy
TGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8
TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOTkzZTk1MWYx
YTUwYTRkYmE5ZjkzYzFlODFmZTVlMmIxN2FlN2Y5OC4uYzI4ZTcwNmIxMDU2ZjZlYTVlOTA0OWQw
MGE0NjJjZDNhNWExMjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIyNiw3ICsyMjYsNyBA
QCBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiAv
LyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0byAibWFrZSIgaW5zdGVhZCBvZiAiY3Jl
YXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0IGFs
bG9jYXRlIGhlYXAgb2JqZWN0cy4KIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKLVBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CitXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25z
dCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBiNGZlMmI4
NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhLi5hNDMzOGFiMjBmYzUyZjJmZjI3ZGNi
NWI3MDIwOGE3ZjdiMzA2MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTUz
LDQgKzUzLDIzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3Qg
U2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9
PSBiLmVuZDsKIH0KIAorLy8gRklYTUU6IE5vZGU6OmlzQ2hhcmFjdGVyRGF0YSBzaG91bGQgdXNl
IGFuIGFsZ29yaXRobSBsaWtlIHRoaXMsIHNpbmNlIEknbSBhc3N1bWluZyBpdCdzIGZhc3RlciB0
aGFuIHRoZSBpc0NoYXJhY3RlckRhdGFOb2RlIHZpcnR1YWwgY2FsbCBpbiBtb3N0IGNhc2VzLgor
c3RhdGljIGJvb2wgZmFzdElzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKQoreworICAg
IHJldHVybiAhbm9kZS5pc0NvbnRhaW5lck5vZGUoKSAmJiAobm9kZS5pc1RleHROb2RlKCkgfHwg
bm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgTm9kZTo6bGVuZ3RoIHNpbmNlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBjYWxscyB0aGlzIGEg
bm9kZSdzIGxlbmd0aC4KK3N0YXRpYyB1bnNpZ25lZCBsZW5ndGgoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICBpZiAoZmFzdElzQ2hhcmFjdGVyRGF0YShub2RlKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PENoYXJhY3RlckRhdGE+KG5vZGUpLmxlbmd0aCgpOworICAgIHJldHVybiBub2RlLmNv
dW50Q2hpbGROb2RlcygpOworfQorCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4geyB7IG5vZGUsIDAgfSwgeyBub2Rl
LCBsZW5ndGgobm9kZSkgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4
IGFjZDk4NTVhODkxOWMzNzZlMTU3ZDFjZWQ5YzVkZWVkN2ExOTU3MjQuLjk1ODJkZjhjMzMyNmM4
OTg1NWJiOGRlYTExNDYzMzVjNDY3MTNhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC01MSw2ICs1MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgU2ltcGxlUmFuZ2UoY29u
c3QgUmVmPFJhbmdlPiYpOwogfTsKIAorV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmKTsKKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogaW5saW5lIFNpbXBsZVJhbmdl
OjpTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGViZDRj
YWIzMjZmMmMwOTc1NTQwY2IxZDZmOWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2ZGQwYjNiNzhkZGJk
MzIyYzMxMzM0ZTY4ODA2Zjk4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1OTksMTggQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2Uo
Y29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0
ZShyYW5nZS5jbG9uZVJhbmdlKCksIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKIAogICAgIC8vIFJl
Y2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZCBtb2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdp
bmFsIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlk
LiBSYWRhcjogMTAzMDUzMTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgodHJlZVNjb3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBoT2Zmc2V0SW5UcmVl
U2NvcGUsIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0aCgp
KTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQor
ICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24gPSByZXNv
bHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHRyZWVT
Y29wZVJvb3QpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSk7CisgICAgYXV0byB1cGRhdGVk
UGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBtYWtlQm91bmRhcnlQb2ludChtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGlmICghdXBkYXRlZFBh
cmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0
RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIGF1dG8gcmVwbGFjZW1l
bnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0
aXZlLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hh
cmFjdGVyQ291bnQgPSBhbHRlcm5hdGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdyYXBoU3RhcnRDb250
YWluaW5nQ29ycmVjdGlvbiwgKnVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVjdGlv
biB9LCB7IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmVMZW5ndGhBc0No
YXJhY3RlckNvdW50IH0pOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1
Y2NlZWRlZC4KLSAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpICE9IGFs
dGVybmF0aXZlKQorICAgIGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZSkgIT0gYWx0ZXJu
YXRpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVu
dFJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpOworICAgIGF1dG8mIG1hcmtlcnMgPSBy
ZXBsYWNlbWVudFJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGZvciAoYXV0
byBtYXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKICAgICAgICAgbWFya2Vycy5hZGRNYXJr
ZXIocmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBs
aWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiYjkyYzAy
MTIxYTNiN2IzOTJmNTI5ZjhhYjc2ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhhZDI1MTI5NmI0Mzky
YjZhOWJjNjdmNWViMGQ4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcApAQCAtMjgzLDEyICsyODMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgewotICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBzdGFydEluZGV4LCAwLCB0cnVl
KTsKLSAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYg
KHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCi0gICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFy
dFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAg
IH0KKyAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
c2NvcGUpLCBzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGUpLCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICB1cGRhdGVTdGFydEVuZChzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0
eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCAxNTRiYjg3YzMzMWQ0MWQ5MTYxNjJlN2Q5MTEwZDQ3ODgyN2QxYzcwLi40NmMyNTE3
MmViMmJlZGFmMjVlNzkzMjNmNWJmMzgyMzljYTEwYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQxNSw4ICsxNDE1LDggQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9
PSBkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGludCBzdGFydEluZGV4
ID0gLTE7Ci0gICAgaW50IGVuZEluZGV4ID0gLTE7CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291
bnQ+IHN0YXJ0SW5kZXg7CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IGVuZEluZGV4Owog
ICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJl
Y3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9u
KCkuaXNOb25lKCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCA9IGVu
ZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwpAQCAtMTUyOCwxNiArMTUyOCwxNSBAQCB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlmIChzdHlsZUluRW1wdHlQYXJhZ3JhcGggJiYg
c2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkKICAgICAgICAgYXBwbHlTdHlsZShzdHlsZUluRW1w
dHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmIHN0YXJ0
SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJlc2VydmVTZWxlY3Rpb24gJiYgc3RhcnRJbmRleCAm
JiBlbmRJbmRleCkgewogICAgICAgICAvLyBGcmFnbWVudCBjcmVhdGlvbiAodXNpbmcgY3JlYXRl
TWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJlZ3VsYXIKICAgICAgICAgLy8gc3BhY2VzIGluc3Rl
YWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2VzIHRoYXQgd2VyZSByZW5kZXJlZCAoMTE0NzUpLCB3
aGljaAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhl
IG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAgICAgIC8vIGluIGEgY2FsbCB0byBy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9jYXRpb24gcGFzdCB0aGUgZW5kCiAg
ICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCByZXR1cm4gbnVsbCkuCi0gICAg
ICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIHN0YXJ0SW5k
ZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlv
bkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKQot
ICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQtPnN0
YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9uKCksIERPV05TVFJFQU0sIG9yaWdpbmFs
SXNEaXJlY3Rpb25hbCkpOworICAgICAgICBhdXRvIHN0YXJ0ID0gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5kZXggKyAqc3RhcnRJbmRleCwg
VGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsK
KyAgICAgICAgYXV0byBlbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNo
YXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVS
b290KSwgZGVzdGluYXRpb25JbmRleCArICplbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKHsgc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsIH0p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggNjA0N2I5NDY0
M2UzZDVlYTU3M2FmYmRjZjY3NmIyMDExYWM4NzVmNy4uZGZiYTcyMWY1ZWFkM2EyMDNlZDZmNjRi
OWJjMDVlYWQyMzllYzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE0
LDEyICsxMTE0LDEwIEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlv
bldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpCiAKIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3Bl
KQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1ZSk7Ci0gICAgLy8gQ2hlY2sgZm9yIGFuIGludmFs
aWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBvcGVyYXRpb25zIGludmFsaWRhdGUgaW5kaWNlcyBi
ZWNhdXNlIAotICAgIC8vIG9mIHByb2JsZW1zIHdpdGggVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMuCi0gICAgaWYgKCFyYW5nZSkKKyAgICBpZiAo
IXNjb3BlKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IHJhbmdlLT5zdGFydFBv
c2l0aW9uKCkgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBpbmRleEFzQ2hhcmFjdGVyQ291bnQgPSBp
bmRleDsKKyAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNo
YXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBp
bmRleEFzQ2hhcmFjdGVyQ291bnQsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDNhYzBmYzAxMDk1MmJhYzRmMTA2ZTJi
YjlkNTBhZTc0ZWY3ZmEyNS4uYjY5NDg5Zjc2NTc1ZDVmYTI4M2JlY2FkMDRjOTEyZWVkOTBkYzk1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjIyMywxNSArMjIyMywxNSBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNo
UmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAg
PSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoKTsKICAgICAKLSAgICBpbnQgbWlzc3Bl
bGxpbmdPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IG1pc3NwZWxsaW5nT2Zmc2V0ID0g
MDsKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGdyYW1tYXJQaHJh
c2VPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAw
OwogICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdlOwogICAgIFN0cmluZyBiYWRH
cmFtbWFyUGhyYXNlOwogICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKIAogICAgIGJvb2wgaXNT
cGVsbGluZyA9IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBmb3VuZE9mZnNldCA9IDA7CiAgICAgU3RyaW5nIGZvdW5kSXRlbTsKICAgICBSZWZQdHI8
UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBpZiAodW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCgpKSB7CkBAIC0yMzA3LDEwICsyMzA3LDEwIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8g
cGFuZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBs
YXRlci4KICAgICAgICAgCiAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgp
ID4gMCk7Ci0gICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICE9IC0xICYmIGdy
YW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJh
bmdlLmxlbmd0aCA+IDApOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUUgNDg1OTE5MDogVGhp
cyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5jdHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEg
cGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpz
dWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1h
ckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOworICAgICAgICBhdXRvIGJh
ZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdl
LCB7IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBn
cmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0
aW9uKCk7CiAgICAgICAgIApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAv
LyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFy
LiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQg
c3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxh
dGVyLgogICAgICAgICAKLSAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlz
c3BlbGxlZFdvcmQubGVuZ3RoKCkpOworICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgeyBtaXNzcGVsbGluZ09m
ZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9X
TlNUUkVBTSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigp
OwogICAgICAgICAKQEAgLTI3NzMsNyArMjc3Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFu
Z2VGb3JTcGVsbENoZWNraW5nKFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiBy
CiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCBy
ZXBsYWNlbWVudCktPmFwcGx5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNr
aW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgm
IHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBj
b3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENo
ZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudCwgQ2hhcmFjdGVyQ291bnQgcmVzdWx0TG9jYXRpb24sIENoYXJh
Y3RlckNvdW50IHJlc3VsdExlbmd0aCkKIHsKICAgICBhdXRvJiBzY29wZSA9IGRvd25jYXN0PENv
bnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0Q29udGFpbmVyKCku
cm9vdE5vZGUoKSk7CiAKQEAgLTI3ODYsMTAgKzI3ODYsOSBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0
U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5n
UGFyYQogICAgIC8vIFRleHRDaGVja2luZ1BhcmFncmFwaCBtYXkgYmUgb3JwaGFuZWQgYWZ0ZXIg
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtdXRhdGVkIERPTS4KICAgICAvLyBTZWUgPHJkYXI6
Ly8xMDMwNTMxNT4sIGh0dHA6Ly93ZWJraXQub3JnL2IvODk1MjYuCiAKLSAgICBSZWZQdHI8UmFu
Z2U+IG5ld1BhcmFncmFwaFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCgmc2NvcGUsIHBhcmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBs
YWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCk7Ci0KLSAgICBhdXRvIHNwZWxsQ2hlY2tp
bmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1BhcmFncmFwaFJhbmdlLCByZXN1
bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwotICAgIHBhcmFncmFwaCA9IFRleHRD
aGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBzcGVsbENoZWNr
aW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5nZXQoKSk7CisgICAgYXV0byBu
ZXdQYXJhZ3JhcGhSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHBhcmFncmFwaExvY2F0aW9uLCBwYXJhZ3JhcGhMZW5n
dGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCB9KTsKKyAgICBhdXRvIHNw
ZWxsQ2hlY2tpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShuZXdQYXJhZ3JhcGhSYW5n
ZSwgeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgfSk7CisgICAgcGFyYWdy
YXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKGNyZWF0ZUxpdmVSYW5nZShzcGVsbENoZWNraW5n
UmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJh
bmdlKG5ld1BhcmFncmFwaFJhbmdlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFj
ZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC0yODExLDcgKzI4MTAsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFZlY3RvcjxUZQogI2VuZGlmCiAKICAgICAvLyBFeHBhbmQgdGhlIHJhbmdlIHRvIGVuY29t
cGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBjaGVja2luZyBuZWVkcyB0aGF0IG11
Y2ggY29udGV4dC4KLSAgICBpbnQgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBzZWxlY3Rpb25PZmZzZXQgPSAwOwogICAgIGJvb2wgdXNlQW1iaWd1b3VzQm91bmRhcnlP
ZmZzZXQgPSBmYWxzZTsKICAgICBib29sIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKICAgICBi
b29sIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNlOwpAQCAtMjgyMyw5ICsyODIy
LDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgIFBvc2l0aW9uIGNhcmV0
UG9zaXRpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAg
ICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gcGFyYWdyYXBoLm9mZnNldFRvKGNhcmV0UG9zaXRpb24p
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICAgICAgcmVzdG9yZVNlbGVjdGlvbkFmdGVy
Q2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChz
ZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dExlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0
Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpID09IG5ld2xpbmVDaGFyYWN0ZXIpKQorICAgICAg
ICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHBhcmFn
cmFwaC50ZXh0KCkubGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRleHQoKVtzZWxlY3Rpb25PZmZzZXQg
LSAxXSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKICAgICAgICAgICAgICAgICBhZGp1c3RTZWxlY3Rp
b25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rp
b25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dExlbmd0aCgp
ICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHRDaGFyQXQoc2Vs
ZWN0aW9uT2Zmc2V0IC0gMSkpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAg
JiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgJiYgaXNBbWJp
Z3VvdXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgudGV4dCgpW3NlbGVjdGlvbk9mZnNldCAt
IDFdKSkKICAgICAgICAgICAgICAgICB1c2VBbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yODMzLDE0ICsyODMyLDE0IEBAIHZvaWQgRWRpdG9yOjpt
YXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VmVjdG9yPFRlCiAgICAgaW50IG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPSAwOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgY29u
c3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKSAr
IG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1R5cGUg
cmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdExv
Y2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0g
ICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0aDsKLSAgICAg
ICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0gcmVzdWx0TG9jYXRpb24gKyByZXN1bHRM
ZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0aW9u
ID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5hdXRv
bWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAg
ICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFwaC5jaGVj
a2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgVGV4dENoZWNraW5n
VHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBlOworICAgICAgICBDaGFyYWN0ZXJDb3Vu
dCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVU
b1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMZW5ndGggPSByZXN1
bHRzW2ldLnJhbmdlLmxlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgcmVzdWx0RW5kTG9j
YXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVy
Q291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0b21hdGljUmVwbGFjZW1lbnRMZW5n
dGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQgPSByZXN1bHRzW2ldLnJlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBib29sIHJl
c3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0gdXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQg
JiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRFbmRMb2NhdGlvbjsKKyAgICAgICAgYm9v
bCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFtYmlndW91c0JvdW5kYXJ5T2Zm
c2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5kTG9jYXRpb247CiAKICAgICAg
ICAgLy8gT25seSBtYXJrIG1pc3NwZWxsaW5nIGlmOgogICAgICAgICAvLyAxLiBDdXJyZW50IHRl
eHQgY2hlY2tpbmcgaXNuJ3QgZG9uZSBmb3IgYXV0b2NvcnJlY3Rpb24sIGluIHdoaWNoIGNhc2Ug
c2hvdWxkTWFya1NwZWxsaW5nIGlzIGZhbHNlLgpAQCAtMjg1MCwxNiArMjg0OSwxNiBAQCB2b2lk
IEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmICFz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcKICAgICAgICAgICAgICYmIHJlc3VsdExvY2F0aW9uID49IHBhcmFncmFwaC5j
aGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0RW5kTG9jYXRpb24gPD0gc3BlbGxpbmdSYW5nZUVuZE9m
ZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkpIHsKICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwotICAgICAgICAg
ICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0
aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0g
cGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKICAg
ICAgICAgICAgIGlmICghbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5pc1NwZWxsaW5nTWFy
a2VyQWxsb3dlZChtaXNzcGVsbGluZ1JhbmdlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UsIERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgcmVwbGFjZW1lbnQpOwotICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFt
bWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3Jh
cGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyh7
IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSkpIHsKICAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDApOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBkZXRhaWwgOiByZXN1bHRzW2ldLmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoZGV0YWlsLmxlbmd0aCA+IDAgJiYgZGV0YWlsLmxvY2F0aW9uID49IDApOwotICAgICAg
ICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlv
biArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRp
b24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFT
U0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCAmJiBkZXRhaWwucmFuZ2UubG9jYXRpb24gPj0g
MCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHsg
cmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5yYW5nZS5sZW5n
dGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJh
Z3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlvbiwg
ZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRH
cmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwudXNlckRlc2NyaXB0
aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yODc3LDcgKzI4NzYs
NyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgLy8gMi4gVGhlIHJlc3Vs
dCBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3VvdXMgYm91bmRhcnkuCiAgICAgICAgICAgICAvLyAg
ICAoRklYTUU6IHRoaXMgaXMgcmVxdWlyZWQgdW50aWwgNjg1MzAyNyBpcyBmaXhlZCBhbmQgdGV4
dCBjaGVja2luZyBjYW4gZG8gdGhpcyBmb3IgdXMKICAgICAgICAgICAgIGJvb2wgZG9SZXBsYWNl
bWVudCA9IHJlcGxhY2VtZW50Lmxlbmd0aCgpID4gMCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3Vz
Qm91bmRhcnk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBy
YW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXN1
bHRMZW5ndGggfSk7CiAKICAgICAgICAgICAgIC8vIEFkZGluZyBsaW5rcyBzaG91bGQgYmUgZG9u
ZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5cGVkLgogICAgICAgICAgICAgaWYg
KHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6TGluayAmJiBzZWxlY3Rpb25PZmZzZXQg
IT0gcmVzdWx0RW5kTG9jYXRpb24gKyAxKQpAQCAtMjkyMiw3ICsyOTIxLDcgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBT
a2lwIGFsbCBvdGhlciByZXN1bHRzIGZvciB0aGUgcmVwbGFjZWQgdGV4dC4KLSAgICAgICAgICAg
ICAgICB3aGlsZSAoaSArIDEgPCByZXN1bHRzLnNpemUoKSAmJiByZXN1bHRzW2kgKyAxXS5sb2Nh
dGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0gcmVzdWx0TG9jYXRpb24pCisgICAgICAg
ICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0u
cmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50IDw9IHJlc3VsdExvY2F0aW9u
KQogICAgICAgICAgICAgICAgICAgICBpKys7CiAKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25D
aGFuZ2VkID0gdHJ1ZTsKQEAgLTI5MzEsNyArMjkzMCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5k
UmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9y
PFRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudC5s
ZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRUeXBl
ID09IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byByZXBsYWNlbWVudFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9u
LCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVwbGFj
ZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uLCByZXBsYWNl
bWVudC5sZW5ndGgoKSB9KTsKICAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRSYW5nZS5wdHIoKSk7
CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFya2VyIHNvIHRoYXQgY29ycmVjdGlv
bnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJlIHJlLWNvcnJlY3RlZC4KQEAgLTI5
NDUsOCArMjk0NCw4IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVs
bENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIFRleHRDaGVj
a2luZ1BhcmFncmFwaCBleHRlbmRlZFBhcmFncmFwaChXVEZNb3ZlKHBhcmFncmFwaCkpOwogICAg
ICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBwb3NpdGlvbiBpZiB3ZSBoYXZlIG1hZGUgYW55IHJl
cGxhY2VtZW50cwogICAgICAgICBleHRlbmRlZFBhcmFncmFwaC5leHBhbmRSYW5nZVRvTmV4dEVu
ZCgpOwotICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlICYmIHNlbGVjdGlv
bk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRlbmRlZFBhcmFncmFwaC5yYW5n
ZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZXh0ZW5kZWRQ
YXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0KTsKKyAgICAgICAgaWYgKHJlc3Rv
cmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gZXh0ZW5kZWRQYXJh
Z3JhcGgucmFuZ2VMZW5ndGgoKSkgeworICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9
IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKHsgMCwgc2VsZWN0aW9uT2Zmc2V0IH0pOwogICAg
ICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBv
c2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZv
clBhcmFncmFwaEJvdW5kYXJpZXMpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CkBAIC0yOTczLDcgKzI5NzIsOCBAQCB2b2lkIEVkaXRv
cjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZykKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6UmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5n
LCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgo
KnNlbGVjdGlvbik7CiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5n
LCBTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Oklu
c2VydCk7Ci0gICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdy
YXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkpOworICAgIENoYXJh
Y3RlckNvdW50IHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFyYWN0ZXJDb3VudCA9IHJlcGxhY2Vk
U3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJh
bmdlKHsgcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmdMZW5ndGhBc0No
YXJhY3RlckNvdW50IH0pOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1
bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLCBEb2N1bWVudE1hcmtlcjo6
UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIt
Pm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vsc2UKQEAgLTM3NzcsMTIgKzM3NzcsMTIg
QEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdl
LCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKIAogICAgICAgICBBU1NFUlQoc2Nhbm5lclBvc2l0
aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8IGxlbmd0aCk7CiAKLSAgICAgICAgdW5zaWduZWQg
c3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb247
Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlvbiAt
IHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisgICAgICAgIENoYXJhY3RlckNvdW50IHN1YnJh
bmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOworICAg
ICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24g
LSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxOwogCi0gICAgICAgIGF1dG8gc3VicmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5n
dGgpOworICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdl
LCB7IHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCB9KTsKIAotICAgICAgICBtYXJrZWRS
YW5nZXMuYXBwZW5kKHN1YnJhbmdlLnB0cigpKTsKKyAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVu
ZChjcmVhdGVMaXZlUmFuZ2Uoc3VicmFuZ2UpKTsKICAgICAgICAgcmFuZ2Uub3duZXJEb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoc3VicmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxlcGhv
bmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQb3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0
aW9uICsgMTsKQEAgLTM5OTIsMTQgKzM5OTIsMTQgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNv
bnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdAogCiBSZWZQdHI8UmFuZ2U+IEVk
aXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXN1bHQubGVuZ3RoKQorICAgIGlmICghcmVz
dWx0LnJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8
UmFuZ2U+IGNvbnRleHRSYW5nZSA9IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsK
ICAgICBpZiAoIWNvbnRleHRSYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRp
b24sIHJlc3VsdC5sZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNo
YXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5yYW5nZSkpOwogfQogCiB2b2lkIEVk
aXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggYWQ4Mjc4ODljYWI1ODVkMzAxNTk2YTYzYWJk
ZWM2ZmY0Yjc1ZTM3NC4uOTUwZTQ0NWY1YTNiMGIzNGUyOWM0MDRkZWZkYjkzNDk3ZmUyNWU5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgdm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4
dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZQogCiAgICAgICAgIFRl
eHRDaGVja2luZ1Jlc3VsdCBiYWRHcmFtbWFyOwogICAgICAgICBiYWRHcmFtbWFyLnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICBiYWRHcmFtbWFyLmxvY2F0aW9uID0g
Y2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbjsKLSAgICAgICAgYmFkR3JhbW1hci5s
ZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOworICAgICAgICBiYWRHcmFtbWFyLnJhbmdlLmxvY2F0
aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbjsKKyAgICAgICAgYmFkR3Jh
bW1hci5yYW5nZS5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOwogICAgICAgICBiYWRHcmFtbWFy
LmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1tYXJEZXRhaWxzKTsKICAgICAgICAgcmVzdWx0cy5h
cHBlbmQoYmFkR3JhbW1hcik7CiAKQEAgLTk3LDkgKzk3LDkgQEAgc3RhdGljIHZvaWQgZmluZE1p
c3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZl
Y3RvcjwKIAogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nOwogICAg
ICAgICAgICAgbWlzc3BlbGxpbmcudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwot
ICAgICAgICAgICAgbWlzc3BlbGxpbmcubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGlu
Z0xvY2F0aW9uOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubGVuZ3RoID0gbWlzc3BlbGxpbmdM
ZW5ndGg7Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRB
dXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNz
cGVsbGluZy5sb2NhdGlvbiwgbWlzc3BlbGxpbmcubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24gPSB3b3JkU3Rh
cnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFuZ2Uu
bGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBs
YWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5yYW5nZS5sb2NhdGlvbiwgbWlzc3BlbGxpbmcu
cmFuZ2UubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQobWlzc3BlbGxpbmcpOwogICAgICAgICB9CiAKQEAgLTEzOSwxNCArMTM5LDEz
IEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpleHBhbmRSYW5nZVRvTmV4dEVuZCgpCiB2
b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVz
KCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQucmVzZXQoKTsKLSAgICBtX2NoZWNraW5nRW5kLnJl
c2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0LnJlc2V0KCk7CiAgICAgbV9h
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgpOwogICAgIG1fb2Zmc2V0QXNSYW5nZSA9
IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2lu
Z1BhcmFncmFwaDo6cmFuZ2VMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBjaGFyYWN0ZXJD
b3VudChwYXJhZ3JhcGhSYW5nZSgpKTsKIH0KQEAgLTE1OCwxMiArMTU3LDEyIEBAIFJhbmdlJiBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnBhcmFncmFwaFJhbmdlKCkgY29uc3QKICAgICByZXR1cm4g
Km1fcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVJlZjxSYW5nZT4gVGV4dENoZWNraW5nUGFyYWdyYXBo
OjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0
CitSZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6c3VicmFuZ2UoQ2hhcmFjdGVyUmFu
Z2UgcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFy
YWdyYXBoUmFuZ2UoKSwgY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CisgICAgcmV0
dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UocGFyYWdyYXBoUmFuZ2Uo
KSwgcmFuZ2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKK0V4Y2VwdGlvbk9yPENo
YXJhY3RlckNvdW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIHN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9p
bnQocGFyYWdyYXBoUmFuZ2UoKS5zdGFydFBvc2l0aW9uKCkpOwogICAgIGF1dG8gZW5kID0gbWFr
ZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pOwpAQCAtMTg3LDM1ICsxODYsMzMgQEAgUmFuZ2UmIFRl
eHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0QXNSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuICpt
X29mZnNldEFzUmFuZ2U7CiB9CiAKLWNvbnN0IFN0cmluZyYgVGV4dENoZWNraW5nUGFyYWdyYXBo
Ojp0ZXh0KCkgY29uc3QKK1N0cmluZ1ZpZXcgVGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkg
Y29uc3QKIHsKLSAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKKyAgICBpZiAobV90ZXh0LmlzTnVs
bCgpKQogICAgICAgICBtX3RleHQgPSBwbGFpblRleHQoJnBhcmFncmFwaFJhbmdlKCkpOwogICAg
IHJldHVybiBtX3RleHQ7IAogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z1N0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hl
Y2tpbmdTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nU3RhcnQpCiAgICAgICAg
IG1fY2hlY2tpbmdTdGFydCA9IGNoYXJhY3RlckNvdW50KG9mZnNldEFzUmFuZ2UoKSk7CiAgICAg
cmV0dXJuICptX2NoZWNraW5nU3RhcnQ7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmNoZWNraW5nRW5kKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFw
aDo6Y2hlY2tpbmdFbmQoKSBjb25zdAogewotICAgIGlmICghbV9jaGVja2luZ0VuZCkKLSAgICAg
ICAgbV9jaGVja2luZ0VuZCA9IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7Ci0g
ICAgcmV0dXJuICptX2NoZWNraW5nRW5kOworICAgIHJldHVybiBjaGVja2luZ1N0YXJ0KCkgKyBj
aGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNo
ZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2hlY2tpbmdMZW5ndGgpCiAgICAg
ICAgIG1fY2hlY2tpbmdMZW5ndGggPSBjaGFyYWN0ZXJDb3VudChtX2NoZWNraW5nUmFuZ2UpOwog
ICAgIHJldHVybiAqbV9jaGVja2luZ0xlbmd0aDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFn
cmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAog
ewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQpCiAgICAgICAgIHJldHVybiAq
bV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwpAQCAtMjI5LDcgKzIyNiw3IEBAIGludCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdAogICAg
IHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0CitDaGFyYWN0
ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3Ro
KCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCkKICAgICAg
ICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOwpAQCAtMjQ2LDEyICsyNDMs
MTIgQEAgVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdIZWxwZXIoRWRpdG9yQ2xpZW50
JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKIAogVGV4dENoZWNraW5nSGVscGVyOjp+VGV4dENoZWNr
aW5nSGVscGVyKCkgPSBkZWZhdWx0OwogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0Fs
bCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQorU3RyaW5nIFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlz
c3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVs
bGluZ1JhbmdlKQogewogICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQgPSAwOwogCiAgICAgU3Ry
aW5nIGZpcnN0TWlzc3BlbGxpbmc7Ci0gICAgaW50IGN1cnJlbnRDaHVua09mZnNldCA9IDA7Cisg
ICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudENodW5rT2Zmc2V0ID0gMDsKIAogICAgIGZvciAoV29y
ZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZSk7ICFpdC5hdEVuZCgpOyBjdXJyZW50Q2h1bmtPZmZz
ZXQgKz0gaXQudGV4dCgpLmxlbmd0aCgpLCBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgU3RyaW5n
VmlldyB0ZXh0ID0gaXQudGV4dCgpOwpAQCAtMjc3LDE3ICsyNzQsMjAgQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5n
T2Zmc2V0LCBib28KIAogICAgICAgICBpZiAobWlzc3BlbGxpbmdMb2NhdGlvbiA+PSAwICYmIG1p
c3NwZWxsaW5nTGVuZ3RoID4gMCAmJiBtaXNzcGVsbGluZ0xvY2F0aW9uIDwgdGV4dExlbmd0aCAm
JiBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxsaW5nTG9jYXRpb24g
KyBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBDb21w
dXRlIHJhbmdlIG9mIG1pc3NwZWxsZWQgd29yZAotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGlu
Z1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3JhbmdlLCBjdXJyZW50Q2h1bmtPZmZz
ZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgICAg
ICBDaGFyYWN0ZXJSYW5nZSBtaXNwZWxsaW5nQ2hhcmFjdGVyUmFuZ2U7CisgICAgICAgICAgICBt
aXNwZWxsaW5nQ2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBjdXJyZW50Q2h1bmtPZmZzZXQgKyBt
aXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAgICAgbWlzcGVsbGluZ0NoYXJhY3RlclJhbmdl
Lmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAgICAgYXV0byBtaXNzcGVsbGlu
Z1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UsIG1pc3BlbGxpbmdDaGFyYWN0
ZXJSYW5nZSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGZpcnN0LWVuY291bnRlcmVkIG1p
c3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAgICAgICAgaWYgKCFmaXJzdE1pc3NwZWxs
aW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ09mZnNldCA9IGN1cnJlbnRD
aHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CiAgICAgICAgICAgICAgICAgZmlyc3RN
aXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxs
aW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7CisgICAgICAgICAgICAgICAgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1pc3NwZWxsaW5nUmFuZ2UpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBtYXJrZXIgZm9yIG1pc3NwZWxsZWQgd29y
ZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1l
bnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UsIERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLnN0YXJ0LmRvY3VtZW50
KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiB3ZSdyZSBtYXJraW5nIG9u
bHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFsbCBpbnN0YW5jZXMuCiAgICAgICAg
ICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjk4LDcgQEAgU3RyaW5nIFRleHRDaGVja2lu
Z0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0
LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGluZzsKIH0KIAotU3RyaW5nIFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dy
YW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBib29s
JiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBpZiAoIXVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0zMTMsOCAr
MzEzLDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdP
ckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAvLyBJbml0aWFsaXplIG91dCBw
YXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8g
cmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAgIG91dEZpcnN0Rm91bmRPZmZz
ZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAtMTsKLSAgICBvdXRHcmFt
bWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlv
biA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggPSAwOwogICAgIG91dEdy
YW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdyYW1tYXJEZXRhaWwudXNlckRl
c2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAgLTMzNCw4ICszMzQsOCBAQCBTdHJp
bmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihi
b29sIGNoZWNrR3JhbW1hciwgYgogICAgIHdoaWxlICh0b3RhbExlbmd0aFByb2Nlc3NlZCA8IHRv
dGFsUmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBzZWFyY2gg
cmFuZ2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBvbmUgZm9yIHNwZWxsaW5nIGFuZCBn
cmFtbWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBjaGFyYWN0ZXJDb3VudChwYXJh
Z3JhcGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRPZmZzZXQgPSBmaXJzdEl0ZXJh
dGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBpbnQgY3VycmVudEVuZE9mZnNl
dCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRTdGFydE9m
ZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7CisgICAgICAgIENo
YXJhY3RlckNvdW50IGN1cnJlbnRFbmRPZmZzZXQgPSBjdXJyZW50TGVuZ3RoOwogICAgICAgICBp
ZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFu
Z2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJh
Y3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8g
dGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3
YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KQEAgLTM0Niw5ICszNDYsOSBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgU3RyaW5nIHBhcmFncmFwaFN0cmlu
ZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICBpZiAocGFy
YWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAgICAgIGJvb2wgZm91bmRH
cmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nTG9jYXRpb24gPSAw
OwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOwotICAgICAg
ICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAg
IENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAgIENo
YXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAg
Q2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gMDsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CkBAIC0zNjEs
NDIgKzM2MSw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGhTdHJp
bmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxlY3Rpb24pOwogCiAgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1
bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5sb2NhdGlvbiArIHJl
c3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVs
bGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAgICAgICAgICAgICAgICAgICAgICAg
bWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9
PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gPj0g
Y3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5n
ZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0aW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5n
KHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVz
dWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0
ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5nZS5sZW5ndGggPiBjdXJyZW50
U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFu
Z2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnJh
bmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3Qg
c3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNlIHRoZXJlIG1pZ2h0IHN0
aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGluIGl0LCBidXQgd2UgY2Fu
IHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
cmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LmRldGFpbHNbal07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bG9jYXRpb24gPj0gMCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+
bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5sb2NhdGlvbiArIGRldGFp
bC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0ICYmICghZm91
bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPCBncmFtbWFy
RGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRl
dGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24g
Pj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+
cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0
ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFu
Z2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9IGo7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbiAr
IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1t
YXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2Uu
bG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kR3JhbW1hciA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5s
b2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlTG9jYXRp
b24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dyYW1tYXJEZXRhaWxJbmRleF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaFN0
cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1
YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNF
bXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpIHx8
IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewotICAgICAgICAg
ICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3VycmVu
dFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJDb3VudCBzcGVsbGlu
Z09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludCht
X3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxp
bmcgPSB0cnVlOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1tYXJQaHJh
c2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgQ2hh
cmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAt
IGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJh
dGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gY2hh
cmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5nZS0+c3RhcnRQb3NpdGlvbigp
KSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpIH0p
OwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CkBAIC00MjgsMTgg
KzQyOCwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGlu
Z09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogCiAjaWYgVVNFKEdSQU1NQVJfQ0hF
Q0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwo
Y29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgaW50IGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1h
cmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0
YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIENoYXJhY3Rl
ckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hhcmFjdGVyQ291bnQgc3RhcnRPZmZz
ZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAogewogICAg
IC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhlIGVhcmxpZXN0IGRldGFpbCByYW5n
ZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChpZiBhbnkpLgogICAgIC8vIE9wdGlv
bmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2ggZGV0YWlsIGluIHRoZSByYW5nZS4K
LSAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gLTE7CisgICAgQ2hhcmFjdGVy
Q291bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gMDsKICAgICBpbnQgZWFybGllc3RE
ZXRhaWxJbmRleCA9IC0xOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0
YWlscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwg
PSAmZ3JhbW1hckRldGFpbHNbaV07Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDAp
OwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgQVNTRVJU
KGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChkZXRhaWwtPnJhbmdl
LmxvY2F0aW9uID49IDApOwogICAgICAgICAKLSAgICAgICAgaW50IGRldGFpbFN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9u
OworICAgICAgICBDaGFyYWN0ZXJDb3VudCBkZXRhaWxTdGFydE9mZnNldEluUGFyYWdyYXBoID0g
YmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNraXAgdGhpcyBkZXRhaWwgaWYgaXQgc3RhcnRzIGJlZm9yZSB0aGUg
b3JpZ2luYWwgc2VhcmNoIHJhbmdlCiAgICAgICAgIGlmIChkZXRhaWxTdGFydE9mZnNldEluUGFy
YWdyYXBoIDwgc3RhcnRPZmZzZXQpCkBAIC00NTAsMzAgKzQ1MCwzMCBAQCBpbnQgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0
YWlsPiYgZ3JhbQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAo
bWFya0FsbCkgewotICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zm
c2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwotICAgICAgICAgICAgYmFk
R3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1h
cmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVz
ZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLmdldCgpLCB7IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLT5yYW5nZS5s
ZW5ndGggfSk7CisgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgLy8gUmVtZW1iZXIgdGhpcyBkZXRhaWwgb25seSBpZiBpdCdzIGVhcmxpZXIgdGhhbiBvdXIg
Y3VycmVudCBjYW5kaWRhdGUgKHRoZSBkZXRhaWxzIGFyZW4ndCBpbiBhIGd1YXJhbnRlZWQgb3Jk
ZXIpCi0gICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFp
bExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPmxvY2F0aW9uKSB7CisgICAgICAgIGlmIChlYXJsaWVz
dERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwt
PnJhbmdlLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICBlYXJsaWVzdERldGFpbEluZGV4ID0gaTsK
LSAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IGRldGFpbC0+bG9jYXRp
b247CisgICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSBkZXRhaWwtPnJh
bmdlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiBlYXJsaWVz
dERldGFpbEluZGV4OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RC
YWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIGludCYgb3V0R3JhbW1h
clBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAorU3RyaW5nIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWls
LCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBj
b25zdAogewogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUg
dXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCi0gICAgb3V0R3JhbW1hckRl
dGFpbC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAg
ICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0
YWlsLnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFy
KCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygp
OwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIAotICAgIFN0cmluZyBmaXJz
dEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7
CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBh
cmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQu
CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9m
IHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2Us
CkBAIC00ODEsMTEgKzQ4MSwxMSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAgICAgVGV4dENo
ZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNvcHlSZWYoKSk7CiAgICAgCiAgICAg
Ly8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2YgcGFyYWdyYXBoLCBidXQgc2tpcCBw
YXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5hbCBz
ZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFydE9mZnNldCA8
IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBmb3IgKENoYXJhY3RlckNvdW50IHN0
YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKTsgKSB7
CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFtbWFyRGV0YWlsczsKICAgICAgICAg
aW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwogICAgICAgICBpbnQgYmFkR3JhbW1h
clBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCktPmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBoLnRleHQoKSkuc3Vic3RyaW5nKHN0
YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sICZi
YWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQudGV4dENoZWNrZXIoKS0+
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcoc3RhcnRPZmZz
ZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1t
YXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFiYWRHcmFtbWFyUGhyYXNl
TGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uID09
IC0xKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAgICAgICAg
IC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5zdGFuY2VzKS4KICAgICAgICAg
aWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3JhbW1hclBocmFzZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSBiYWRHcmFtbWFyUGhy
YXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpOwotICAgICAgICAgICAgZmly
c3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJpbmcoYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgICAgIGZpcnN0
QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKGJhZEdyYW1tYXJQ
aHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3csIHVubGVzcyB3ZSdyZSBtYXJr
aW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC01MTgsNyAr
NTE4LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihH
cmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBzdGFydE9mZnNldCA9IGJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGg7CiAgICAgfQog
ICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgcmV0dXJuIGZpcnN0
QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29sIFRleHRDaGVja2luZ0hlbHBl
cjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFRleHRD
aGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICAvLyBSZXR1cm5zIHRy
dWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVzcG9uZHMgdG8gYSBiYWQg
Z3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCiAgICAgLy8gdG8gaXNTZWxl
Y3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBmb3IgdGhlcmUgdG8gYmUgc29t
ZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAogICAgIC8vIG9yIG92ZXJsYXBw
aW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkgbWF0Y2guCi0gICAgaW50IGdy
YW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNl
dDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgU3RyaW5nIGJh
ZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdyYW1t
YXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSArNTQyLDE1IEBAIGJvb2wgVGV4dENo
ZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAogICAgIGlmIChncmFtbWFyUGhy
YXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGdyYW1t
YXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubGVuZ3Ro
ID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7Cisg
ICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CiAKICAgICAvLyBCYWQg
Z3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1tYXRpY2FsIHdvcmQpIGRv
ZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1hckRldGFpbC5sb2NhdGlv
biArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9j
YXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1dCBlbmQgb2YgYmFkIGdy
YW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQotICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IGNoYXJhY3RlckNvdW50KG1fcmFu
Z2UpKQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCAhPSBjaGFyYWN0ZXJDb3Vu
dChtX3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFVwZGF0ZSB0
aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVycm9yICh3aGV0aGVyIG9y
IG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KQEAgLTU5NCw4ICs1OTQsOCBA
QCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
T3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2Ns
aWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBjaGVja2luZ1R5cGVzLCByZXN1
bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0
cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFn
cmFwaC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVz
KHJlc3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBh
cmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBBU1NF
UlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9jbGllbnQudGV4dENo
ZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygpLCBjdXJy
ZW50U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1fY2xpZW50LnVwZGF0ZVNwZWxs
aW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQpOwpAQCAtNjA4LDEyICs2MDgs
MTIgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3Bl
bGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAK
ICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50
eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdS
YW5nZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKSB7CisgICAgICAg
IGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFw
aC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdlKSkgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewotICAgICAgICAgICAgICAgIEFT
U0VSVChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5s
b2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFu
Z2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0
aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJh
Z3JhcGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAg
ICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsgcmVzdWx0LnJhbmdlLmxvY2F0
aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRl
eHQoKS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3Ro
KS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFz
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBkZXRh
aWwuZ3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzZXMuYXBwZW5kKGd1ZXNz
KTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1p
c3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZwogewogICAgIC8v
IFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlzc3BlbGxpbmcuIElnbm9y
ZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIiOwogICAgIC8vIGFsbCB3
ZSBuZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0gICAgaW50IGlnbm9yZWRPZmZz
ZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RNaXNz
cGVsbGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogfQog
CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxCYWRH
cmFtbWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIG9maW5kRmlyc3RC
YWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgIm91dCBwYXJhbWV0ZXJzIjsg
YWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgogICAgIEdy
YW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGlnbm9yZWRPZmZzZXQ7
CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RCYWRHcmFt
bWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0LCB0cnVlKTsKIH0KICNlbmRp
ZgpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNr
ZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgaWYgKGNo
ZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAg
ICAgdW5zaWduZWQgZ3JhbW1hckNoZWNrTGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBtaXNwZWxsaW5nIDogbWlzcGVsbGluZ3MpCi0gICAgICAgICAgICBncmFtbWFy
Q2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNw
ZWxsaW5nLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6
bWluPHVuc2lnbmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcucmFuZ2UubG9jYXRp
b24pOwogICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMoY2xpZW50LCB0ZXh0LnN1YnN0cmlu
ZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNhbEVycm9ycyk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAppbmRleCAzZjM5ZTg2
OGQ5OTQxZTViODgxYjA2MTZkZGZjMTZiMzQwMTUxMWQ0Li5iMjk5YTY2NjA0YWU3ZDEzNDY1ZTRl
NGQ5ZWIyZDEzZWE2ZjMzYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0
aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgo
UmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50IHJh
bmdlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVy
T2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGludD4g
b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCByYW5n
ZUxlbmd0aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2Up
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBvZmZzZXRUbyhjb25zdCBQ
b3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAotICAg
IC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1ZpZXcu
Ci0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQoKSBk
aXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5n
dGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
bGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBsZW4p
OyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQo
KVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4dCgp
IGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tpbmdT
dGFydCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBjaGVj
a2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgp
KTsgfQorICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQoKSBjb25zdDsKKyAgICBDaGFy
YWN0ZXJDb3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGNoZWNr
aW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1YnN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgpLCBjaGVja2luZ0xl
bmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4gd2hpY2ggd2UgYWxs
b3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRpYyByZXBsYWNlbWVu
dCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hlY2tpbmcgcGFyYWdy
YXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5nZS4KLSAgICBpbnQg
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBhdXRvbWF0aWNSZXBs
YWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNvdW50IGF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBhdXRvbWF0aWNSZXBsYWNl
bWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNraW5n
U3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXNDaGVj
a2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1
cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49IGNo
ZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5nUmFu
Z2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlv
biA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7
IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBj
b25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2Uu
bGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNv
dmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRp
b24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoID49
IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNraW5n
UmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxv
Y2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+
IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0Owog
CiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQ
dHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1f
b2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJsZSBP
cHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4g
bV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xlbmd0
aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3Ro
OworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fY2hlY2tpbmdTdGFydDsK
KyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2NoZWNraW5nTGVuZ3RoOwor
ICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1fYXV0b21hdGljUmVwbGFjZW1l
bnRTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsKQEAg
LTg4LDExICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNs
aWVudCYsIFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3RyaW5n
IGZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBt
YXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmlu
ZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9v
bCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWls
JiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hh
cmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRy
PFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlz
c3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxp
bmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBv
dXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJh
bmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykK
LSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFy
RGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7
CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1h
ckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJvb2wgbWFy
a0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigpOwogICAgIGJvb2wgaXNV
bmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdDsKICNpZiBVU0Uo
R1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBW
ZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQg
c3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgaW50
IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgQ2hh
cmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBDaGFyYWN0ZXJDb3VudCBzdGFy
dE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0Owog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXgg
YmExYjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uMTM3ZTU0YjFjYjcwNjI4
OWU1MjU5MzUzODFlMjFhZDFkMDRjOTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJhY3RlckNvdW50IGNoYXJhY3Rl
ckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3Rl
ckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0b3IoZW50
aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5nZS5vd25l
ckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFj
dGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1l
bnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5k
KCkpOwpAQCAtMjM2NSw4OCArMjM1OSw2NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVS
ZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4gbm9kZSAm
JiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQogCi1SZWZQ
dHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFp
bmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wg
Zm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorY29uc3RleHByIENoYXJhY3RlckNvdW50IGNsYW1w
ZWRBZGQoQ2hhcmFjdGVyQ291bnQgYSwgQ2hhcmFjdGVyQ291bnQgYikKIHsKLSAgICBSZWY8UmFu
Z2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLQotICAg
IGludCBkb2NUZXh0UG9zaXRpb24gPSAwOwotICAgIGludCByYW5nZUVuZCA9IHJhbmdlTG9jYXRp
b24gKyByYW5nZUxlbmd0aDsKLSAgICBib29sIHN0YXJ0UmFuZ2VGb3VuZCA9IGZhbHNlOwotCi0g
ICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKnNjb3BlKTsKLQot
ICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlv
biA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
IDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICAKLSAgICAvLyBGSVhNRTogdGhl
IGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgd29ya2Fyb3VuZCBmb3IgPGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODk+LgotICAgIGlmICghcmFu
Z2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQuYXRFbmQoKSkgewotICAgICAgICByZXN1
bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsKLSAg
ICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IDApOwotICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7Ci0gICAgfQorICAgIGF1dG8gc3VtID0g
YSArIGI7CisgICAgcmV0dXJuIHN1bSA+PSBhID8gc3VtIDogc3RkOjpudW1lcmljX2xpbWl0czxD
aGFyYWN0ZXJDb3VudD46Om1heCgpOworfQogCi0gICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5h
ZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAg
ICAgICAgdGV4dFJ1blJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpOworU2ltcGxl
UmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hh
cmFjdGVyUmFuZ2UgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQoreworICAg
IGF1dG8gcmVzdWx0UmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHJhbmdlLmxvY2F0aW9uID8gc2NvcGUu
ZW5kIDogc2NvcGUuc3RhcnQsIChyYW5nZS5sb2NhdGlvbiB8fCByYW5nZS5sZW5ndGgpID8gc2Nv
cGUuZW5kIDogc2NvcGUuc3RhcnQgfTsKKyAgICBhdXRvIHJhbmdlRW5kID0gY2xhbXBlZEFkZChy
YW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlv
biA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUsIGJlaGF2aW9yKTsgIWl0LmF0
RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBpdC50ZXh0
KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdlID0gaXQucmFuZ2UoKTsKIAot
ICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0aW9uID49IGRvY1RleHRQb3NpdGlv
biAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3NpdGlvbiArIGxlbmd0aDsKLSAgICAgICAg
Ym9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUVuZCA8
PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CisgICAgICAgIGF1dG8gZm91bmQgPSBbJl0gKENo
YXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVy
biB0YXJnZXRMb2NhdGlvbiA+PSBsb2NhdGlvbiAmJiB0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9u
IDw9IGxlbmd0aDsKKyAgICAgICAgfTsKKyAgICAgICAgYm9vbCBmb3VuZFN0YXJ0ID0gZm91bmQo
cmFuZ2UubG9jYXRpb24pOworICAgICAgICBib29sIGZvdW5kRW5kID0gZm91bmQocmFuZ2VFbmQp
OwogCiAgICAgICAgIGlmIChmb3VuZEVuZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0
ZW4gYXQgdGhlIHdyb25nCi0gICAgICAgICAgICAvLyBwb3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4n
cyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVs
ZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRo
ZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRp
b24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRlcmVyIG9mIHRoZSBjdXJyZW50IG5v
ZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVy
IGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBUZXh0SXRlcmF0b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRv
aW5nIGl0IHVuY29uZGl0aW9uYWxseSB0byBoZWxwIHVzIGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0
IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgKGl0LnRleHQoKVsw
XSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KGl0KSkpIHsKICAgICAgICAgICAg
ICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBpdC5yYW5nZSgpLnN0YXJ0OwotICAgICAg
ICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5l
ciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KTsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuRW5kID0gVmlzaWJsZVBvc2l0aW9u
KHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJ1bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5S
YW5nZS0+c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNl
dEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpCisg
ICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSBpdC5yYW5nZSgpLnN0YXJ0Owor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbmQg
PSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSAqZW5kOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3VuZFN0
YXJ0KSB7Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91bmQgPSB0cnVlOwotICAgICAgICAgICAg
aWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKS5pc1RleHROb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlvbiAtIGRvY1RleHRQb3NpdGlvbjsK
LSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBk
b2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFy
dCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZz
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRS
YW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdl
LT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91bmRhcnkgPSBbJl0gKENoYXJhY3RlckNv
dW50IHRhcmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50IHsKKyAgICAgICAgICAgIGlmIChp
czxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyKSkgeworICAgICAgICAgICAgICAg
IEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGRvd25jYXN0PFRleHQ+KHRleHRS
dW5SYW5nZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3RhcnQub2Zmc2V0ICsgdGFyZ2V0TG9j
YXRpb24gLSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB0ZXh0UnVuUmFuZ2Uu
c3RhcnQuY29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA9PSBsb2NhdGlvbiA/IHRl
eHRSdW5SYW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7CisgICAgICAgIH07CiAKKyAgICAg
ICAgaWYgKGZvdW5kU3RhcnQpCisgICAgICAgICAgICByZXN1bHRSYW5nZS5zdGFydCA9IGJvdW5k
YXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAg
ICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAg
ICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVuZCAtIGRvY1RleHRQb3NpdGlvbjsKLSAg
ICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kID09IGRvY1RleHRQb3Np
dGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5k
KHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+ZW5kT2Zmc2V0KCkp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsK
KyAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5kYXJ5KHJhbmdlRW5kKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgZG9jVGV4dFBvc2l0aW9uICs9IGxl
bmd0aDsKKyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3RoOwogICAgIH0KLSAgICAKLSAgICBpZiAo
IXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYg
KHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4dFBvc2l0aW9uKSAvLyByYW5nZUVuZCBp
cyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdl
LT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgCiAgICAg
cmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCitCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIENoYXJhY3RlckNvdW50IGxvY2F0aW9u
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICByZXR1cm4gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0sIGJlaGF2aW9yKS5zdGFydDsKK30K
KwogYm9vbCBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUq
IHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UsIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVu
Z3RoKQogewogICAgIGxvY2F0aW9uID0gbm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaAppbmRleCAwOTE0ZjdiY2E2MTUwOWZiNWMzZGVlYWM5ZDM4Y2U0ZDRjMzg5NjRi
Li5mNGU0MDhhMjFhNTU2YTU4Yjg0MjM4YjhlMzJjMTAxYTczNmZkNWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCkBAIC0xMDMsOSArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3Ry
aW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgp
LmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQogCiAgICAgLy8gRklYTUU6IE1vdmUg
dGhlc2UgdG8gU2ltcGxlUmFuZ2UsIENoYXJhY3RlclJhbmdlLCBhbmQgQ2hhcmFjdGVyQ291bnQg
YW5kIG1vdmUgb3V0IG9mIHRoaXMgY2xhc3MgdG8gdGhlIHRvcCBsZXZlbCAoYm90dG9tIG9mIHRo
aXMgZmlsZSkuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0
aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBz
aXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3Vi
cmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFj
dGVyQ291bnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdCgpOwpAQCAtMjg5LDEzICsyODgs
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQgeyB0cnVlIH07CiB9OwogCi11
c2luZyBDaGFyYWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OwotCi1zdHJ1Y3QgQ2hhcmFjdGVyUmFu
Z2UgewotICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9OwotICAgIENoYXJhY3RlckNv
dW50IGxlbmd0aCB7IDAgfTsKLX07CiAKIFdFQkNPUkVfRVhQT1JUIENoYXJhY3RlckNvdW50IGNo
YXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2lu
dCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJD
b3VudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3Ip
OworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDJiOTMx
N2IxNzEzZjI2MGEyZGFmMzhjNWIxZmJhNGUwODRhYjdjYTYuLmUyZjhmNTdiMzk1NTE3N2JjZGVm
NzNhYTQyYjczNzhjOGFjOTMwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24ubW0KQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxEREFj
dGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKFZpc2libGVQb3NpdGlv
bgogICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5n
ZShyZXN1bHQpOwogICAgICAgICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRl
eHQubG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRp
b24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgICBtYWluUmVz
dWx0ID0gcmVzdWx0OwotICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiwg
cmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKKyAgICAgICAgICAgIG1haW5SZXN1bHRSYW5n
ZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmNvbnRleHRSYW5nZSwg
Km1ha2VDaGFyYWN0ZXJSYW5nZShyZXN1bHRSYW5nZUluQ29udGV4dCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTA4LDkgKzUwOCwxMiBAQCBOU0FycmF5ICpE
YXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5n
ZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4IGZyYWdtZW50SW5kZXggPSBxdWVy
eVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1
ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5hcHBl
bmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJhbmdlLCBxdWVyeVJhbmdlLnN0YXJ0
Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQp
KTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFu
Z2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENoYXJhY3RlclJhbmdlIGZyYWdtZW50
UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxvY2F0aW9uID0gcXVlcnlSYW5nZS5z
dGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxlbmd0aCA9IHF1ZXJ5UmFu
Z2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgICAgICAgICAgZnJh
Z21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
KmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpCiAgICAgICAgICAgICAgICAgZnJh
Z21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXgg
ZDY0OGZkNzBmYzM4ZmM5MmMyNGU1MTc4OTA0N2NlZjYyNjNmYTUwOS4uNmJjNWJlMWZlNzRlMDUx
YTNhNmNiMGJjNjFmZjI4OGE0ZTEyNjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjg3LDEwICsyODcsOSBAQCBzdGQ6OnR1
cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGVjdGlvbihjbwogCiAgICAgUmVmUHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2Ug
PSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CiAgICAgU3RyaW5nIGl0
ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKTsKLSAgICBSZXRh
aW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRX
aXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKTsKLSAgICBOU1Jh
bmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKKyAgICBOU1Jh
bmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGluaXRX
aXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VUb1Bhc3NdKS5nZXQoKS5oaWdo
bGlnaHRSYW5nZTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxD
aGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxl
bmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShoaWdobGln
aHRSYW5nZSkpKSwgbmlsIH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBA
IC0zNTgsMTMgKzM1NywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFy
eSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIE5TUmFuZ2Ug
c2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4
OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0
aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsKIAogICAgIFN0cmluZyBpdGVt
U3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2UpOwotICAgIFJldGFpblB0cjxS
Vkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0
Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSk7Ci0gICAgTlNSYW5nZSBo
aWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CisgICAgYXV0byBoaWdo
bGlnaHRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShhZG9wdE5TKFthbGxvY1JWSXRlbUluc3Rh
bmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdl
XSkuZ2V0KCkuaGlnaGxpZ2h0UmFuZ2UpOwogCi0gICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKKyAgICBpZiAoIWhp
Z2hsaWdodFJhbmdlIHx8ICFoaWdobGlnaHRSYW5nZS0+bGVuZ3RoKQogICAgICAgICByZXR1cm4g
eyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uLCBoaWdobGln
aHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVz
b2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsICpoaWdobGlnaHRSYW5nZSkp
LCBuaWwgfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApp
bmRleCBhMmI4MTgyODc3YjI4YWYyOWM4YTA2Mzk1NGQzNzRjZDVhYTVhNWRhLi5kM2NmMDZjOTNk
MTlkODVlZTUxNDVkMDJhMTJkNTJiODNiYzdhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNzIsMTEgKzcyLDggQEAg
dm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBpZiAoZW5kT2Zmc2V0IDwg
cmVzdWx0TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBlbmRPZmZzZXQg
LSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCk7Ci0gICAgaWYgKCFyZXN1bHRSYW5nZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CisgICAgYXV0byByZXN1bHRSYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJv
b3QpLCB7IGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0IH0pOworICAgIGRvY3Vt
ZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZSwgbV9t
ZXRhZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDUxMzVi
OTA2ZGVlMThlMDE3NzllYzYxMTQ3NDMxYzc5NWUzOGE1OGUuLjY1ZDVkZDU2MmU5MzcwY2ViZmNl
NTNjMzIyNWUyNzM1YzU1YjVmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAtMTQyLDE0ICsxNDIsMTQgQEAgc3Rk
Ojp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VBdEhpdFRlc3RSZXN1bHQKIAogICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VS
YW5nZShjaGFyYWN0ZXJDb3VudCh7ICpmdWxsQ2hhcmFjdGVyU3RhcnQsICpwb3NpdGlvbkJvdW5k
YXJ5IH0pLCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgTlNSYW5n
ZSBleHRyYWN0ZWRSYW5nZSA9IHRva2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5n
ZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucyk7CisgICAgYXV0byBleHRyYWN0ZWRSYW5n
ZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZSh0b2tlblJhbmdlKHBsYWluVGV4dChmdWxsQ2hhcmFjdGVy
UmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpKTsKIAogICAgIC8vIHRva2VuUmFu
Z2Ugc29tZXRpbWVzIHJldHVybnMge05TTm90Rm91bmQsIDB9IGlmIGl0IHdhcyB1bmFibGUgdG8g
ZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcuCiAgICAgLy8gRklYTUUgKDE1OTA2Myk6IFdlIHNob3Vs
ZG4ndCBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvIGxlbmd0aCBoZXJlLgotICAgIGlmIChleHRyYWN0
ZWRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFleHRyYWN0ZWRSYW5nZS5sZW5ndGgp
CisgICAgaWYgKCFleHRyYWN0ZWRSYW5nZSB8fCAhZXh0cmFjdGVkUmFuZ2UtPmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAKLSAgICByZXR1cm4geyBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9u
LCBleHRyYWN0ZWRSYW5nZS5sZW5ndGgpLCBvcHRpb25zIH07CisgICAgcmV0dXJuIHsgY3JlYXRl
TGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCAqZXh0
cmFjdGVkUmFuZ2UpKSwgb3B0aW9ucyB9OwogfQogCiBzdGF0aWMgdm9pZCBleHBhbmRTZWxlY3Rp
b25CeUNoYXJhY3RlcnMoUERGU2VsZWN0aW9uICpzZWxlY3Rpb24sIE5TSW50ZWdlciBudW1iZXJP
ZkNoYXJhY3RlcnNUb0V4cGFuZCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRCZWZvcmVTdGFy
dCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRBZnRlckVuZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGNiMzA3MWJjNDMyOGU0ZWUzZDQ1YzNmMmMzYWJkMmI1YmYxYWMwOTcuLjlmMGE0MDZkZTQx
NDkxODNmODUxMTYxMjRiM2VkNWMxOWIxZWYyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODAz
LDggKzgwMyw3IEBAIHVuc2lnbmVkIFBhZ2U6OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAKIHN0cnVjdCBGaW5kUmVwbGFj
ZW1lbnRSYW5nZSB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3Q7Ci0gICAgc2l6ZV90
IGxvY2F0aW9uIHsgbm90Rm91bmQgfTsKLSAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OworICAgIENo
YXJhY3RlclJhbmdlIHJhbmdlOwogfTsKIAogc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdl
JiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQpAQCAtODE2LDEwICs4MTUsMTAgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50
UmFuZ2U+JiByYW5nZXMKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHJhbmdlcyBhcmUgc29ydGVkIGJ5IHRoZWlyIGVuZCBvZmZzZXRzLCBwZXIg
ZWRpdGluZyBjb250YWluZXIuCi0gICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2UgPSByYW5n
ZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICAgICAgYXV0byBlbmRPZmZzZXRGb3JSYW5n
ZSA9IHJhbmdlLnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UucmFuZ2UubGVuZ3RoOwogICAgICAgICBh
dXRvIGluc2VydGlvbkluZGV4ID0gcmFuZ2VMaXN0LnNpemUoKTsKICAgICAgICAgZm9yIChhdXRv
IGl0ZXJhdG9yID0gcmFuZ2VMaXN0LnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZUxpc3QucmVu
ZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIGVuZE9mZnNldEJlZm9yZUluc2Vy
dGlvbkluZGV4ID0gaXRlcmF0b3ItPmxvY2F0aW9uICsgaXRlcmF0b3ItPmxlbmd0aDsKKyAgICAg
ICAgICAgIGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5kZXggPSBpdGVyYXRvci0+cmFu
Z2UubG9jYXRpb24gKyBpdGVyYXRvci0+cmFuZ2UubGVuZ3RoOwogICAgICAgICAgICAgaWYgKGVu
ZE9mZnNldEZvclJhbmdlID49IGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaW5zZXJ0aW9uSW5kZXgtLTsKQEAgLTg2Miwx
MSArODYxLDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3Qg
VmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIC8vIEl0ZXJhdGUg
YmFja3dhcmRzIHRocm91Z2ggcmFuZ2VzIHdoZW4gcmVwbGFjaW5nIHRleHQsIHN1Y2ggdGhhdCBl
YXJsaWVyIHRleHQgcmVwbGFjZW1lbnRzIGRvbid0IGNsb2JiZXIgcmVwbGFjZW1lbnQgcmFuZ2Vz
IGxhdGVyIG9uLgogICAgICAgICBhdXRvJiByYW5nZXMgPSByYW5nZXNCeUNvbnRhaW5lck5vZGUu
ZmluZChjb250YWluZXIpLT52YWx1ZTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFu
Z2VzLnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZXMucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0g
ICAgICAgICAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChjb250YWluZXIuZ2V0KCksIGl0ZXJhdG9yLT5sb2NhdGlvbiwgaXRlcmF0b3ItPmxl
bmd0aCk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkKKyAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKCpjb250YWluZXIpLCBpdGVyYXRvci0+cmFuZ2UpOworICAgICAg
ICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5n
ZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMp
OworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY3JlYXRl
TGl2ZVJhbmdlKHJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMpOwogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VT
ZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQsIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1l
bnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnRSZXBs
YWNlbWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC04OTgsNyArODk3LDcgQEAgdWludDMyX3Qg
UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZlY3RvcjxSZWY8UmFuZ2U+PiYgcmFu
Z2VzVG9SZXBsYWNlLAogICAgICAgICBpZiAocmVwbGFjZW1lbnRMb2NhdGlvbiA9PSBub3RGb3Vu
ZCB8fCAhcmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhpZ2hlc3RSb290KSwgcmVwbGFj
ZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSk7CisgICAgICAgIHJlcGxhY2VtZW50
UmFuZ2VzLmFwcGVuZCh7IFdURk1vdmUoaGlnaGVzdFJvb3QpLCB7IHJlcGxhY2VtZW50TG9jYXRp
b24sIHJlcGxhY2VtZW50TGVuZ3RoIH0gfSk7CiAgICAgfQogCiAgICAgcmVwbGFjZVJhbmdlcygq
dGhpcywgcmVwbGFjZW1lbnRSYW5nZXMsIHJlcGxhY2VtZW50VGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBkMGQwMGM2YmQ1NzMyNzczYzBh
MzdlOGJiNTM2NTdlYjM0NzdkZWIzLi5kMjQ1Y2NkOWVjOTEyMDJlYzNkMGY0OWVkNTU0YzMwNTBl
ZTk3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTMxLDEwICszMSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2hhcmFjdGVy
UmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsMTYgKzYyLDE0IEBAIGVudW0gVGV4dENoZWNraW5nUHJv
Y2Vzc1R5cGUgewogfTsKIAogc3RydWN0IEdyYW1tYXJEZXRhaWwgewotICAgIGludCBsb2NhdGlv
bjsKLSAgICBpbnQgbGVuZ3RoOworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgU3RyaW5nIHVzZXJEZXNjcmlwdGlvbjsKIH07CiAKIHN0
cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKLSAg
ICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5n
ZTsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsKICAgICBTdHJpbmcgcmVwbGFj
ZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGFmMjdiOTlm
Mzg3YzEyOGFmZmI0MzY5YWI0ZWMzYTljMGJmZmMyOTguLjEzNGVhMzFmY2U4Zjk4ODkxMTJjYzE0
YzA3ZmQxNzRkYmU1YmNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTIwNDQsOSArMjA0NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6aW52YWxpZGF0
ZUNvbnRyb2xUaW50cygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFJhbmdlPiBJbnRl
cm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCBpbnQgcmFu
Z2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3BlLCB1bnNpZ25lZCByYW5nZUxv
Y2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHJhbmdlTG9jYXRpb24sIHJhbmdl
TGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHJhbmdlTG9jYXRpb24s
IHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogdW5zaWduZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21S
YW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmIHJhbmdlKQpAQCAtMjA3NSw5ICsyMDc1
LDkgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVy
YXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHBsYWluVGV4dFVzaW5nQmFja3dh
cmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhyYW5nZSk7CiB9CiAKLVJlZjxSYW5nZT4gSW50ZXJu
YWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VM
ZW5ndGgpCitSZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCB1bnNp
Z25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgp
OworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdl
LCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogUmVmUHRyPFJhbmdlPiBJ
bnRlcm5hbHM6OnJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmIHNlYXJjaFJh
bmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHRhcmdldE9mZnNldCkKQEAgLTI0MzIs
OCArMjQzMiw3IEBAIHZvaWQgSW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShjb25z
dCBTdHJpbmcmIGNhbmRpZGF0ZSwgdW5zaWduZWQgbG9jYXRpCiAKICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6Tm9uZTsK
LSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gbGVu
Z3RoOworICAgIHJlc3VsdC5yYW5nZSA9IHsgbG9jYXRpb24sIGxlbmd0aCB9OwogICAgIHJlc3Vs
dC5yZXBsYWNlbWVudCA9IGNhbmRpZGF0ZTsKICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUocmVzdWx0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGUyMzUyMzQxZGI4YzE1ZDQyOWY5Y2VmZDI4OWRmNTIy
NzBlNWFjN2MuLmNmNzllNTBjN2I4NDczZjZmZTI1MmY4Y2M3Njg1OWM2ZjkxNTcxZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk1LDEyICsyOTUsMTIgQEAgcHVibGljOgog
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW52YWxpZGF0ZUNvbnRyb2xUaW50cygpOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwg
aW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VM
b2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvY2F0aW9uRnJv
bVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYpOwogICAgIHVuc2lnbmVkIGxlbmd0
aEZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFu
Z2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3
YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOwotICAgIFJlZjxSYW5nZT4gc3VicmFuZ2Uo
UmFuZ2UmLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKTsKKyAgICBSZWY8UmFu
Z2U+IHN1YnJhbmdlKFJhbmdlJiwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFu
Z2VMZW5ndGgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlRm9yRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNjJmYWY0OTQ2
ZWFhZGQ5ODBlNTc4OWExOGJiZGVjNTU4M2Y2MzIzLi4zNzU3OTA3NzA0ZjkzMTNlNjg0MTRjMDA1
NTkxNzQxZTQ2YTI1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0z
MjUsMTIgKzMyNSwxMiBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9u
ZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAotICAgIFJhbmdlPyByYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCBsb25nIHJhbmdlTG9jYXRpb24sIGxvbmcgcmFu
Z2VMZW5ndGgpOworICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50
IHNjb3BlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgcmFuZ2VM
ZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCBzY29w
ZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKEVsZW1l
bnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoUmFuZ2Ug
cmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJh
dG9yKFJhbmdlIHJhbmdlKTsKLSAgICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgbG9uZyBy
YW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5nZSBzdWJyYW5nZShSYW5n
ZSByYW5nZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdl
TGVuZ3RoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5nZUZvckRpY3Rpb25h
cnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAgICBSYW5nZT8gcmFuZ2VPZlN0
cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5nIHRleHQsIGxvbmcgdGFyZ2V0
T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1Jhbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKaW5kZXggYjg5OTMz
ZmZhMWJmMjg0M2MyNmZkYmQ2NmQyOTI2ZWQwMGM1ZjZhMS4uNzZlZjQ3MjJkNzUxY2Y2ZTU5YWFi
OWVkZmFiNjY1NmU3MDRmMTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3Bw
CkBAIC0zMyw0MiArMzMsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbykKK1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1Jhbmdl
Ojp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0
aW5nUmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBiYXNlKQogewotICAgIEFTU0VSVChy
YW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgQVNTRVJUKGVkaXRpbmdSYW5nZS5sb2Nh
dGlvbiAhPSBub3RGb3VuZCk7CisgICAgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBl
ZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5nZS5sZW5ndGggfTsKIAotICAgIC8vIFNh
bml0aXplIHRoZSBpbnB1dCwgYmVjYXVzZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoIHRha2VzIHNpZ25lZCBpbnRlZ2Vycy4KLSAgICBpZiAocmFuZ2UubG9jYXRpb24g
PiBJTlRfTUFYKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbnQgbGVuZ3RoOwotICAg
IGlmIChyYW5nZS5sZW5ndGggPD0gSU5UX01BWCAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxl
bmd0aCA8PSBJTlRfTUFYKQotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdl
Lmxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBsZW5ndGggPSBJTlRfTUFYIC0gcmFuZ2UubG9j
YXRpb247Ci0KLSAgICBpZiAoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CisgICAgaWYgKGJhc2UgPT0gRWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAgICAgLy8gT3VyIGNyaXRpY2Fs
IGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBjYWxsZWQgYnkgaW5wdXQgbWV0
aG9kcyB0aGF0CiAgICAgICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWlu
aW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNl
IG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00gZm9yIHRob3NlIGlzIG5vdAog
ICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9u
IGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAgICAgLy8gdG8gdXNlIHRoZSBy
b290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRp
b25hbCBiYXNlLgogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFu
IGlucHV0IGNvbnRleHQuCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxvY2F0aW9u
KSwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJv
b3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCplbGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoZWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKLQot
ICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAg
IGlmICghc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIEFTU0VSVChiYXNlID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6UGFyYWdy
YXBoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFy
dE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSkpOworICAgIGF1dG8gcGFyYWdy
YXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhT
dGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJh
Z3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0
byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3RO
b2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0
YXJ0SW5kZXggKyByYW5nZS5sb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBhdXRvIHNjb3BlRW5kID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXIt
PnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdl
KFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0
KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsKIH0KIAogRWRpdGluZ1JhbmdlIEVkaXRp
bmdSYW5nZTo6ZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6
UmFuZ2UqIHJhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAppbmRleCA5NDczOGI3Zjg4ZTll
MDU4ZGEyZWQyNTRhMTYwNDRlYmM2YjkzMDY5Li5lMDQzZjk3MjQwZTQyNWVjZDI1YTQyN2VkZDky
N2FjYjc0NWUzNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaApAQCAtNDEsNiAr
NDEsNyBAQCBlbnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA6IHVpbnQ4X3Qgewog
ICAgIFBhcmFncmFwaCwKIH07CiAKKy8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgd2l0aCBPcHRpb25h
bDxDaGFyYWN0ZXJSYW5nZT4uCiBzdHJ1Y3QgRWRpdGluZ1JhbmdlIHsKICAgICBFZGl0aW5nUmFu
Z2UoKQogICAgICAgICA6IGxvY2F0aW9uKG5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjMwN2FhMjU4OWVmODE0MGVhZjc1
OTA0MThlYmU4MWFiYzFhOTE4MC4uNDI1Nzc1NzlmZDdlNWIxNDhkZjBkMjJiY2NkZDE1MWZlOGVk
NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFp
bnRzLmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNlZW1zIGxpa2Ugd2UgY291bGQgdXNlIHN0ZDo6
dHVwbGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVsb3cgYSBsb3QhCisKIG5hbWVzcGFjZSBJUEMg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAt
MjUwLDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVRdWVyeU9wdGlvbnM+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVRdWVyeU9wdGlvbgogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZ2UmIHJhbmdlKQoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxvY2F0aW9uKTsKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sZW5ndGgpOworfQorCitPcHRpb25hbDxDaGFy
YWN0ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsb2NhdGlvbjsKKyAgICBkZWNv
ZGVyID4+IGxvY2F0aW9uOworICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOworICAgIGRlY29kZXIg
Pj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24sICpsZW5ndGggfSB9OworfQorCiB2b2lkIEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiBpbmZvKQogewogICAgIGVu
Y29kZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAtMjA1MywyMiArMjA3NiwxNiBAQCBib29sIEFy
Z3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpCiB7Ci0g
ICAgZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubGVu
Z3RoOworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJhbmdlOwogICAgIGVuY29kZXIgPDwgZGV0YWls
Lmd1ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwudXNlckRlc2NyaXB0aW9uOwogfQogCiBP
cHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxpbnQ+IGxvY2F0aW9uOwotICAg
IGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4gbGVuZ3RoOwotICAgIGRlY29kZXIg
Pj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ3Vl
c3NlczsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3Vt
ZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlm
ICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgq
Z3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfX07CisgICAgcmV0dXJuIHsgeyAq
cmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVzY3JpcHRpb24pIH0gfTsK
IH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0
KQpAQCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jl
cXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2kKIHZvaWQgQXJn
dW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sb2NhdGlvbjsKLSAgICBl
bmNvZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAgZW5jb2RlciA8PCByZXN1bHQucmFuZ2U7CiAg
ICAgZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5yZXBs
YWNlbWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUsOSBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXIm
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVy
ID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0
aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7
CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdyYW1tYXJEZXRhaWw+PiBkZXRh
aWxzOwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlm
ICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4ge3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgqbG9jYXRpb24pLCBXVEZNb3ZlKCpsZW5ndGgp
LCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH19OworICAgIHJldHVy
biB7IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1l
bnQpIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0
ODc2MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uMWFiYjQxNmMxNGJiZDRhZTVi
OWM5Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBBYnNvbHV0ZVBvc2l0aW9u
Q29uc3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7Citz
dHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1
Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKQEAg
LTE0Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0
cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAKLXRlbXBsYXRlIDx0eXBlbmFt
ZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsK
IHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2Um
KTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8mKTsKICAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4gZGVjb2Rl
KERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQppbmRleCBjZDlkMjQxNTU1NzExODQzYTU1NTc0NTY2NDQyOWVkYTQ3N2M5Mjcx
Li40ZWRiOWRhODYxNjhjYzVkYzU4ZjFhNDhiNTBlMjkxZGVkNmY1MjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC01MDcsOCAr
NTA3LDEwIEBAIHN0YXRpYyB2b2lkIHRyeUludGVyY2VwdE5hdmlnYXRpb24oUmVmPEFQSTo6TmF2
aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uCiAgICAgICAgICAgICAgICAgdHJ5U09B
dXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksICp3ZWFrUGFnZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgaWYgKHN1Y2Nlc3Mg
JiYgd2Vha1BhZ2UpCiAgICAgICAgICAgICAgICAgd2Vha1BhZ2UtPndpbGxPcGVuQXBwTGluaygp
OworI2VuZGlmCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6dXJsIGNvbXBsZXRpb25IYW5k
bGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwZmQy
ZTU2Mjg5NWIzMTYzZWY2ZTc5NmI4M2RhMGZlNTYyNDE4YzFlLi4yOWJkMThmN2RhMzIyMGYxOTE2
YzFhNzY2OGI1YTNkZWE0YzE0OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtMzM2NiwxMiArMzM2Niw5IEBAIHN0YXRpYyBjb25zdGV4cHIg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRDaGVj
a2luZ1R5CiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5n
UmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0ICpuc1Jl
c3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW25zUmVzdWx0IHJhbmdlXTsKLQog
ICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUg
PSBjb3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2Uo
bnNSZXN1bHQucmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxh
Y2VtZW50U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCmluZGV4IDZlZTQ0MWIxMWEyMzkwNWUzM2MzOWQ4
YTllMDBkMzk3Zjk2ZjUyYjEuLjA2ZDVjZWNjNGU4NTBhNTJiNGM3OTRjZTIxNjA1NjU0MGY5NTBl
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCkBA
IC00NCw4ICs0NCw4IEBAIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBXZWJHcmFtbWFyRGV0YWlsOjpj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhCiAKIFdlYkdyYW1tYXJEZXRh
aWw6OldlYkdyYW1tYXJEZXRhaWwoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5
KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBtX2dyYW1t
YXJEZXRhaWwubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICBtX2dyYW1tYXJEZXRhaWwubGVuZ3Ro
ID0gbGVuZ3RoOworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9u
OworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggPSBsZW5ndGg7CiAKICAgICBzaXpl
X3QgbnVtR3Vlc3NlcyA9IGd1ZXNzZXMtPnNpemUoKTsKICAgICBtX2dyYW1tYXJEZXRhaWwuZ3Vl
c3Nlcy5yZXNlcnZlQ2FwYWNpdHkobnVtR3Vlc3Nlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHcmFtbWFyRGV0YWlsLmgKaW5kZXggYzliNzU1M2NkN2IwOGVlYWM3ZDgyMzM4YjExMGY0
YWVkZDllZjZhYy4uMzkwYjRhNWY3YjllYWM2MzFmZDczMjQxNjU3ZTIyMWRhNWMxOTVkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtNDIsOCArNDIs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoaW50
IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcm
IHVzZXJEZXNjcmlwdGlvbik7CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogCi0gICAgaW50IGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uOyB9Ci0gICAgaW50IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sZW5ndGg7IH0KKyAgICBpbnQgbG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb247IH0K
KyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxl
bmd0aDsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBndWVzc2VzKCkgY29uc3Q7CiAgICAgY29uc3Qg
U3RyaW5nJiB1c2VyRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwu
dXNlckRlc2NyaXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4
dENoZWNrZXJHdGsuY3BwCmluZGV4IDQxMDhmYWQ2ZDI2NjU3ZWFkZTkwODZjMTZjZmRmMjE4MTA3
Y2NiMjUuLjFkYTkwZWVjNGRiNzBiNTEwYTEzZWFhN2RlM2U1MDViZmQ1ZjQzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcApAQCAtMjY5LDgg
KzI2OSw4IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1Rl
eHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IG1pc3NwZWxsaW5nUmVzdWx0OwogICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC50eXBl
ID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0
LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKLSAgICAgICAgbWlzc3Bl
bGxpbmdSZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAgIG1pc3NwZWxs
aW5nUmVzdWx0LnJhbmdlLmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsK
KyAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5n
dGg7CiAgICAgICAgIHBhcmFncmFwaENoZWNraW5nUmVzdWx0LmFwcGVuZChtaXNzcGVsbGluZ1Jl
c3VsdCk7CiAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxp
bmdMZW5ndGg7CiAgICAgICAgIC8vIEdlbmVyYWxseSwgd2UgZW5kIHVwIGNoZWNraW5nIGF0IHRo
ZSB3b3JkIHNlcGFyYXRvciwgbW92ZSB0byB0aGUgYWRqYWNlbnQgd29yZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQppbmRleCA5MjAwZWI2MDhiM2Ex
NTFmNzZjMDg2OGRjNDg4MzBhZmZkYzQ3MWZlLi5mNjA4YzhkYjVjNjA2NTMwY2FhNTk2ZWQ2YWI1
ZTk1ZDZjZWRlNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4
dENoZWNrZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVj
a2VySU9TLm1tCkBAIC0yMTIsOCArMjEyLDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKIAog
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9
IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSBt
aXNzcGVsbGVkUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIHJlc3VsdC5sZW5ndGggPSBtaXNzcGVs
bGVkUmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJh
bmdlKG1pc3NwZWxsZWRSYW5nZSk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdURk1vdmUocmVz
dWx0KSk7CiAKICAgICAgICAgb2Zmc2V0U29GYXIgPSBtaXNzcGVsbGVkUmFuZ2UubG9jYXRpb24g
KyBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RleHRDaGVja2VyTWFjLm1tCmluZGV4IDBjYTEzM2EyYWRjZTQxYTdjZmNmM2EwZDQxNGFiNGZm
Yjg0ZWU2MzQuLmFjM2JlZTAwYjE2NTkzYWNmNDU3MWVhOTljMTEwMTZjYzE0ZjQ1MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTMzNCwy
MiArMzM0LDIwIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVj
a1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydGhvZ3Jh
cGh5Ok5VTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3b3JkQ291bnQ6TlVMTF07CiAgICAgZm9yIChOU1RleHRD
aGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAg
ICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAg
ICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRU
eXBlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQp
OwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VS
VChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAg
QVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBhdXRvIHJl
c3VsdFJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZSk7CiAg
ICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nICYmIGNo
ZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKSB7CiAgICAg
ICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9
IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJh
bmdlOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIgJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKSkgewogICAgICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIE5TQXJyYXkgKmRldGFpbHMg
PSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5jb21pbmdEZXRhaWwgaW4gZGV0
YWlscykgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWluZ0RldGFpbCk7CiAgICAgICAg
ICAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC0zNTgsOCArMzU2LDcgQEAgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNw
ZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2Ug
PSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgZGV0
YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBk
ZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZGV0
YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxOU1JhbmdlKTsKICAgICAgICAg
ICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZv
cktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAgICAgICAgICAgIE5TQXJyYXkg
Kmd1ZXNzZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rp
b25zXTsKICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQpA
QCAtMzcwLDM2ICszNjcsMzEgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNr
ZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUxpbmsgJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3VsdCBVUkxdIGFic29sdXRlU3Ry
aW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVRdW90ZSAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmlu
Z107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFzaCAmJiBjaGVja2luZ1R5cGVz
LmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ICYmIGNoZWNraW5nVHlw
ZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJl
c3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdl
OwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxh
Y2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbikp
IHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBy
ZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb247Ci0gICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2Ug
PSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpOwogICAgICAgICB9CkBAIC00NDMsMTcgKzQzNSwyMCBAQCB2b2lkIFRleHRDaGVja2Vy
Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKFNwZWxsRG9jdW1lbnRUYWcsIGNv
bnN0IFN0cgogCiB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBj
b25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewotICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nl
cy5zaXplKCk7ICsraSkgewotICAgICAgICBOU1N0cmluZyAqZ3Vlc3MgPSBncmFtbWFyRGV0YWls
Lmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NdOworICAg
IGF1dG8gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7CisgICAg
ICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3JyZWN0aW9u
cyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQogCi0gICAgTlNSYW5nZSBncmFtbWFy
UmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWls
Lmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcgKmdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFy
RGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBncmFt
bWFyRGV0YWlsRGljdCA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hclJhbmdlXSwgTlNHcmFt
bWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlv
biwgY29ycmVjdGlvbnMuZ2V0KCksIE5TR3JhbW1hckNvcnJlY3Rpb25zLCBuaWxdKTsKKyAgICBO
U1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0
aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGV0YWlsID0gQHsKKyAgICAgICAgTlNHcmFtbWFyUmFu
Z2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0YWlsLnJhbmdlXSwKKyAgICAg
ICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRpb25OU1N0cmluZywKKyAgICAg
ICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucy5nZXQoKSwKKyAgICB9OwogCi0g
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFu
ZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWls
RGljdC5nZXQoKV07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVw
ZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFp
bDpkZXRhaWxdOwogfQogCiB2b2lkIFRleHRDaGVja2VyOjpnZXRHdWVzc2VzRm9yV29yZChTcGVs
bERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYg
Z3Vlc3NlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCmluZGV4IGYxOGNhYTcyY2JkOTY1MzE3NTVlOTJl
Y2ZiMjBlZjRkYjhjYTUzYWYuLjcwYTM5MDM1ZDU4YzgxMmMyY2IwMTMxOWY1YTE2YzZmYTU5ZjVk
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTg3LDcg
Kzg3LDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9m
ZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3gKICAgICBUZXh0SXRlcmF0b3I6OmdldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdldCgpLCBzZWxlY3Rpb25Mb2Nh
dGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKICAgICBzZWxlY3Rpb25Mb2NhdGlvbiArPSBvZmZzZXQ7
CiAKLSAgICByZXR1cm4ge3sgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChyb290LCBzZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07
CisgICAgcmV0dXJuIHt7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyb290LCBzZWxlY3Rpb25Mb2Nh
dGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07CiB9CiAKIHZvaWQgVGV4dENoZWNr
aW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1dGVk
U3RyaW5nIGFubm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90
IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCBy
ZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihBdHRyaWJ1
dGVkU3RyaW5nIGFuCiAKICAgICAgICAgICAgICAgICBzaXplX3Qgc2VsZWN0aW9uTG9jYXRpb25U
b1Jlc3RvcmUgPSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9mZnNldDsKICAgICAgICAgICAg
ICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSA+
IGxvY2F0aW9uSW5Sb290ICsgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uICsgcmVsYXRpdmVS
ZXBsYWNlbWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblRv
UmVzdG9yZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwg
c2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDApOworICAgICAgICAgICAgICAgICAgICBhdXRv
IHNlbGVjdGlvblRvUmVzdG9yZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyb290LCBzZWxlY3Rp
b25Mb2NhdGlvblRvUmVzdG9yZSwgMCk7CiAgICAgICAgICAgICAgICAgICAgIGZyYW1lU2VsZWN0
aW9uLm1vdmVUbyhzZWxlY3Rpb25Ub1Jlc3RvcmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBh
bgogICAgIH0KIAogICAgIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0
ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGxlbmd0aF0p
IG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0tl
eSwgaWQ+ICphdHRycywgTlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwgQk9PTCAqc3RvcCkgewotICAg
ICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgocm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2Nh
dGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVDb3Jl
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRy
aWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsKICAgICAgICAgaWYg
KCFhdHRyaWJ1dGVDb3JlUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5OSw3ICsx
OTksNyBAQCBBdHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5u
b3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q2hlY2tpbmdEYXRhID0gV1RGOjpnZXQ8RG9jdW1l
bnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFya2VyLT5kYXRhKCkpOwotICAg
ICAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoY3JlYXRlTGl2
ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+
ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgYXV0byBz
dWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjcmVhdGVMaXZlUmFuZ2UoY3VycmVudFRl
eHRSYW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2VyLT5lbmRPZmZzZXQoKSAtIG1h
cmtlci0+c3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxvY2F0
aW9uOwogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMmIzYTE0YjU5YTRlNzg4NDI3
Y2Y5MTRiN2IyMzJkYTEwYzI4MDVhLi43YWIxMDZhMWI5MWQ2NjNkMDY2NmNlNTZmZGEyZDA1NGNj
OTczYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtNTQyMCwyMCArNTQyMCwyMyBAQCB2b2lkIFdlYlBhZ2U6OmRlbGV0ZVN1cnJvdW5kaW5n
KGludDY0X3Qgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudCkKICAgICBpZiAoIXRhcmdl
dEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24gPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgYXV0
byYgc2VsZWN0aW9uID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAg
IGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2Vs
ZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CiAgICAgYXV0byBzdXJyb3Vu
ZGluZ1JhbmdlID0gbWFrZVJhbmdlKHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3Rh
cnQpLCBzZWxlY3Rpb25TdGFydCk7Ci0gICAgYXV0byBjdXJzb3JQb3NpdGlvbiA9IFdlYkNvcmU6
OmNoYXJhY3RlckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKTsKLSAgICBhdXRvJiByb290Tm9kZSA9
IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUo
KTsKLSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0LCBjaGFyYWN0
ZXJDb3VudCk7Ci0gICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkKKyAgICBpZiAoIXN1cnJvdW5kaW5n
UmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRp
bmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIENo
YXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9u
ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoKnN1cnJvdW5kaW5nUmFuZ2UpICsgb2Zmc2V0Owor
ICAgIGNoYXJhY3RlclJhbmdlLmxlbmd0aCA9IGNoYXJhY3RlckNvdW50OworICAgIGF1dG8gc2Vs
ZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKHJvb3ROb2RlKSwgY2hhcmFjdGVyUmFuZ2UpOworCiAgICAgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgdGFyZ2V0RnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpzZWxlY3Rpb25S
YW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UsIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlv
bldpdGhTbWFydERlbGV0ZShmYWxzZSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldEln
bm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCBhODdkYmVmNTQ3MjA3MTUxNzVjZTcyNTY0YzZhOGY1YWFjMTQxYzdiLi41ZjQ1
NTZkMzRmOTc1MzEyNDI5YTI1Y2MzM2IwODhjMzk3ODhlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDA3Niw4ICs0
MDc2LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3Qg
bG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgocm9vdCwgbmV3U2VsZWN0aW9uTG9jYXRpb24udW5zYWZlR2V0KCksIG5ld1NlbGVj
dGlvbkxlbmd0aC51bnNhZmVHZXQoKSkpCi0gICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgQ2hhcmFj
dGVyUmFuZ2UgbmV3U2VsZWN0aW9uUmFuZ2U7CisgICAgbmV3U2VsZWN0aW9uUmFuZ2UubG9jYXRp
b24gPSBuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKTsKKyAgICBuZXdTZWxlY3Rpb25S
YW5nZS5sZW5ndGggPSBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCk7CisKKyAgICBhdXRv
IHJlc29sdmVkUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2UpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlZFJhbmdlKS5w
dHIoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
QEAgLTQxOTIsMTYgKzQxOTYsMTUgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0
aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAgICAg
UmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3RDb250YWluZXJOb2RlID0gcm9vdE5vZGUtPmlzQ29u
dGFpbmVyTm9kZSgpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4ocm9vdE5vZGUuZ2V0KCkpIDog
cm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShyb290Q29udGFpbmVyTm9kZS5nZXQoKSwgcmFuZ2VPZkludGVy
ZXN0LmdldCgpLCByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiwgcmFuZ2VPZkludGVyZXN0TGVuZ3Ro
KTsKIAotICAgICAgICBDaGVja2VkU2l6ZSBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVy
ZXN0TG9jYXRpb24gfTsKKyAgICAgICAgQ2hlY2tlZDxDaGFyYWN0ZXJDb3VudCwgUmVjb3JkT3Zl
cmZsb3c+IG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiB9OwogICAg
ICAgICBtaWRwb2ludExvY2F0aW9uICs9IHJhbmdlT2ZJbnRlcmVzdExlbmd0aCAvIDI7CiAgICAg
ICAgIGlmIChtaWRwb2ludExvY2F0aW9uLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGF1dG8gbWlkcG9pbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgocm9vdENvbnRhaW5lck5vZGUuZ2V0KCksIG1pZHBvaW50TG9jYXRpb24u
dW5zYWZlR2V0KCksIDApOworICAgICAgICBhdXRvIG1pZHBvaW50ID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKnJvb3RDb250YWluZXJOb2RlKSwgbWlkcG9pbnRMb2NhdGlvbi51bnNhZmVH
ZXQoKSkpOwogCi0gICAgICAgIGF1dG8gbWlkcG9pbnQgPSBtaWRwb2ludFJhbmdlLT5zdGFydFBv
c2l0aW9uKCk7CiAgICAgICAgIHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IHN0
YXJ0T2ZXb3JkKG1pZHBvaW50KTsKICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJ
blNlbGVjdGlvbiA8IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0KSB7CiAgICAgICAgICAgICBzdGFydE9m
UmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBlbmRPZldvcmQobWlkcG9pbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCmluZGV4IGNhNDc5MzEwNTRiODAyNjI2ODczZTNmNTNmYjVlZTMwNTRlOTg1MTMu
LjNiOTQ2MzA0ZGZiNzUyMTE0MTNlOWY4ZDExMDdmNmY4NzY1OTlkMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KQEAgLTg2NSwxMiArODY1LDExIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKICAg
ICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZv
cndhcmRlcl0gY2hlY2tTcGVsbGluZ09mU3RyaW5nOnN0cmluZy5jcmVhdGVOU1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkuZ2V0KCldOwogICAgIGZvciAoTlNWYWx1ZSAqaW5jb21pbmdSZXN1bHQgaW4g
aW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21p
bmdSZXN1bHQgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlv
biAhPSBOU05vdEZvdW5kICYmIHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NF
UlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAg
ICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CiAgICAg
ICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVu
Z3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29taW5n
UmVzdWx0LnJhbmdlVmFsdWUpOwogICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
IH0KIApAQCAtOTM5LDExICs5MzgsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogICAgICAg
ICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgICAgIE5TVmFsdWUgKmRldGFpbFJh
bmdlQXNOU1ZhbHVlID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyUmFuZ2VdOwogICAg
ICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUpOwotICAgICAgICBOU1JhbmdlIGRldGFp
bE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFT
U0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NF
UlQoZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sb2Nh
dGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubGVu
Z3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFz
TlNWYWx1ZS5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NF
UlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKKyAgICAgICAg
Z3JhbW1hckRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsUmFuZ2VBc05T
VmFsdWUucmFuZ2VWYWx1ZSk7CiAgICAgICAgIGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9u
ID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAg
ICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJl
Y3Rpb25zXTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk1
NywyMiArOTU0LDIwIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5T
QXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKIAogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQg
KmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJl
c3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tp
bmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAg
IEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNT
RVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1
bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWlu
Z1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9ICpt
YWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNv
bnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENo
ZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlw
ZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVz
dWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1t
YXJEZXRhaWwgZGV0YWlsOwpAQCAtOTgxLDggKzk3Niw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRl
eHRDCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdl
QXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1Jh
bmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRh
aWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9
IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9
IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9ICpt
YWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0YWls
LnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFy
VXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2lu
Y29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAg
ICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk5MywzNiArOTg3
LDMxIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmlu
Y29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxp
bms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBs
YWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1
b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAg
IHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107
CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYg
KHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7
CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAg
ICAgfQpAQCAtMTA0OSwxNiArMTAzOCwxOCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiB2
b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNv
bnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1h
ckRldGFpbCkKIHsKLSAgICBOU011dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWls
Lmd1ZXNzZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1h
ckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNz
XTsKKyAgICBOU011dGFibGVBcnJheSAqY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXldOworICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAg
ICAgICAgTlNTdHJpbmcgKmd1ZXNzTlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rp
b25zIGFkZE9iamVjdDpndWVzc05TU3RyaW5nXTsKICAgICB9Ci0gICAgTlNSYW5nZSBncmFtbWFy
UmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWls
Lmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFy
RGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBOU0RpY3Rpb25hcnkqIGdyYW1tYXJEZXRhaWxE
aWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVl
IHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNl
ckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLCBOU0dy
YW1tYXJDb3JyZWN0aW9ucywgbmlsXTsKLSAgICAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdy
YW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsKKyAgICBOU1N0cmluZyAqZGVz
Y3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05T
VmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3Jh
bW1hclVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3Jh
bW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMsCisgICAgfTsKKyAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3Ry
aW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRpY3Rpb25hcnldOwogfQogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmIG1pc3NwZWxsZWRXb3JkKQpAQCAtMTE5NCw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0IGEKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3Nd
XSkgewogICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlk
YXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGgg
PiAwKSB7Ci0gICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShh
Y2NlcHRlZENhbmRpZGF0ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAg
ICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUu
cmFuZ2UubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ug
c29mdFNwYWNlUmFuZ2UgPSBOU01ha2VSYW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0g
MSwgMSk7CiAgICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5k
c1dpdGgoIiAiKSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29m
dFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZWQ1ZWQyMDQwMjk1NTc4ZWJlOTllYjgwNzc0MmQ3ZTA2
YjA0OWUzMC4uZGQ4N2FkNDlhMzVhODJlMzJkZjJiY2VjZjVkZTJmZTc1ZmI2ODQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MjEsMTAgKzgy
MSw5IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKW5zcmFuZ2UKIAogLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFu
Z2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZl
VG8pcmFuZ2VJc1JlbGF0aXZlVG8KIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9N
QVgpCisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc3Jhbmdl
KTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobnNy
YW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0
aCA+IElOVF9NQVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2Uu
bG9jYXRpb247CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0
aXZlVG86OkVkaXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1wdGlv
biBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMg
dGhhdApAQCAtODM2LDcgKzgzNSw3IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZl
cnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgICAg
IGF1dG8qIGVsZW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2UubG9j
YXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVt
ZW50KSwgKnJhbmdlKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKHJhbmdlSXNSZWxhdGl2ZVRvID09
IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpAQCAtODQ0LDEwICs4NDMsOSBAQCAt
IChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3Jh
bmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91
bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFy
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBwYXJhZ3Jh
cGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwogCi0gICAgYXV0byBw
YXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoeyB7IHJvb3ROb2Rl
LCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0
SW5kZXggKyBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBzY29w
ZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29u
dGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCks
IFdURk1vdmUoc2NvcGVFbmQpIH0sICpyYW5nZSkpOwogfQogCiAtIChET01SYW5nZSAqKV9jb252
ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVkZGYyM2VjZjNjYmE1YjliYzllYTlmMjZl
ZWRjZjAzNzk5NTY4OGMuLjZmOTFlZmI5YTkwMWFlMWNjYmFlNTZjOWIyZmQ5OWMxNDA5OTUyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTcyNzgs
MTIgKzcyNzgsOSBAQCBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4
dENoZWNraW5nVHlwZShOU1RleHRDaGVja2luZ1R5cGUgdHlwZQogCiBzdGF0aWMgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jl
c3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSByZXN1
bHRSYW5nZSA9IG5zUmVzdWx0LnJhbmdlOwotCiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hlY2tpbmdUeXBlKG5zUmVz
dWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgcmVzdWx0
LnJhbmdlID0gKldlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShuc1Jlc3VsdC5yYW5nZSk7CiAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDhkZjFjNzIxYmI2OGY2
ZTAxMDE3ZTY1NTI0YzkzYzBkZmVlMjg4NDYuLjQ2OTc5ZDcxYWZmNzUxOWFlMGE0YWVmOTIxZjlk
YzllOGE1MDQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNzkwLDE0ICs3OTAsMTkgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4
dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAgICAgICAgaWYgKGVudW1EZXRhaWxzT2JqLT5OZXh0
KDEsICZkZXRhaWxPYmosICZmZXRjaGVkKSAhPSBTX09LKQogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWls
T2JqLT5sZW5ndGgoJmRldGFpbC5sZW5ndGgpKSkKKyAgICAgICAgaW50IGxlbmd0aDsKKyAgICAg
ICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxlbmd0aCgmbGVuZ3RoKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxvY2F0aW9uKCZkZXRhaWwu
bG9jYXRpb24pKSkKKyAgICAgICAgaW50IGxvY2F0aW9uOworICAgICAgICBpZiAoRkFJTEVEKGRl
dGFpbE9iai0+bG9jYXRpb24oJmxvY2F0aW9uKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgQlN0cmluZyB1c2VyRGVzYzsKICAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPnVz
ZXJEZXNjcmlwdGlvbigmdXNlckRlc2MpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOworICAgICAgICBkZXRhaWwucmFuZ2UubG9jYXRpb24g
PSBsb2NhdGlvbjsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxlbmd0aCA9IGxlbmd0aDsKICAgICAg
ICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFN0cmluZyh1c2VyRGVzYywgU3lzU3RyaW5nTGVu
KHVzZXJEZXNjKSk7CiAKICAgICAgICAgQ09NUHRyPElFbnVtU3BlbGxpbmdHdWVzc2VzPiBlbnVt
R3Vlc3Nlc09iajsKQEAgLTgyNiw3ICs4MzEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjbwog
ICAgICAgICBndWVzc2VzQlNUUnMuYXBwZW5kKGd1ZXNzLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IEJTdHJpbmcgdXNlckRlc2NyaXB0aW9uQlNUUihkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKLSAg
ICBlZC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwg
ZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVz
c2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXplKCkpOworICAgIGVkLT51cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoQlN0cmluZyhzdHJpbmcpLCBkZXRhaWwucmFu
Z2UubG9jYXRpb24sIGRldGFpbC5yYW5nZS5sZW5ndGgsIHVzZXJEZXNjcmlwdGlvbkJTVFIsIGd1
ZXNzZXNCU1RScy5kYXRhKCksIChpbnQpZ3Vlc3Nlc0JTVFJzLnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGd1ZXNzZXNCU1RScy5zaXplKCk7IGkrKykKICAgICAgICAgU3lz
RnJlZVN0cmluZyhndWVzc2VzQlNUUnNbaV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAppbmRleCBkNzA1M2VjMzIwNGNhYWVlMGU0OWE4MWUxNWJlMTEyODM0OThjZGM0Li4xN2Fl
NWIwYTU2OGM2Mzc1NTdhNDUyYzU1YWQzMzI4YjkzNzFiZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcApAQCAtNzc2MSwyMyArNzc2MSwyMSBAQCBIUkVTVUxUIFdlYlZpZXc6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZyhVSU5UIGxvY2F0aW9uLCBVSU5UIGxl
bmd0aAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSW50
UmVjdCByZXN1bHRJbnRSZWN0OwotICAgIHJlc3VsdEludFJlY3Quc2V0TG9jYXRpb24oSW50UG9p
bnQoMCwgMCkpOwotICAgIHJlc3VsdEludFJlY3Quc2V0U2l6ZShJbnRTaXplKDAsIDApKTsKLSAg
ICAKLSAgICBpZiAobG9jYXRpb24gPiBJTlRfTUFYKQorICAgIGF1dG8mIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIGlm
IChsZW5ndGggPiBJTlRfTUFYIHx8IGxvY2F0aW9uICsgbGVuZ3RoID4gSU5UX01BWCkKLSAgICAg
ICAgbGVuZ3RoID0gSU5UX01BWCAtIGxvY2F0aW9uOwotICAgICAgICAKLSAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCgpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKworICAgIENoYXJhY3RlclJhbmdlIGNoYXJhY3Rl
clJhbmdlOworICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgY2hh
cmFjdGVyUmFuZ2UubGVuZ3RoID0gbGVuZ3RoOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqZWxlbWVudCksIGNoYXJhY3RlclJhbmdlKSk7CiAKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICAKKwogICAgIEludFJlY3QgcmVjdCA9IGZy
YW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKLSAgICByZXN1bHRJ
bnRSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOworICAgIEludFJl
Y3QgcmVzdWx0SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsK
IAogICAgIHJlc3VsdEludFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA0ODE4MDE2Y2U0NzZkNmU3Nzg5YzZhMGRlY2IxZGM3MzJlMzU0ZDExLi5mZWEyMjg2Y2NhZGVm
YjRkMzJmMjkyNzc5MTlhYzQ2OGYyMDRkNzUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAt
MDMtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5k
ZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sOgorICAgICAgICBVcGRhdGVkIHRvIGV4cGVjdCB0
ZXh0TWFya2VyRm9ySW5kZXggdG8gY2xhbXAgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIHNvbWV0aGlu
ZyBpbnZhbGlkLgorCisgICAgICAgICogZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hh
cmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvbWFjL2lu
cHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWw6CisgICAgICAgIFVwZGF0
ZWQgdGVzdCBvdXRwdXQgdG8gaW5jbHVkZSB3aGF0IGlzIGJlaW5nIHRlc3RlZCwgbm90IGp1c3Qg
dGhlIHRlc3QgcmVzdWx0LgorICAgICAgICBVcGRhdGVkIHRlc3QgcmVzdWx0cyB0byBleHBlY3Qg
Y2xhbXBpbmcgcmF0aGVyIHRoYW4gYW4gZW1wdHkgcmVjdGFuZ2xlLCBmb3IgdmFsdWVzCisgICAg
ICAgIHRoYXQgYXJlIG91dCBvZiBib3VuZHMuIEFsc28gZ290IHJpZCBvZiBkdW1waW5nIG9mIGVp
ZHRpbmcgY2FsbGJhY2tzIHNpbmNlIHRoZXJlIGlzCisgICAgICAgIG5vIHJlYXNvbiB0byBpbmNs
dWRlIHRoZW0gaW4gdGhpcyB0ZXN0LgorCisgICAgICAgICogZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbDoK
KyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnM6IFNpbmNlIG91ciBvbGRlc3Qgc3VwcG9ydGVkIHJlbGVhc2UgaXMgTW9qYXZlLCBkZWxl
dGVkCisgICAgICAgIGFsbCBydWxlcyB3aXRoIFNpZXJyYSBvciBIaWdoU2llcnJhIGNvbmRpdGlv
bmFscyBzaW5jZSB0aG9zZSBjb25kaXRpb25zIGFyZSBhbHdheXMgZmFsc2UsCisgICAgICAgIGFu
ZCByZW1vdmVkIGFueSBjb25kaXRpb25hbHMgdGhhdCBzYWlkIFNpZXJyYSssIEhpZ2hTaWVycmEr
LCBvciBNb2phdmUrIGJlY2F1c2UgdGhvc2UKKyAgICAgICAgY29uZGl0aW9ucyBhcmUgYWx3YXlz
IHRydWUuIE9uZSB0ZXN0LCBmaXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCwg
aGFkIHJlc3VsdHMKKyAgICAgICAgY2hlY2tlZCBpbiB0aGF0IHdlcmUgY29ycmVjdCBmb3IgTW9q
YXZlIGJ1dCBpbmNvcnJlY3QgZm9yIENhdGFsaW5hLiBGb3IgdGhhdCB0ZXN0LCB0aGUKKyAgICAg
ICAgcmVzdWx0cyBhcmUgbm93IGNvcnJlY3QgZm9yIENhdGFsaW5hLCBzbyB1cGRhdGVkIGV4cGVj
dGF0aW9ucyBmb3IgdGhhdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9uczogRGl0dG8uIEFsc28gc29tZSB0ZXN0cyB0aGF0IGNsYWltZWQgSW1hZ2VPbmx5RmFp
bHVyZQorICAgICAgICBhcmUgZmxha3kgYW5kIHNvbWV0aW1lcyBwYXNzaW5nLCBzbyBtYXJrZWQg
dGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgSW1hZ2VPbmx5RmFpbHVyZS4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4gQWxzbyBzb21lIHRlc3RzIG1hcmtl
ZCBGYWlsdXJlIHdlcmUgZmxha3kgYW5kCisgICAgICAgIHNvbWV0aW1lcyBwYXNzaW5nLCBzbyBt
YXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgRmFpbHVyZS4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICBUaGlzIGlzIGFscmVhZHkgYSBNYWMt
c3BlY2lmaWMgdGVzdDsgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGhhdmUgYW4gYWRkaXRpb25h
bAorICAgICAgICBNYWMtc3BlY2lmaWMgb3ZlcnJpZGRlbiByZXN1bHQgc2luY2UgdGhlIGJhc2Ug
cmVzdWx0IGlzIGFscmVhZHkgTWFjLXNwZWNpZmljLgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLTAwMS5odG1sOgorICAgICAgICBVcGRhdGVkIHRoaXMgdGVzdCB0byBleHBl
Y3QgdGhlIGVtcHR5IHN0cmluZywgbm90ICJ1bmRlZmluZWQiIGZvciBhbiBvdXQgb2YgcmFuZ2Us
CisgICAgICAgIHNpbmNlIHdlIG5vdyBjbGFtcCBpbnN0ZWFkIG9mIGZhaWxpbmcgaW4gc3VjaCBj
YXNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWw6CisgICAgICAgIERp
dHRvLgorCiAyMDIwLTAzLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbjogZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtc3Zn
LWNhbnZhcy0yeC5odG1sIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5IG9uIGlPUyBFV1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4
LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3Rl
ZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3YjljNTg3MmVmZTFkZTcyYy4uMjM0
ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5k
cy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKQEAg
LTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0
TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IG91dCBvZiBi
b3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFz
aCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAyXjMxCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRN
YXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNlCitQQVNTIGl0ZW0xLmlzVGV4dE1h
cmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIHRydWUK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgt
b3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sCmluZGV4IDBhYjJm
MTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEuLjZhYzdmOWY2NzJjYjY4NTE1ZTA3
YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQt
b2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwxMiBAQCB0ZXh0CiAKIDxzY3JpcHQ+
CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRl
eCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBu
b3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMSIpOwogCiAgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAgICAgICB2YXIgaXRlbTEgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgc2hvdWxkQmVGYWxz
ZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5
OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaXRlbTEuaXNUZXh0TWFy
a2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsKICAgICB9
CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQv
Zmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2QzY2M2NDQ5NzQzYmRiNTZlMDM5YTIu
LmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2NmIzYmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBs
YWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJz
dHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsMTcg
QEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2YgQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmll
d0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAx
MjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4
Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAs
NTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAs
MCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAo
MCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEs
MCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1
NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4
KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6
ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwx
OCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAo
MCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQor
Zmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdp
dGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgp
CitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgp
CitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAs
MTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAs
MTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAo
NTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9m
aXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbAppbmRleCA3
OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2MGRlLi42MmNkYzliODI2Zjk2NWY4
NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBs
YWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci1pZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdDYWxsYmFja3Mo
KTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9
CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAw
IH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1NgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjEsNDAgKzE1LDQyIEBA
IGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRlbS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNvbGVfbWVzc2FnZXMuYXBwZW5k
Q2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9nUmVjdChjb21tZW50LCBzdGFy
dCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQgKyAiOiAoIiArIHN0YXJ0ICsg
IiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICArIHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0aCkgKyAiKSIpOworICAgIH0K
KwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5IHsKLQkJCiAJCQl0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJlZ2lubmluZyAK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEs
IDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsgLy8gY2FyZXQg
YXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJv
bGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0IGNoYXJhY3Rl
cgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
NSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDYp
KTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVy
LmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCA0Mjk0
OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAwKSk7
IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAx
KSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJCXdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAorCQkJbG9nUmVjdCgiY2FyZXQgYXQg
dGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0
IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5l
IiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAxMDAp
OworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dSZWN0KCJsYXN0
IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAyKTsK
KwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0
IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsKKwkJCWxvZ1Jl
Y3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUg
d2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0
KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJCWxvZ1JlY3Qo
Im91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOworCQkJbG9nUmVj
dCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJCQlsb2dSZWN0
KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3Mjk1KTsKIAkJ
fSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOwog
CQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOwog
CQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwogCQlkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2UgewogCQlkb2N1bWVudC53cml0ZSgi
KGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hh
cmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRleCBhY2ZkNTJmMGI5NDhhNjUzZmMw
NmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0
NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBl
Y3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcyLDAsMTgK
LTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1
NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTgsNTcy
LDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBhdCB0aGUg
YmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNo
YXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTog
KDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMTAwKSwg
KDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4KQorbGFz
dCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMiks
ICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgsMTgpCitm
aXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAs
NTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgsMTgpCitm
aXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5NSksICgx
OCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAo
NTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDAp
LCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEp
LCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQy
OTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxl
ZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3MWNkMmZiMGRiYTYzMGYyMWUuLmU1
YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZhOTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVubmVyLmR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7IG1hcmdpbjog
MTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMzICsxNiwzNiBAQCBib2R5IHsgbWFy
Z2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0p
OwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3RhcnQsIGxlbmd0aCkK
KyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCArICIsIiArIGxlbmd0
aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9CisKIAlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1l
bnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRl
eHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDApKTsg
Ly8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsgLy8gY2FyZXQgYXQgdGhl
IGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5m
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJ
bG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkp
OyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDYpKTsgLy8g
Zmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1
KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91
dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsgLy8gLSItCi0JCQlsb2co
dGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8v
IC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJl
Z2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJh
Y3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwg
MCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAxMDApOworCQkJ
bG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJh
Y3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxv
Z1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUi
LCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZp
cnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0aG91
dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQg
b2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBv
ZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOworCQkJbG9nUmVjdCgib3V0
IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJCQlsb2dSZWN0KCJvdXQg
b2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRj
aCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOwogCQl9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWIz
ZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNlMC4uODFmZjFkYTMwNzFlYjgxNDAy
MTk4MjAxNzdjZTZkYzY0MjdhNmIyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIsOSArOTIsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQvcmVhZHlTdGF0ZS8w
MDYuaAogIyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIFdLMQog
bG9hZGVyL25hdmlnYXRpb24tcG9saWN5IFsgU2tpcCBdCiAKLVsgU2llcnJhIF0gYWNjZXNzaWJp
bGl0eS9tYWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBh
Y2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktc2Vzc2lvbi12NC5odG1sIFsgU2tpcCBdCi0KICMg
PGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIHlldC4KIHdlYmtpdC5vcmcvYi8x
NTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzOCwyNiArMjM1LDEx
IEBAIHdlYmtpdC5vcmcvYi8xNTUwNjcgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJv
cnQtcHJpdmF0ZS5odG1sIFsgUGFzcyBDcmFzCiAKIHdlYmtpdC5vcmcvYi8xNzIwOTIgWyBEZWJ1
ZyBdIGZhc3QvcGFyc2VyL2Fkb3B0aW9uLWFnZW5jeS11bmxvYWQtaWZyYW1lLTQuaHRtbCBbIFBh
c3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS92aWRlby13aXRoLWh0dHAtdXJsLWFsbG93ZWQtYnktY3NwLW1lZGlhLXNy
Yy1zdGFyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJy
YSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVtb3RlLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAv
dGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc3NhbWVvcmlnaW4uaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0
cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvbWVkaWEvYXV0
b3BsYXktaWYtYXVkaW8taXMtcGxheWluZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLXdlYmtpdC5v
cmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Uu
aHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQot
d2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFz
LXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3QuaHRtbCBbIFBhc3MgVGltZW91dCBd
Ci13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52
YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlk
ZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmcuaHRtbCBbIFBhc3MgVGltZW91dCBdCiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0eS54bWwgWyBTa2lwIF0KIAot
IyByZGFyOi8vcHJvYmxlbS8yMDAwMTk4NQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotCiAjIHJkYXI6Ly9wcm9ibGVtLzM0
NzE2MTYzIEJyZWFrcyBzdWJzZXF1ZW50IHRlc3RzIHVzaW5nIHJlc3BvbnNlLnhtbAotWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmFuZ2UtdGVzdC5odG1sIFsgU2tp
cCBdCisjIEZJWE1FOiBTaG91bGQgYmUgZml4ZWQgaW4gQ2F0YWxpbmE7IG5lZWQgdG8gcmUtZW5h
YmxlLgoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yYW5nZS10ZXN0Lmh0bWwgWyBTa2lwIF0K
IAogIyBXSzEgZG9lcyBub3Qgc3VwcG9ydCBzeW5jIFhIUiByZWRpcmVjdGlvbnMgYXMgZG9lcyBX
SzIKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5z
ZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1zeW5jLXhoci1pbi1tYWluLWZyYW1lLmh0
bWwgWyBTa2lwIF0KQEAgLTQxMyw3ICszOTUsNyBAQCBodHRwL3Rlc3RzL211bHRpcGFydC9tdWx0
aXBhcnQtYXN5bmMtaW1hZ2UuaHRtbAogCiBmYXN0L3J1YnkvcnVieS1leHBhbnNpb24tY2prLTIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi1bIFNpZXJyYSsgXSBjc3MzL21hc2tpbmcvbWFz
ay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL21h
c2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xNTIxNzggZmFzdC9yZXBsYWNlZC9yZXBsYWNlZC1icmVha2luZy5o
dG1sIFsgRmFpbHVyZSBdCiAKQEAgLTUyMCwxOSArNTAyLDE5IEBAIGZhc3QvcmVwYWludC92ZXJ0
aWNhbC10ZXh0LXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU4
NTg1IHdlYmdsL3dlYmdsLWJhY2tpbmctc3RvcmUtc2l6ZS11cGRhdGUuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI0ODE4NzEyPgotWyBTaWVycmErIF0gZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KK2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBbIFBhc3MgVGltZW91dCBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI2Mzk5NTk4PgotWyBTaWVycmErIF0gZWRpdGluZy9zcGVs
bGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJlIF0KLVsgU2llcnJhKyBdIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQor
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJlIF0KK2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9iYWJseSBzdGls
bCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5CiAjIHRvIGhhdmUgcGxhdGZvcm0gc3Bl
Y2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiBXSzEgYW5kIFdLMi4KLVsg
U2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZh
aWx1cmUgXQotWyBTaWVycmErIF0gYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwgWyBG
YWlsdXJlIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZh
aWx1cmUgXQorYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwgWyBGYWlsdXJlIF0KIAog
IyByZGFyOi8vcHJvYmxlbS8yNjQ3ODI5NgotWyBTaWVycmErIF0gc3ZnL2hpeGllL3RleHQvMDAz
Lmh0bWwgWyBGYWlsdXJlIF0KK3N2Zy9oaXhpZS90ZXh0LzAwMy5odG1sIFsgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8xNTk4OTMgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2V2ZW50LXJlYWR5c3RhdGVjaGFuZ2UtbG9hZGVkLmFueS5qcyBbIFBhc3MgRmFp
bHVyZSBdCiAKQEAgLTU0MSwxMyArNTIzLDEzIEBAIHdlYmtpdC5vcmcvYi8xNjAxMDEgdXNlcnNj
cmlwdHMvd2luZG93LW9uZXJyb3ItZm9yLWlzb2xhdGVkLXdvcmxkLTMuaHRtbCBbIFBhc3MKIHdl
YmtpdC5vcmcvYi8xMDU4NzAgWyBEZWJ1ZyBdIHdlYmF1ZGlvL2F1ZGlvbm9kZS1jb25uZWN0LW9y
ZGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNzcyMzcxOAotWyBT
aWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvY2hpbGQtdHJhbnNmb3JtLXdpdGgt
YW5jaG9yLXBvaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Nv
bXBvc2l0aW5nL2NoaWxkLXRyYW5zZm9ybS13aXRoLWFuY2hvci1wb2ludC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjEwNTYgZ2FtZXBhZCBbIFNraXAgXQogCi13
ZWJraXQub3JnL2IvMTYyNTkyIFsgU2llcnJhKyBdIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNr
ZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzE2MjU5MSBbIFNpZXJyYSsgXSBjc3MzL2ZpbHRlcnMvYmFja2Ryb3Av
YmFja2Ryb3AtZmlsdGVyLXdpdGgtcmVmbGVjdGlvbi1hZGQtYmFja2Ryb3AuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYyNTkxIFsgU2llcnJhKyBdIGNzczMv
ZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLXZhbHVlLWNo
YW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjI1OTIg
Y3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLXJlZmxlY3Rpb24uaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYyNTkxIGNzczMvZmls
dGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLWFkZC1iYWNrZHJv
cC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjI1OTEgY3Nz
My9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLXJlZmxlY3Rpb24tdmFsdWUt
Y2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYx
MzYwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9icm93c2lu
Zy10aGUtd2ViL2hpc3RvcnktdHJhdmVyc2FsL3BlcnNpc3RlZC11c2VyLXN0YXRlLXJlc3RvcmF0
aW9uL3Njcm9sbC1yZXN0b3JhdGlvbi1mcmFnbWVudC1zY3JvbGxpbmctY3Jvc3Mtb3JpZ2luLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC01NzYsNyArNTU4LDcgQEAgd2Via2l0Lm9yZy9iLzE2
NDkzMyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtb3ZlcmxhcC1leHRlbnQtcnRsLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1
NDEgY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1vdmVyZmxvdy5odG1sIFsgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8xNTQ2MTIgWyBTaWVycmErIF0gY29tcG9zaXRpbmcvcmVwYWludC9maXhl
ZC1iYWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8x
NTQ2MTIgY29tcG9zaXRpbmcvcmVwYWludC9maXhlZC1iYWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NTU4OSBwb2ludGVyLWxvY2svbG9jay1s
b3N0LW9uLWVzYy1pbi1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0KIApAQCAtNjM0LDggKzYxNiw2
IEBAIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTc1MzQ1
IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1zY3JvbGxpbmctY3Jhc2guaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzU1NTQgWyBTaWVycmEgXSBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWlmcmFtZS1sZWdhY3kuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcv
Yi8xNzQyMTggc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWxpc3QtcHJvcGVydHktaW5zdGFuY2Vz
LnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzI4Nzcgc3ZnL2FzLWltYWdl
L3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWJhY2tncm91bmQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCkBAIC02NDksMjMgKzYyOSwyMyBAQCB3ZWJraXQub3JnL2IvMTc2OTIwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3ItcHJvcGFnYQog
d2Via2l0Lm9yZy9iLzE3NTg4NiBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0
YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjkyMDE2OTg+
IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkNvcmVHcmFwaGljczogQ0dEYXRh
UHJvdmlkZXJDb3B5RGF0YSArIDM3NwotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL3dlYmds
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtcG90ZW50aWFsbHktc3Vic2FtcGxlZC1p
bWFnZS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxseS1zdWJzYW1wbGVkLWltYWdlLmh0bWwgWyBDcmFzaCBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBSRUdSRVNTSU9OPyAoRm9udFBhcnNlci0x
OTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0qIGFuZCBzdmcvVzNDLVNWRy0xLjEvdGV4
dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEv
Zm9udHMtZWxlbS0wNC1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVs
ZW0tMDQtYi5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzE4OTM3MTQ+IFJF
R1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L211bHRpcGxlLWNvZGV1bml0LXZlcnRpY2Fs
LXVwcmlnaHQuaHRtbCBpcyBmYWlsaW5nIG9uIFdLMQotWyBIaWdoU2llcnJhKyBdIGZhc3QvdGV4
dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK2Zhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJpZ2h0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzE4OTUxOTI+IER1bXBS
ZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkltYWdlSU8uZnJhbWV3b3JrOiBJSU9EaWN0
aW9uYXJ5OjpnZXRCb29sRm9yS2V5ICsgMAotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbWlz
Yy9zbG93LWxvYWRpbmctYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9t
aXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzMzNTIyNDIwPiBDcmFzaDogTXVsdGlwbGUgTGF5b3V0IHRlc3QgaW4gZmFzdC9l
dmVudHMgYW5kIGZhc3QvZm9ybXMgYW5kIGZhc3QvdGV4dCBhcmUgY3Jhc2hpbmcKLVsgSGlnaFNp
ZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWNvZGUuaHRtbCBbIENyYXNoIF0KLVsg
SGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWtleS5odG1sIFsgQ3Jhc2gg
XQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tleWRvd24tbGVmdHJpZ2h0LWtleXMuaHRt
bCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2Zvcm1zL3RleHRhcmVhLW1heGxlbmd0
aC5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvdGV4dC9zeXN0ZW0tZm9udC1m
YWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVudHMva2V5Ym9hcmRldmVudC1j
b2RlLmh0bWwgWyBDcmFzaCBdCitmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWtleS5odG1sIFsg
Q3Jhc2ggXQorZmFzdC9ldmVudHMva2V5ZG93bi1sZWZ0cmlnaHQta2V5cy5odG1sIFsgQ3Jhc2gg
XQorZmFzdC9mb3Jtcy90ZXh0YXJlYS1tYXhsZW5ndGguaHRtbCBbIENyYXNoIF0KK2Zhc3QvdGV4
dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQogCiB3ZWJraXQub3Jn
L2IvMTc5Nzc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2ZpcmluZy1ldmVu
dHMtaHR0cC1uby1jb250ZW50LWxlbmd0aC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtNzMx
LDMyICs3MTEsMzIgQEAgd2Via2l0Lm9yZy9iLzE4NzU1NyBbIERlYnVnIF0gbWVkaWEvbWVkaWEt
ZnJhZ21lbnRzL1RDMDA5MS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODc3
MTEgWyBEZWJ1ZyBdIHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEtYi5zdmcgWyBQYXNzIEZhaWx1
cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MjYyNTY1Nz4KLVsgTW9qYXZlKyBdIGZhc3QvaW1h
Z2VzL2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNraXAgXQotWyBN
b2phdmUrIF0gZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3VuZC1pbWFnZS1yZXBlYXRl
ZC5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1iYWNr
Z3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2FzeW5j
LWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsg
XSBmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRlLXZpZXdwb3J0Lmh0
bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0
ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvZGVjb2RlLXJl
bmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMv
ZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9q
YXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxs
LWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL3Nwcml0ZS1zaGVl
dC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1wYWlu
dC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2Ut
YmFja2dyb3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9hc3lu
Yy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2FzeW5j
LWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdl
cy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRlLXZpZXdwb3J0Lmh0bWwgWyBTa2lwIF0K
K2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQor
ZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFz
dC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lw
IF0KK2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWlt
YWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL3Nwcml0ZS1zaGVldC1pbWFnZS1kcmF3Lmh0
bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI2Mjc1NjI+Ci1bIE1vamF2ZSsgXSBt
ZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1hdXRvcGxheS1ub3QtYWxsb3dlZC1zb3Vy
Y2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gbWVkaWEvdmlkZW8tcmVzdHJpY3RlZC1pbnZp
c2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQuaHRtbCBbIFNraXAgXQorbWVkaWEvdmlkZW8tcmVz
dHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQtc291cmNlLmh0bWwgWyBTa2lw
IF0KK21lZGlhL3ZpZGVvLXJlc3RyaWN0ZWQtaW52aXNpYmxlLWF1dG9wbGF5LW5vdC1hbGxvd2Vk
Lmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI3MzYyMTM+Ci1bIE1vamF2ZSsg
XSBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCi1bIE1v
amF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy5odG1sIFsgRmFpbHVy
ZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMu
aHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1s
aXN0Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGRpc3BsYXlsaXN0cy9yZXBsYXktc2tp
cC1jbGlwcGVkLXJlY3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2NhbnZhcy1kaXNw
bGF5LWxpc3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1z
aGFkb3cuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFu
c2Zvcm1zLmh0bWwgWyBGYWlsdXJlIF0KK2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC5o
dG1sIFsgRmFpbHVyZSBdCitkaXNwbGF5bGlzdHMvcmVwbGF5LXNraXAtY2xpcHBlZC1yZWN0Lmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDYxMSBjb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1vdmVybGFwLWV4dGVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8
cmRhcjovL3Byb2JsZW0vNDI5MDQ3ODA+Ci1bIE1vamF2ZSsgUmVsZWFzZSBdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2Rlcml2ZV9iaXRzX2tleXMvaGtkZi5o
dHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQorWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cy9oa2RmLmh0dHBz
Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODkwODcgc3ZnL2FuaW1h
dGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51bWVyaWMtcHJlY2lzaW9uLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCkBAIC03NzIsNyArNzUyLDcgQEAgd2Via2l0Lm9yZy9iLzE5MTM1NyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L3Njcm9sbC1iZWhhdmkK
IAogd2Via2l0Lm9yZy9iLzE4OTkwOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Jl
c291cmNlLXRpbWluZy9yZXNvdXJjZV90aW1pbmcud29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzE4OTc1NiBbIE1vamF2ZSsgXSBjb21wb3NpdGluZy9maWx0ZXJzL29wYWNp
dHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9yLmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4OTc1NiBjb21wb3NpdGluZy9maWx0ZXJz
L29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9yLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTg5NzIzIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXhzbC1yZWRpcmVjdC1CTE9DS0VELmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCkBAIC03ODIsNyArNzYyLDcgQEAgd2Via2l0Lm9yZy9iLzE5MDgzMiBbIERlYnVn
IF0gZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0ZWQtY29udHJvbHMuaHQKIAog
d2Via2l0Lm9yZy9iLzE5MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1m
cmFtZS1vcHRpb25zLW11bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5n
L2lmcmFtZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzE4NjQwNiBjb21wb3NpdGluZy9pZnJhbWVzL2Rpc3BsYXktbm9uZS1zdWJmcmFt
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdl
cy9hbmltYXRlZC1naWYtbG9vcC1jb3VudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xOTAzODMgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtcG5nLWxvb3AtY291bnQu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC03OTAsNyArNzcwLDcgQEAgd2Via2l0
Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kaWZmZXJlbnQtZGVzdC1z
aXplLmh0bWwgWyBQYXNzIEkKIAogd2Via2l0Lm9yZy9iLzE5MTYzOSBpbXBvcnRlZC9ibGluay9j
b21wb3NpdGluZy9zcXVhc2hpbmcvc3F1YXNoaW5nLWludG8tYW5jZXN0b3ItcGFpbnRlZC1sYXll
ci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MDYyNyBb
IE1vamF2ZSsgXSBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdl
LW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5MDYyNyBj
b21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQu
aHRtbCAgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTcyMzg0IGZhc3QvaGlkcGkv
aGlkcGktbG9uZy1wYWdlLXdpdGgtaW5zZXQtZWxlbWVudC5odG1sIFsgU2tpcCBdCiAKQEAgLTgy
NiwxMCArODA2LDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvcmFuZ2Utc2V0CiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS9kaXNwbGF5LW5vbmUtaW5saW5lLWltZy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQyNjI1NjU3PiBS
RUdSRVNTSU9OIChNb2phdmUpOiAxMiBmYXN0L2ltYWdlcyB0ZXN0cyB0aW1pbmcgb3V0IG9uIFdL
MQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgU2tp
cCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJpZnkuaHRtbCBb
IFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgU2tpcCBdCitm
YXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJpZnkuaHRtbCBbIFNraXAgXQogCi13ZWJraXQu
b3JnL2IvMjAwMDAyIFsgTW9qYXZlKyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5k
ZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcv
Yi8yMDAwMDIgWyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2It
YmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0KIAogIyBTa2lwIElzTG9nZ2VkSW4KIGh0
dHAvdGVzdHMvaXMtbG9nZ2VkLWluLyBbIFNraXAgXQpAQCAtODQ5LDcgKzgyOSw3IEBAIHdlYmtp
dC5vcmcvYi8yMDM1MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNp
emluZy9keW5hbWljLWF2YWlsCiAjIFN0YWxlLXdoaWxlLXJldmFsaWRhdGUgaXMgbm90IHN1cHBv
cnRlZCBvbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUt
d2hpbGUtcmV2YWxpZGF0ZSBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjA1MzE0IFsgQ2F0YWxp
bmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQu
aHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rm
b3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5n
L21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBdCiAKQEAgLTk2Myw0ICs5NDMsNCBAQCB3
ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1cnNvci1uby1tb3VzZW1vdmUu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDk1NjAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jl
c3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0
L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDk2MjEg
ZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBhY2IxZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1YWVkZDcxMWFhZTlkLi45ODRh
NGQwYzI1NTk1ZjljYjg2ZDA3ZmU4ZjRmYjY4ZGQ0ZDM0MThhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMywyNiArMzMsMTQgQEAgZmFz
dC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUtaW4tc3ViZnJhbWVzLmh0bWwg
WyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sIFsgUGFz
cyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRt
bCBbIFBhc3MgXQogCi1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBQYXNz
IF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25WNC5o
dG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5
RXJyb3IuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb25WMy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3Ns
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gaHR0
cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUuaHRtbCBbIFNraXAgXQotWyBT
aWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2Fw
cGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdBZGRyZXNzQ2hhbmdlRXZlbnRFcnJvcnNWMy5odHRwcy5o
dG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGFjY2Vzc2liaWxpdHkvbWFjL2FwcGxlLXBheS1sYWJl
bHMuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkv
QXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBodHRwL3Rlc3Rz
L3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVy
cmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNS5odG1sIFsgU2tp
cCBdCi1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktc2Vzc2lvbi12
NC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBQYXNzIF0KIAogZmFz
dC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy5odG1sIFsgUGFz
cyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0LXJlY3RzLWhl
YWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0KIAotWyBTaWVycmErIF0gaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdCBbIFBhc3MgXQotWyBTaWVycmErIF0gaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5
bWVudHJlcXVlc3QgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdCBbIFBhc3Mg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9w
YXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0LWF0
dHJpYnV0ZS1jcm9zcy1vcmlnaW4tYmMtY29udGFpbmVycy5odHRwcy5odG1sIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVu
dC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvbm8tYXR0cmlidXRlLWNyb3NzLW9yaWdpbi1i
Yy1jb250YWluZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50
cmVxdWVzdC9yZW1vdmluZy1hbGxvd3BheW1lbnRyZXF1ZXN0Lmh0dHBzLnN1Yi5odG1sIFsgU2tp
cCBdCkBAIC03MCw3ICs1OCw3IEBAIGFwcGxpY2F0aW9ubWFuaWZlc3QvIFsgUGFzcyBdCiAKIHdl
YmtpdC5vcmcvYi8xODcxODMgaHR0cC90ZXN0cy9zZWN1cml0eS9wYXN0ZWJvYXJkLWZpbGUtdXJs
Lmh0bWwgWyBQYXNzIF0KIAotWyBNb2phdmUrIF0gZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11
cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBQYXNzIF0KK2Zhc3QvY2FudmFz
L3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgUGFz
cyBdCiAKIGZhc3QvbWlzYy92YWxpZC1wcmltYXJ5LXNjcmVlbi1kaXNwbGF5SUQuaHRtbCBbIFBh
c3MgXQogCkBAIC03OSwxMSArNjcsMTEgQEAgaHR0cC90ZXN0cy93ZWJBUElTdGF0aXN0aWNzIFsg
U2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODQ1Njkgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Ry
YW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLVsg
TW9qYXZlKyBdIGZhc3QvZXZlbnRzL2RldGVjdC1jYXBzLWxvY2suaHRtbCBbIFBhc3MgXQotWyBN
b2phdmUrIF0gZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2NhcHMtbG9jay1pbmRpY2F0b3It
c2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQt
YnV0dG9uLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZm9ybXMvYXV0by1maWxsLWJ1
dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUtdmlzaWJsZS13aGVuLWF1dG8t
ZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUuaHRtbCBbIFBhc3MgXQotWyBN
b2phdmUrIF0gZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1hZnRlci1jYXBzLWxvY2stdG9n
Z2xlZC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTk0MTcwIFsgTW9qYXZlKyBSZWxlYXNl
IF0gZmFzdC9yZXBhaW50L3BsYWNlaG9sZGVyLWFmdGVyLWNhcHMtbG9jay1oaWRkZW4uaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kZXRlY3QtY2Fwcy1sb2NrLmh0bWwgWyBQYXNz
IF0KK2Zhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3Vs
ZC1iZS12aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRv
bi5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2F1dG8tZmlsbC1idXR0b24vY2Fwcy1sb2NrLWlu
ZGljYXRvci1zaG91bGQtbm90LWJlLXZpc2libGUtd2hlbi1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3
b3JkLWJ1dHRvbi1pcy12aXNpYmxlLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvcGFzc3dvcmQt
c2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRvZ2dsZWQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9y
Zy9iLzE5NDE3MCBbIFJlbGVhc2UgXSBmYXN0L3JlcGFpbnQvcGxhY2Vob2xkZXItYWZ0ZXItY2Fw
cy1sb2NrLWhpZGRlbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogZmFzdC9ldmVudHMvaW5hY3Rp
dmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQYXNzIF0KIApAQCAtMjIzLDkgKzIxMSw5
IEBAIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1jdXJzb3It
dG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcv
bWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1hZnRlci1hY2NlcHRpbmctYXV0b2NvcnJl
Y3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEw
NTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtY2FuZGlkYXRlLWFsbG93cy1hdXRvY29y
cmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBl
ZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2Vw
dGFuY2UuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1oeXBoZW4uaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtl
cnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3Zlcmxh
cHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWluY2x1ZGVzLWh5
cGhlbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYg
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5nLWxpbmVzLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9u
dC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFz
dC93cml0aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFzdC93cml0aW5nLW1v
ZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIApAQCAtNDkyLDEzICs0ODAsMTIgQEAgd2Via2l0Lm9yZy9iLzE0MTA4NSBodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIGh0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGh0dHAvd3B0
L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3MgXQoraHR0cC93cHQvYmVhY29uL2NvbnRl
bnRleHRlbnNpb25zIFsgUGFzcyBdCiAKICMgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgZmxha3ku
CiB3ZWJraXQub3JnL2IvMTc5NTU3IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29u
dGVudGV4dGVuc2lvbnMvdXBncmFkZS13b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMTY4MDgxIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvYXN5bmMteGhyLW9u
ZXJyb3IuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTQ2NDAwIGh0dHAvdGVz
dHMvY29udGVudGV4dGVuc2lvbnMvY2hhcmFjdGVyLXNldC1iYXNpYy1zdXBwb3J0Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2ODA4MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMv
Y29udGVudGV4dGVuc2lvbnMvaW52YWxpZC1zZWxlY3Rvci5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAogIyBXZWJLaXQxLW9ubHkgZmFpbHVyZS4KIHdlYmtpdC5vcmcvYi8xMDM4NTcg
ZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLWNoYW5nZS5odG1sIFsgUGFzcyBdCkBAIC01MTAsNTYg
KzQ5Nyw1NiBAQCBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMvZ2V0LXVybC1ub3Rp
Znktb24tcmVtb3ZhbC5odG1sIFsgUGFzcyBUaW1lb3V0CiBpbXBvcnRlZC9ibGluay9mYXN0L211
bHRpY29sL25ld211bHRpY29sL211bHRpY29sLWJlY29tZXMtcmVndWxhci1ibG9jay5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL2JsaW5rL2Zhc3QvdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tdXBkYXRlLWZyYW1lLW92ZXJmbG93Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMTU1NzU3IFsgU2llcnJhKyBdIG1lZGlhL21lZGlhLWRvY3Vt
ZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTU1
NzU3IG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTc1ODkgZmFzdC90ZXh0LWF1dG9zaXppbmcvaW9zL3RleHQt
YXV0b3NpemluZy1hZnRlci1iYWNrLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAjIFBpUCB0ZXN0
cyBhcmUgb25seSBlbmFibGVkIGZvciBTaWVycmEgV2ViS2l0Mi4KICMgcmRhcjovL3Byb2JsZW0v
Mjc1NzQzMDMKLVsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL3BpY3R1cmUtaW4tcGljdHVyZS5o
dG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTcwNjIwIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRy
b2xzL3BpcC1wbGFjZWhvbGRlci13aXRob3V0LXZpZGVvLWNvbnRyb2xzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQotWyBTaWVycmErIF0gbWVkaWEvZWxlbWVudC1jb250YWluaW5nLXBpcC12aWRlby1n
b2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2Iv
MTcyOTk4IFsgU2llcnJhKyBdIG1lZGlhL2Z1bGxzY3JlZW4tYXBpLWVuYWJsZWQtbWVkaWEtd2l0
aC1wcmVzZW50YXRpb24tbW9kZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTczMTk5
IFsgU2llcnJhKyBdIG1lZGlhL25hdmlnYXRlLXdpdGgtcGlwLXNob3VsZC1ub3QtY3Jhc2guaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBtZWRpYS9waXAtdmlkZW8tZ29pbmctaW50
by1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIG1lZGlhL3BpY3R1cmUtaW4t
cGljdHVyZSBbIFBhc3MgXQorbWVkaWEvY29udHJvbHMvcGljdHVyZS1pbi1waWN0dXJlLmh0bWwg
WyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzA2MjAgbWVkaWEvY29udHJvbHMvcGlwLXBsYWNlaG9s
ZGVyLXdpdGhvdXQtdmlkZW8tY29udHJvbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCittZWRpYS9l
bGVtZW50LWNvbnRhaW5pbmctcGlwLXZpZGVvLWdvaW5nLWludG8tZnVsbHNjcmVlbi5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xNzI5OTggbWVkaWEvZnVsbHNjcmVlbi1hcGkt
ZW5hYmxlZC1tZWRpYS13aXRoLXByZXNlbnRhdGlvbi1tb2RlLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xNzMxOTkgbWVkaWEvbmF2aWdhdGUtd2l0aC1waXAtc2hvdWxkLW5vdC1jcmFz
aC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK21lZGlhL3BpcC12aWRlby1nb2luZy1pbnRvLWZ1bGxz
Y3JlZW4uaHRtbCBbIFBhc3MgXQorbWVkaWEvcGljdHVyZS1pbi1waWN0dXJlIFsgUGFzcyBdCiAK
ICMgUlRMIFNjcm9sbGJhcnMgYXJlIGVuYWJsZWQgb24gU2llcnJhIFdlYktpdDIuCi13ZWJraXQu
b3JnL2IvMTc5NDU1IFsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcv
cnRsLXNjcm9sbGJhcnMtc2ltcGxlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWNvbnRlbnRzLmh0bWwgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWRpci1ydGwu
aHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
b3ZlcmZsb3ctcGFkZGluZy5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGlu
Zy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1zaW1wbGUuaHRtbCBbIFBhc3MgXQotWyBTaWVycmEr
IF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3cuaHRtbCBbIFBhc3MgXQot
WyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctZWxlbWVu
dEZyb21Qb2ludC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwt
c2Nyb2xsYmFycy1vdmVyZmxvdy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy10ZXh0LXNlbGVj
dGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9y
dGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsg
XSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1maXhlZC5odG1sIFsgUGFz
cyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVj
dGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9y
dGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1pZnJhbWUtb2Zmc2V0Lmh0bWwgWyBQYXNzIF0K
LVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWVsZW1lbnRGcm9tUG9p
bnQtc3RhdGljLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLWlmcmFtZS1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmluZy5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNjcm9sbC5odG1s
IFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0
Ym94LXNlbGVjdC1sZWZ0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0bWwgWyBQYXNzIF0KLVsgU2ll
cnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2ltcGxlLmh0bWwg
WyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Ri
b3guaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtcG9zaXRpb25lZC1pbnRlcnNlY3Qtc2Nyb2xsYmFycy5odG1sIFsgUGFzcyBdCi1bIFNpZXJy
YSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtYm9keS1kaXItYXR0
ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtYm9keS1kaXIt
YXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC0yLmh0bWwgWyBQYXNzIF0K
LXdlYmtpdC5vcmcvYi8xNjI2MzggWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3Jv
bGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmEr
IF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0aW9uLXByb3BlcnR5Lmh0bWwg
WyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzk0NTUgZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1zaW1wbGUuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtb3ZlcmZsb3ctY29udGVudHMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNj
cm9sbGJhcnMtb3ZlcmZsb3ctZGlyLXJ0bC5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9y
dGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBsZS5odG1sIFsgUGFzcyBdCitmYXN0L3Nj
cm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1lbGVtZW50RnJvbVBvaW50Lmh0bWwgWyBQYXNz
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXBvc2l0aW9uLWFic29s
dXRlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93
LXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0
bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWZpeGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNz
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlmcmFtZS1vZmZzZXQuaHRtbCBb
IFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtZWxlbWVudEZyb21Qb2ludC1z
dGF0aWMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtaWZyYW1l
LXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBv
c2l0aW9uaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxp
c3Rib3gtc2Nyb2xsLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNj
cm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtcmlnaHQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3Jv
bGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGlu
Zy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWludGVyc2VjdC1zY3JvbGxiYXJzLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1ib2R5LWRpci1h
dHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQYXNzIF0KK2Zh
c3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMt
bm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50LTIuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9y
Zy9iLzE2MjYzOCBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtaWZyYW1l
LWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1h
bmltYXRpb24tcHJvcGVydHkuaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNTA2
MzEyOD4KLVsgU2llcnJhKyBdIG1lZGlhL21lZGlhLWNvbnRyb2xzLWRyYWctdGltZWxpbmUtc2V0
LWNvbnRyb2xzLXByb3BlcnR5Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQorbWVkaWEvbWVkaWEtY29u
dHJvbHMtZHJhZy10aW1lbGluZS1zZXQtY29udHJvbHMtcHJvcGVydHkuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiAKICMgSGl0dGluZyAiVGhlIGNlcnRpZmljYXRlIGZvciB0aGlzIHNlcnZlciBpcyBp
bnZhbGlkIiBsb2FkaW5nIGVycm9yIChub3QgaGFwcGVuaW5nIGluIFdLMSkKLXdlYmtpdC5vcmcv
Yi8xNjA0NDUgWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWZldGNoLWlu
LXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYwNDQ1IFsgU2llcnJhKyBd
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1
cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1tYWluLWZyYW1lLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjA0NDUgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJl
LWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYwNDQ1IGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUt
cmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1tYWluLWZyYW1lLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NzYwNyBbIERlYnVnIF0gaHR0cC90ZXN0cy9pbnNwZWN0
b3Ivd29ya2VyL2Jsb2Itc2NyaXB0LXdpdGgtY3Jvc3MtZG9tYWluLWltcG9ydGVkLXNjcmlwdHMu
aHRtbCBbIFBhc3MgVGltZW91dCBdCiAKQEAgLTU4Miw4ICs1NjksNiBAQCB3ZWJraXQub3JnL2Iv
MTYyMDgxIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1saW5rLmh0bWwgWyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzE2MDAxNyBqcy9yZWdyZXNzLTEzOTU0OC5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE2MjUyNCBbIFNpZXJyYSBSZWxlYXNlIF0gaHR0cC90
ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVkaXJlY3QuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNjE5MjYgc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vy
c29yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAKQEAgLTU5OSw4ICs1ODQsNiBAQCB3ZWJraXQu
b3JnL2IvMTYyOTc1IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9tZW1vcnktY2FjaGUtcmV2
YWxpZGF0aW9uLXVwZGF0ZQogCiB3ZWJraXQub3JnL2IvMTYxNjUzIFsgRGVidWcgXSBzdG9yYWdl
L2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQu
b3JnL2IvMTYzNDUzIFsgU2llcnJhIFJlbGVhc2UgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL2Jhc2ljLXVwZ3JhZGUt
Y29ycy5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE2MzcwMiBw
bGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3RhdGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMTY0ODcwIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJjdXJzb3JfaXRlcmF0aW5nLmh0bSBbIFBhc3MgRmFpbHVyZSBdCkBA
IC02MTEsOCArNTk0LDYgQEAgd2Via2l0Lm9yZy9iLzE2NTM1MiBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXJlc2l6ZS1jb250ZW50cy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9i
LzE2NzY1MyBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Jsb2NrLWV2ZXJ5dGhpbmctdW5s
ZXNzLWRvbWFpbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE2NzIwNiBb
IFNpZXJyYSBSZWxlYXNlIF0gbWF0aG1sL29wZW50eXBlL2xhcmdlLW9wZXJhdG9ycy1kaXNwbGF5
c3R5bGUtZHluYW1pYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9y
Zy9iLzE2ODA2NSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9oZWFwLXNuYXBzaG90Lmh0bWwgWyBQYXNz
IEZhaWx1cmUgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNjgyMzUgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1h
bnRpY3MvdGhlLWEtZWxlbWVudC9hLWRvd25sb2FkLWNsaWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQpAQCAtNjM4LDE2ICs2MTksMTAgQEAgd2Via2l0Lm9yZy9iLzE3MTc2MyBjb21wb3NpdGluZy90
aWxpbmcvbm9uLWFjdGl2ZS13aW5kb3ctdGlsZXMtc2l6ZS5odG1sIFsgUGFzcwogCiB3ZWJraXQu
b3JnL2IvMTcxODM3IFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctbG9vc2VuZWQtcGx1Z2luLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTcxOTM5IFsgU2llcnJhIFJlbGVhc2UgXSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5n
LW9uLXJlc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQotd2Via2l0Lm9yZy9iLzE3MTk0NyBb
IFNpZXJyYSBSZWxlYXNlIF0gdHJhbnNpdGlvbnMvZXh0cmEtdHJhbnNpdGlvbi5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MDY5OSBbIFJlbGVhc2UgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aW1lcnMvbmVnYXRpdmUtc2V0
dGltZW91dC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2ODkzNyAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtaWZyYW1lLWxhdGNoZWQtbWFpbmZyYW1l
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcyMDU0IFsgU2llcnJhIERl
YnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtc2l6ZS1pZnJhbWUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNzI0NTQgaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzMx
ODggZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtZ3JhbnQtcGVyc2lzdGVuY3kzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQpAQCAtNjYxLDEwICs2MzYsMTAgQEAgd2Via2l0Lm9yZy9iLzE4NzY0
OSBlZGl0aW5nL3NlbGVjdGlvbi91cGRhdGUtc2VsZWN0aW9uLWJ5LXN0eWxlLWNoYW5nZS5odG1s
IFsgUGEKICMgVG91Y2ggZXZlbnRzIGFyZSBub3QgYXZhaWxhYmxlIG9uIG9wZW4gc291cmNlIGJv
dHMsIHRodXMgb25seSB0ZXN0ZWQgb24gTWFjLgogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24taW4tY3Jvc3Mtb3JpZ2luLXN1Yi1mcmFtZS5odG1sIFsg
UGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlv
bi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgUGFzcyBdCi1bIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzLyBbIFBhc3MgXQotWyBIaWdoU2ll
cnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3Mt
dGhlbi1uYXZpZ2F0ZS1jcm9zcy1zaXRlLXNob3VsZC1ub3QtaGF2ZS1hY2Nlc3MtZGF0YWJhc2Uu
aHRtbCBbIFBhc3MgVGltZW91dCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sIFsg
U2tpcCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0
aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1kYXRhYmFzZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvIFsgUGFzcyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRoZW4tbmF2aWdhdGUtY3Jvc3Mtc2l0ZS1z
aG91bGQtbm90LWhhdmUtYWNjZXNzLWRhdGFiYXNlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQoraHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUt
Z2VzdHVyZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRo
LXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0K
IAogIyBFbmFibGUgYWdhaW4gd2hlbiBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODQwMC4KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtdHJ1ZS1pZi10aGlyZC1wYXJ0eS1oYXMtY29va2llcy1lcGhlbWVyYWwtZGF0YWJh
c2UuaHRtbCBbIFNraXAgXQpAQCAtNjkzLDggKzY2OCw2IEBAIHdlYmtpdC5vcmcvYi8xNzM2NzIg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9odHRwLWNhY2hlL2ludmFsaWRh
dGUuCiAKIHdlYmtpdC5vcmcvYi8xNzM1MDAgaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgt
cmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTcyODI5IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUt
c2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE3NTc4MSBzdmcvaW4t
aHRtbC9ieS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NzYwNTQgbWVkaWEvdmlkZW8tY29udHJvbHMtaW4tbWVkaWEtZG9jdW1lbnQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCkBAIC03MTMsMzAgKzY4NiwzMCBAQCB3ZWJraXQub3JnL2IvMTg1OTk0IGZhc3Qv
dGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctZmFtaWx5Lmh0bWwgWyBQYXNzIEltYQog
d2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvc2hhZG93
LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFJl
ZW5hYmxlZCB0ZXN0cyBmb3Igc3VwcG9ydGVkIHBsYXRmb3JtcwotWyBNb2phdmUrIF0gZmFzdC90
ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci5odG1sIFsgUGFzcyBd
Ci1bIE1vamF2ZSsgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZXh0ZW5kZWQtY2hh
cmFjdGVyLXdpdGgtdXNlci1mb250Lmh0bWwgWyBQYXNzIF0KK2Zhc3QvdGV4dC91c2VyLWluc3Rh
bGxlZC1mb250cy9leHRlbmRlZC1jaGFyYWN0ZXIuaHRtbCBbIFBhc3MgXQorZmFzdC90ZXh0L3Vz
ZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci13aXRoLXVzZXItZm9udC5odG1s
IFsgUGFzcyBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1MDEwMzA3PgotWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFBhc3MgXQotWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblYzLmh0
bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvblY0Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvblY1Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRw
L3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RTaGlwcGluZ0NvbnRhY3RWMy5odHRw
cy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVudEVycm9yc1YzLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktbGFiZWxz
Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2FwcGxlLXBheS1z
ZXNzaW9uLXY0Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5
RXJyb3IuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uVjMuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uVjQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uVjUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VjMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wv
YXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVudEVycm9yc1YzLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2FwcGxlLXBheS1sYWJlbHMuaHRtbCBb
IFBhc3MgXQorYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LXNlc3Npb24tdjQuaHRtbCBbIFBh
c3MgXQogIyA8cmRhcjovL3Byb2JsZW0vMzE2MzQ0NTE+Ci1bIEhpZ2hTaWVycmErIF0gaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2Vy
LWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGln
aFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVu
dC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVy
cmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5vdC1yZW1vdmUtYmxv
Y2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQt
c3RvcmUuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUtb25lLWhv
dXIuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdp
bi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3Jp
Z2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmEr
IF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZv
ci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0
bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVs
ZXRpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25v
bi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRoaXJkLXBhcnR5
LWNvbnRleHQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1s
IFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVt
b3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUtb25l
LWhvdXIuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dy
YW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlZGlyZWN0cy5o
dG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVm
ZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXBy
ZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAKICMgVGhlIFNhbWVTaXRlIGNvb2tpZSBB
UEkgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQ2F0YWxpbmEgYW5kIGFib3ZlLgogWyBDYXRh
bGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVz
LXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFBhc3MgXQpAQCAtNzQ0LDkgKzcxNyw2IEBAIHdl
YmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRvdy1w
b3N0c2NyaXB0LWZhbWlseS5odG1sCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMg
c2luY2UgdGhleSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIG1lZGlhL2RlYWN0aXZh
dGUtYXVkaW8tc2Vzc2lvbi5odG1sIFsgUGFzcyBdCiAKLSMgTGluayBwcmVjb25uZWN0IGlzIGRp
c2FibGVkIG9uIHByZS1IaWdoIFNpZXJyYSBiZWNhdXNlIHRoZSBDRk5ldHdvcmsgU1BJIGlzIG1p
c3NpbmcuCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAgXQotCiB3ZWJr
aXQub3JnL2IvMTc3Njg3IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6
ZXMtbWVtb3J5LWNhY2hlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTc4
NDcyIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Ut
aGFuZGxlZC1rZXlkb3duLmh0bWwgWyBTa2lwIF0KQEAgLTc1NCwxMCArNzI0LDYgQEAgd2Via2l0
Lm9yZy9iLzE3ODQ3MiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LXJlc291cmNlLXdpdGgtdXMKIAogd2Via2l0Lm9yZy9iLzE3Njg4MSBwbHVnaW5zL2pzLWZyb20t
ZGVzdHJveS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3ODU1MyBbIEhp
Z2hTaWVycmEgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9k
b20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhlLWlucHV0LXN0cmVhbS8wMTEu
aHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTY1NjIwIFsgU2llcnJhIF0gaHR0cC90ZXN0
cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVxdWVzdC1oZWFkZXJzLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTc5NzczIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L3NlcnZpY2V3b3JrZXItaW50ZXJjZXB0ZWQuaHR0cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzYwNzggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlhdGlv
bm5lZWRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTc5Miw5ICs3NTgsNyBAQCB3ZWJraXQu
b3JnL2IvMTgwOTgyIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZQogCiB3ZWJraXQub3JnL2IvMTgyMTc2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FwcGNhY2hlLW9y
ZGVyaW5nLW1haW4uaHR0cHMuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTgzODY5IFsg
SGlnaFNpZXJyYSsgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2Vlay1iYWNrd2FyZC1z
dXBwb3J0L3NlZWstYmFja3dhcmQtc3VwcG9ydC5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0K
LQotd2Via2l0Lm9yZy9iLzE4Mzg2MCBbIFNpZXJyYSBSZWxlYXNlIF0gaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3RoaXJkLXBhcnR5LXJlZ2lzdHJhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xODM4NjkgbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NlZWstYmFj
a3dhcmQtc3VwcG9ydC9zZWVrLWJhY2t3YXJkLXN1cHBvcnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBD
cmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xODQyNDUgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2VydmljZS13b3JrZXItY2FjaGUtYXBpLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBA
IC04NDUsMTcgKzgwOSwxNSBAQCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5o
dG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogCi0jIE5GQyBzdXBwb3J0IHJlcXVp
cmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBIaWdoU2llcnJhIGFuZCBNb2ph
dmUuCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFp
bHVyZS5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5o
dG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBd
Ci1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEg
TW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCisjIE5GQyBzdXBwb3J0IHJlcXVpcmUgQ2F0YWxp
bmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBNb2phdmUuCitbIE1vamF2ZSBdIGh0dHAvd3B0
L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbCBbIFNraXAgXQorWyBNb2phdmUg
XSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBd
CitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgXSBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgWyBT
a2lwIF0KIAogd2Via2l0Lm9yZy9iLzE4Mzg3OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMv
dHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC11cC1jbGljay1vdmVyLW1lZGlhLWRvZXMtbm90LWRp
bWlzcy1tZWRpYS1jb250cm9scy13aGVuLW1lZGlhLWlzLXBsYXlpbmcuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdIAogCi13ZWJraXQub3JnL2IvMTkxNjU4IFsgU2llcnJhIFJlbGVhc2UgXSBmYXN0L2xh
eWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4tYWRkZWQtYWZ0ZXItdHJhbnNmb3JtLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTk0ODI2IGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtYmxvY2stdG9wLWxldmVsLW5hdmln
YXRpb24tcmVkaXJlY3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xOTQ5
MTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQpAQCAtODkwLDE2ICs4NTIsMTYgQEAgd2Via2l0Lm9yZy9iLzE5ODY2MyBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRoZW4tbmF2aWcK
IAogd2Via2l0Lm9yZy9iLzE3NjAzMCBbIERlYnVnIF0gaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLW9iamVjdC10b3N0cmluZy1jaGVjay5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzE5ODkyMSBbIE1vamF2ZSsgXSB3ZWJncHUvYmxlbmQtY29sb3ItdHJp
YW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5OTY1MSBbIE1vamF2ZSBEZWJ1ZyBdIHdl
YmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcv
Yi8xOTkwODkgWyBNb2phdmUrIERlYnVnIF0gcGx1Z2lucy93aW5kb3ctb3Blbi5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTk5MDg5IFsgRGVidWcgXSBwbHVnaW5zL3dpbmRvdy1vcGVuLmh0
bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNTY1MDYwNjM+IExheW91dCBUZXN0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWlj
ZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZSAoMjAzMjU2KQog
d2Via2l0Lm9yZy9iLzIwMzI1NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1MzAxIFsgTW9qYXZlKyBdIGlu
c3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjA1MzAxIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRl
clNvdXJjZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDU4
MDggZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdW5pY29kZS1iaWRpLW90aGVyLW5ldXRyYWxzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC0xMDc0LDQgKzEwMzYsNCBAQCB3ZWJraXQub3JnL2Iv
MjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFy
cy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5NjcyIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJl
IENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBwb3J0LWNsaWNrLmh0bWwgWyBQYXNzIENy
YXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA5Njg4IG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci1zdXBwb3J0L3NjcnViYmVyLXN1cHBv
cnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA3MTEwMTExMTMyYzhlYWRlYjgxMGMwMDA2YWZjYjcxYmFjNmU1
ZGQ0Li40MDgwNWUxNGQwODM5ODkzMWRjNjk3NDExYWVlMWI0ODliNTM3ZDliIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQsOCArMzQsNyBAQCBmYXN0
L2V2ZW50cy9kby1ub3QtZHJhZy1hbmQtZHJvcC1kYXRhLWRldGVjdG9ycy1saW5rLmh0bWwgWyBQ
YXNzIF0KIAogaHR0cC90ZXN0cy9nemlwLWNvbnRlbnQtZW5jb2RpbmcgWyBQYXNzIF0KIAotWyBT
aWVycmEgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ3ppcC1jb250ZW50
LXR5cGUtbm8tY29udGVudC1lbmNvZGluZy5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2d6aXAtY29udGVudC10eXBlLW5vLWNvbnRlbnQtZW5j
b2RpbmcuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nemlwLWNvbnRl
bnQtdHlwZS1uby1jb250ZW50LWVuY29kaW5nLmh0bWwgWyBQYXNzIF0KIAogZmFzdC90ZXh0L21h
YyBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MTk2NCBmYXN0L3RleHQvbWFjL3NlbGVjdC1jaGFy
YWN0ZXItYmVmb3JlLXplcm8td2lkdGgtam9pbmVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
QEAgLTE0OCw5ICsxNDcsNiBAQCBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWlj
ZS5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLW1lZGlh
LXNldHVwLWNhbGxiYWNrcy1zaW5nbGUtZGlhbG9nLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMuaHRtbCBbIFNraXAgXQogCi1bIEhpZ2hTaWVy
cmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctSUNFQ2FuZGlkYXRlRmlsdGVyaW5n
RW5hYmxlZC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVy
cmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIFsgU2tpcCBdCi0KICMg
QXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVidWcgXSBmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdl
LWNyYXNoLmh0bWwgWyBTa2lwIF0KIApAQCAtNzY2LDcgKzc2Miw3IEBAIHdlYmtpdC5vcmcvYi8x
MzE4NTUgbWVkaWEvZXZlbnQtYXR0cmlidXRlcy5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQg
XQogd2Via2l0Lm9yZy9iLzEzMzM2MyBtZWRpYS92aWRlby1ydGwuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTMzNjg2IG1lZGlhL3RyYWNrL3czYy9pbnRlcmZh
Y2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xMzUwNzEgbWVkaWEvdmlkZW8tc2Vlay13aXRoLW5lZ2F0aXZlLXBsYXliYWNrLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzEzNTE2MCBbIFNpZXJyYSsgXSBtZWRpYS90cmFj
ay90cmFjay1pbi1iYW5kLXN1YnRpdGxlcy10b28tbGFyZ2UuaHRtbCBbIEZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzEzNTE2MCBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN1YnRpdGxlcy10b28t
bGFyZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzNTE2MCBtZWRpYS90cmFjay90
cmFjay1sb25nLXdvcmQtY29udGFpbmVyLXNpemluZy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTM3MzExIG1lZGlhL3ZpZGVvLWZ1bGxzY3JlZW4tb25seS1wbGF5YmFjay5odG1sIFsg
UGFzcyBUaW1lb3V0IENyYXNoIF0KIHdlYmtpdC5vcmcvYi8xMzk3ODkgbWVkaWEvbWVkaWEtY29u
dHJvbHMtdGltZWxpbmUtdXBkYXRlcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTg1NCw3ICs4
NTAsNyBAQCB3ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25z
LXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MTYyNjYgbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmcuaHRtbCBbIFNraXAgXQogCi13ZWJr
aXQub3JnL2IvMTYzMjMxIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL2FpcnBsYXktcGlja2Vy
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE2MzIzMSBtZWRpYS9jb250cm9s
cy9haXJwbGF5LXBpY2tlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyAtLS0gRW5kIG1lZGlh
IHRlc3RzIC0tLQogd2Via2l0Lm9yZy9iLzEzNjk5NCBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRl
by1jb29raWUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTAxMyw3ICsxMDA5LDYgQEAgd2Via2l0Lm9y
Zy9iLzE0ODYzNiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9yLWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRt
bCBbIFBhc3MgVGltZW8KIHdlYmtpdC5vcmcvYi8xNDg2MzYgaW5zcGVjdG9yL2Nzcy9zZWxlY3Rv
ci1zcGVjaWZpY2l0eS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNTg3NDIg
WyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1pbi1jb25zdHJ1Y3Rvci1iZWZvcmUt
c3VwZXIuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTYzNjA0IGluc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQot
d2Via2l0Lm9yZy9iLzE2ODMzOCBbIFNpZXJyYSBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LWFjdGlvbi1kZXRhY2guaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTY1
NzcyIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTYxMzg3IGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LWFjdGlvbi13aXRoLWV4Y2VwdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xNjQyOTMgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3Bl
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTA1OSw3ICsxMDU0LDcgQEAgd2Via2l0Lm9yZy9i
LzE0OTEyOCBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAjIFRvdWNoIGV2ZW50cyBhcmUgbm90IGVuYWJsZWQgb24gTWFjCiB3ZWJraXQub3JnL2IvMTQ5
NTkyIGZhc3Qvc2hhZG93LWRvbS90b3VjaC1ldmVudC1pb3MuaHRtbCBbIFNraXAgXQogCi13ZWJr
aXQub3JnL2IvMTQ5ODE5IFsgRGVidWcgU2llcnJhKyBdIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVv
LXBvc3Rlci5odG1sIFsgUGFzcyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTQ5ODE5IFsgRGVidWcg
XSBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3
ZWJraXQub3JnL2IvMTY4OTUzIFsgUmVsZWFzZSBdIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBv
c3Rlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTA5NiwyMSArMTA5MSwyMSBAQCBhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3Rpb24tZWxlbWVudC10YWJiaW5nLXRvLWxpbmsuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTI1MDYgd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJr
aXQub3JnL2IvMTU0NzA5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9jcmFzaC1jb21wbGV4LXRleHQt
c3Vycm9nYXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1NDcwOSBmYXN0
L3RleHQvY3Jhc2gtY29tcGxleC10ZXh0LXN1cnJvZ2F0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAogd2Via2l0Lm9yZy9iLzE1NTA5MiBqcy9hcnJheWJ1ZmZlci13cmFwcGVycy5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE1NTE0MCBqcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy0yLTMtMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODcx
MDMganMvZXJyb3Itc2hvdWxkLW5vdC1zdHJvbmctcmVmZXJlbmNlLWdsb2JhbC1vYmplY3QuaHRt
bCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE1NTUwNSBbIFNpZXJy
YSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRT
aGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE1NTUwNSBb
IFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2Vy
QWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1
NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRT
aGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1NTUwNSBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dE
T00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTU0Njg4IGluc3Bl
Y3Rvci9jb250cm9sbGVyL3J1bnRpbWUtY29udHJvbGxlci5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
IAotd2Via2l0Lm9yZy9iLzE1NjExMiBbIFNpZXJyYSsgXSBtZWRpYS9hdWRpby1jb250cm9scy1y
ZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU2MTEyIFsgU2ll
cnJhKyBdIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xNTYxMTIgWyBTaWVycmErIF0gbWVkaWEvY29udHJvbHMtd2l0aG91dC1wcmVsb2Fk
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1NjExMiBtZWRpYS9hdWRpby1j
b250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTU2
MTEyIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8xNTYxMTIgbWVkaWEvY29udHJvbHMtd2l0aG91dC1wcmVsb2FkLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU2MzUxIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9h
dXRvaW5jcmVtZW50LWFib3J0LXByaXZhdGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKQEAgLTEx
MjYsNDQgKzExMjEsNDQgQEAgd2Via2l0Lm9yZy9iLzE1ODEwMSBpbXBvcnRlZC9ibGluay9odHRw
L3Rlc3RzL3BsdWdpbnMvZ2V0LXVybC1ub3RpZnktb24tcmVtb3ZhbC4KIHdlYmtpdC5vcmcvYi8x
NTg1MzQgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2R5bmFtaWMtYmFja2Ryb3AtZmlsdGVyLWNoYW5n
ZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUaGVzZSB0ZXN0cyBoYXJkY29k
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBmb250IGFsaWFzZXMuCi13ZWJraXQub3JnL2IvMTU4NjQ5IFsg
U2llcnJhKyBdIGZhc3QvdGV4dC9jaGluZXNlLWZvbnQtbmFtZS1hbGlhc2VzLTIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1ODY0OSBmYXN0L3RleHQvY2hpbmVzZS1m
b250LW5hbWUtYWxpYXNlcy0yLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9y
Zy9iLzE1ODg4OSBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKLVsgU2llcnJhKyBdIGZhc3QvY3NzL2FwcGVh
cmFuY2UtYXBwbGUtcGF5LWJ1dHRvbi5odG1sIFsgUGFzcyBdCitmYXN0L2Nzcy9hcHBlYXJhbmNl
LWFwcGxlLXBheS1idXR0b24uaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yMzUw
MDMyNz4gc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS5odG1sCi1bIFNpZXJyYSsg
XSBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQorc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjM1MDQ3NDk+IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gZmFpbGluZwotWyBTaWVycmErIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvcmVzcG9uc2UtbWV0aG9kLmh0bSBbIFBh
c3MgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9yZXNwb25z
ZS1tZXRob2QuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjM1MDU1
ODI+IEZhaWxzIG9uIGlNYWMxMCwxIGFuZCBpTWFjMTEsMQotWyBTaWVycmErIF0gZmFzdC9jYW52
YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQorZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFNpZXJyYSBzdXBwb3J0cyB0cnVlIGZvbnQgZmVhdHVy
ZSBjb3ZlcmFnZSBxdWVyaWVzLiBXZSB1c2UgdGhlIC1jb3ZlcmFnZSB2ZXJzaW9ucyBvZiB0aGVz
ZSB0ZXN0cyBpbnN0ZWFkLgotWyBTaWVycmErIF0gY3NzMy9mb250LXZhcmlhbnQtc21hbGwtY2Fw
cy1zeW50aGVzaXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gY3NzMy9m
b250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK2NzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBldGl0ZS1jYXBzLXN5bnRoZXNpcy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1Mjc5MTg5PiBMYXlv
dXRUZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZp
ZGVvLWluLW1haW4tZnJhbWUuaHRtbCBpcyBmbGFreQotWyBTaWVycmErIF0gaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2lu
c2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzI1NzgwMDM1PiBDU1AgZG9lcyBub3QgaWdub3JlIHBhdGhzIGZv
ciBtZWRpYSByZWRpcmVjdHMKLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KLVsg
U2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVv
LXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0
LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNjk1MjYyNwotWyBT
aWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRl
ci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tYWRkLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRo
LWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJh
ZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitj
c3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1h
bmQtcmVmbGVjdGlvbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyByZGFyOi8v
cHJvYmxlbS8yNzE0MTI5MQotWyBTaWVycmErIF0gZWRpdGluZy9zZWxlY3Rpb24vdHJpcGxlLWNs
aWNrLWluLXByZS5odG1sIFsgRmFpbHVyZSBdCitlZGl0aW5nL3NlbGVjdGlvbi90cmlwbGUtY2xp
Y2staW4tcHJlLmh0bWwgWyBGYWlsdXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8zMTI0MzgyNAog
d2Via2l0Lm9yZy9iLzE1ODc0NyBtZWRpYS9yZXN0b3JlLWZyb20tcGFnZS1jYWNoZS5odG1sIFsg
UGFzcyBGYWlsdXJlIENyYXNoIF0KIAogIyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDk0Ci13ZWJraXQub3JnL2IvMTUxMjg3IFsgU2llcnJhKyBd
IG1lZGlhL2NvbnRyb2xzL2lubGluZS1lbGVtZW50cy1kcm9wb2ZmLW9yZGVyLmh0bWwgWyBGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8xNTEyODcgbWVkaWEvY29udHJvbHMvaW5saW5lLWVsZW1lbnRz
LWRyb3BvZmYtb3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU4NTAwIHN0
b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLXByaXZhdGUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKQEAgLTExNzIsMjUgKzExNjcsMjUgQEAgd2Via2l0Lm9yZy9iLzE2MzEyMiBpbXBvcnRl
ZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWFmdGVyLWRlbGV0aW9uLmgKIHdl
YmtpdC5vcmcvYi8xMjgzMTIgbWVkaWEvdmlkZW8tbG9hZC1wcmVsb2FkLW1ldGFkYXRhLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9ibGVtLzI3NDc1MTYyCi1bIFNpZXJyYSsg
XSBjb21wb3NpdGluZy92aWRlby9wb3N0ZXIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLW51bS1n
bHlwaHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0
L3RleHQvZW1vamktZ2VuZGVyLTItMy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1
IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi00Lmh0bWwgWyBQYXNzIF0KLXdl
YmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTUu
aHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQv
ZW1vamktZ2VuZGVyLTItNi5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2ll
cnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi03Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5v
cmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTguaHRtbCBb
IFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamkt
Z2VuZGVyLTItOS5odG1sIFsgUGFzcyBdCi0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmEr
IF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9y
Zy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtNC5odG1s
IFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItZmUwZi01Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVy
cmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTYuaHRtbCBbIFBhc3MgXQotd2Via2l0
Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtNy5o
dG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9l
bW9qaS1nZW5kZXItZmUwZi04Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBT
aWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTkuaHRtbCBbIFBhc3MgXQotd2Vi
a2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLmh0bWwg
WyBQYXNzIF0KK2NvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktbnVtLWdseXBo
cy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5k
ZXItMi0zLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2pp
LWdlbmRlci0yLTQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQv
ZW1vamktZ2VuZGVyLTItNS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3Qv
dGV4dC9lbW9qaS1nZW5kZXItMi02Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUg
ZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTcuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1
OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOC5odG1sIFsgUGFzcyBdCit3ZWJraXQub3Jn
L2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi05Lmh0bWwgWyBQYXNzIF0KKword2Vi
a2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtMy5odG1sIFsgUGFz
cyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi00Lmh0
bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1m
ZTBmLTUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamkt
Z2VuZGVyLWZlMGYtNi5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4
dC9lbW9qaS1nZW5kZXItZmUwZi03Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUg
ZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTguaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9i
LzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtOS5odG1sIFsgUGFzcyBdCit3ZWJr
aXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIuaHRtbCBbIFBhc3MgXQogCiB3
ZWJraXQub3JnL2IvMTYxMTQ0IGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHkt
ZGVzY3JpYmVzLXZpZGVvLW1lbnUuaHRtbCBbIFNraXAgXQogCkBAIC0xMTk4LDE4ICsxMTkzLDE0
IEBAIHdlYmtpdC5vcmcvYi8xNjE4ODMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vbm9kZXMvUHJvY2Vzc2luZ0luc3RydWN0CiAKIHdlYmtpdC5vcmcvYi8xNjIzMDggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZHVyYXRp
b24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNjI1MjMgWyBTaWVycmEr
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjI1MjMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcHJl
bG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2MjYyNiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1saXZlc2Vl
a2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNjI2NDcgWyBTaWVy
cmErIF0gaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmFib3J0LXJlc3BvbnNlLWdldHRlcnMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYyNjQ3IGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvb25hYm9ydC1yZXNwb25zZS1nZXR0ZXJzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMTYyODMwIFsgRGVidWcgXSBmYXN0L2V2ZW50cy90YWJpbmRleC1m
b2N1cy1ibHVyLWFsbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBWYXJpYXRpb24gZm9udHMg
YXJlIG5vdCBpbXBsZW1lbnRlZCBlYXJsaWVyIHRoYW4gSGlnaCBTaWVycmEuCi1bIFNpZXJyYSBd
IGZhc3QvdGV4dC92YXJpYXRpb25zIFsgUGFzcyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQot
WyBTaWVycmEgXSBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucyBbIFBhc3MgRmFpbHVyZSBJbWFn
ZU9ubHlGYWlsdXJlIFRpbWVvdXQgXQotCiBbIERlYnVnIF0gZmFzdC9zZWxlY3RvcnMvc2xvdy1z
dHlsZS1zaGFyaW5nLXdpdGgtbG9uZy1jb3VzaW4tbGlzdC5odG1sIFsgU2tpcCBdCiAKIHdlYmtp
dC5vcmcvYi8xNjE3MjAgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTMwMSw4ICsxMjkyLDYgQEAgd2Via2l0Lm9yZy9i
LzE3MDgzMSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXJ0bC5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE2NTU1MyBtZWRpYS9tZWRpYS1jb250cm9scy10aW1l
bGluZS11cGRhdGVzLXdoZW4taG92ZXJlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzE3MTI3MiBbIFNpZXJyYSBdIGZhc3QvdGV4dC9rYWl0aGkuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcxNDY1IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJh
bmQtc3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1w
b3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQpAQCAtMTMzNyw5ICsxMzI2LDYgQEAgd2Via2l0Lm9yZy9iLzE2OTE1OCBtZWRpYS9t
b2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXN1cHBvcnQvdHJhY2tzLXN1cHBvcnQtc2gKIAog
d2Via2l0Lm9yZy9iLzE3MDkwNyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cy9oa2RmLmh0dHBzLndvcmtlci5odG1s
IFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTczMzI4IFsgU2llcnJh
IF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNrLWVtb2ppLmh0bWwgWyBGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8xNzMzMjggWyBTaWVycmEgXSBmYXN0L3RleHQvc3lzdGVtLWZvbnQtZmFs
bGJhY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTc4MDgzIG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGFpbnQtdG8tY2FudmFzLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MzA2OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9nZXRLZXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CkBAIC0xMzg3LDEyNiArMTM3MywxMjYgQEAgd2Via2l0Lm9yZy9iLzE2MTQ5MSBtZWRpYS92aWRl
by1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1zY3JvbGwuaHRtbCBbIFBhc3MgRmFpbHUKIHdlYmtp
dC5vcmcvYi8xNzIwNTIgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC93ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmctc2V0aW50ZXJ2YWwuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBSRUdSRVNTSU9OPyAoRm9u
dFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0qIGFuZCBzdmcvVzNDLVNW
Ry0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzND
LVNWRy0xLjEvZm9udHMtZWxlbS0wMS10LnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hT
aWVycmErIF0gc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDMtYi5zdmcgWyBGYWlsdXJlIF0K
LVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1iLnN2ZyBbIEZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTAxLXQu
c3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL3RleHQtaW50
cm8tMDItYi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEv
dGV4dC1pbnRyby0wMy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0Mt
U1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0g
c3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDMuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmEr
IF0gc3ZnL2JhdGlrL3RleHQvdGV4dFBvc2l0aW9uMi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNp
ZXJyYSsgXSBzdmcvY3VzdG9tL2FjaWQzLXRlc3QtNzcuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gc3ZnL3dpY2QvdGVzdC1yaWdodHNpemluZy1iLnhodG1sIFsgRmFp
bHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlh
bC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQor
c3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDEtdC5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0Mt
U1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEv
Zm9udHMtZWxlbS0wMy1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVs
ZW0tMDctYi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTAxLXQu
c3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0wMi1iLnN2ZyBbIEZh
aWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDMtYi5zdmcgWyBGYWlsdXJlIF0K
K3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvYmF0
aWsvdGV4dC90ZXh0RWZmZWN0My5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9iYXRpay90ZXh0L3RleHRQ
b3NpdGlvbjIuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL2FjaWQzLXRlc3QtNzcuaHRtbCBb
IEZhaWx1cmUgXQorc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwgWyBGYWlsdXJl
IF0KK3N2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9j
c3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMDQ5MzkxMD4g
UkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0L3dyaXRpbmctbW9kZS9icm9rZW4taWRlb2dyYXBo
LXNtYWxsLWNhcHMuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC93cml0aW5nLW1v
ZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZh
aWx1cmUgXQorZmFzdC93cml0aW5nLW1vZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0
bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMDE4
MjQwMT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLWFib3J0LXJlc2V0cy1wYXJzZXIuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hYm9ydC1yZXNldHMtcGFyc2VyLmh0bWwgWyBG
YWlsdXJlIF0KK21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWJvcnQtcmVzZXRzLXBh
cnNlci5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMwNTE3MjgzPiBSRUdS
RVNTSU9OOiBMYXlvdXRUZXN0cyBzZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwgYW5kIHNlY3VyaXR5
L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBzZWN1cml0
eS9ibG9jay10ZXN0Lmh0bWwKLVsgSGlnaFNpZXJyYSsgXSBzZWN1cml0eS9ibG9jay10ZXN0LW5v
LXBvcnQuaHRtbAorc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCitzZWN1cml0eS9ibG9jay10ZXN0
LW5vLXBvcnQuaHRtbAogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMTE3Nzk5MD4gUkVHUkVTU0lPTjog
Y2FudmFzLzJkLmdyYWRpZW50LiogTGF5b3V0VGVzdHMgZmFpbGluZwogIyBUaGVzZSBhcmUgaW1w
b3J0ZWQgdGVzdHMsIHNvIHdlJ2xsIGhhdmUgdG8gcHVzaCBjaGFuZ2VzIGJhY2sgdG8gVzNDLgot
WyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQubGluZWFyLnRy
YW5zZm9ybS4xLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMi5odG1sIFsgRmFpbHVyZSBdCi1b
IEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJh
bnNmb3JtLjMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuYm90dG9tLmh0bWwgWyBGYWlsdXJlIF0KLVsg
SGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25l
LmN5bGluZGVyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWlsdXJlIF0KLVsg
SGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25l
LnNoYXBlMS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2Nh
bnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTEu
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQu
Z3JhZGllbnQucmFkaWFsLmluc2lkZTIuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTMuaHRtbCBbIEZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQu
cmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRl
ZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5vdXRzaWRlMi5odG1sIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwu
b3V0c2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hT
aWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWJsZW5kaW5nLWZpbGwtc3R5bGUuaHRtbCBbIEZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3Iu
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL3NldC1jb2xvcnMu
aHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIu
dHJhbnNmb3JtLjEuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFk
aWVudC5saW5lYXIudHJhbnNmb3JtLjIuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2Nh
bnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjMuaHRtbCBbIEZhaWx1cmUgXQoraW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS5ib3R0b20uaHRtbCBbIEZh
aWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS5jeWxp
bmRlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJh
ZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQu
Z3JhZGllbnQucmFkaWFsLmNvbmUuc2hhcGUxLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUudG9wLmh0bWwgWyBGYWlsdXJlIF0KK2lt
cG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTEuaHRtbCBbIEZhaWx1
cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuaW5zaWRlMi5odG1s
IFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5pbnNp
ZGUzLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFk
aWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3Jh
ZGllbnQucmFkaWFsLm91dHNpZGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUzLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5odG1sIFsgRmFpbHVyZSBdCitm
YXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZmlsbC1zdHlsZS5odG1sIFsgRmFpbHVyZSBdCitm
YXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvY2Fu
dmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMTMy
MjQyNT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS92aWRlby1vcmllbnRhdGlvbi5odG1s
IGlzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBtZWRpYS92aWRlby1vcmllbnRhdGlvbi5odG1s
IFsgRmFpbHVyZSBdCittZWRpYS92aWRlby1vcmllbnRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiAK
ICMgV2ViQ3J5cHRvQVBJIGZlYXR1cmVzIHRoYXQgZW5hYmxlZCBvbmx5IGZvciBIaWdoIFNpZXJy
YS9pT1MgMTEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vud3JhcEtleS5odHRwcy53
b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvd3JhcEtleV91bndyYXBLZXkvdGVzdF93
cmFwS2V5X3Vud3JhcEtleS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJy
YSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMS5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVy
YXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0g
Y3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTI1Ni5odG1s
IFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRl
LWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTUxMi5odG1sIFsg
UGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4
cG9ydC1rZXktcGtjczguaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0
bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFBhc3MgXQotWyBIaWdo
U2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3Mg
XQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXByaXZh
dGUta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1w
c3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCi1bIEhp
Z2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1z
aGExLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
aW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTIyNC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmEr
IF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyNTYuaHRt
bCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQt
andrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlw
dG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTUxMi5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktc2ln
bi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxl
L3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBj
cnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQotWyBI
aWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtcGtjczgta2V5Lmh0bWwg
WyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LXNw
a2kta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRv
L3N1YnRsZS9yc2EtcHNzLWltcG9ydC1zcGtpLWtleS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVy
cmErIF0gY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwg
WyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBzcy1p
bXBvcnQta2V5LXZlcmlmeS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC93cHQv
Y3J5cHRvL3JzYS1wc3MtY3Jhc2guYW55Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBo
dHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkud29ya2VyLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFw
S2V5L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53
cmFwS2V5L3Rlc3Rfd3JhcEtleV91bndyYXBLZXkuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMS5odG1s
IFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2st
c2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBv
cnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdl
bmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxl
L3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhNTEyLmh0bWwgWyBQYXNzIF0KK2Ny
eXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4Lmh0bWwgWyBQYXNz
IF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBb
IFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBd
CitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wcml2YXRlLWtleS5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVz
YWdlcy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJs
aWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1q
d2stcHVibGljLWtleS1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGE1MTIuaHRtbCBbIFBh
c3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5LXNpZ24uaHRtbCBb
IFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQ
YXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBQYXNz
IF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1rZXktZW1wdHktdXNhZ2VzLmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1rZXkuaHRtbCBb
IFBhc3MgXQorY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0
bWwgWyBQYXNzIF0KK2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktdmVy
aWZ5Lmh0bWwgWyBQYXNzIF0KK2h0dHAvd3B0L2NyeXB0by9yc2EtcHNzLWNyYXNoLmFueS5odG1s
IFsgUGFzcyBdCitodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkud29ya2VyLmh0bWwg
WyBQYXNzIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzIzNTI3MDI+IFJFR1JFU1NJT046IGZhc3Qv
ZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMgTGF5b3V0VGVzdHMgZmFpbGlu
ZwotWyBIaWdoU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFy
YW5jZXMtY2FwYWNpdHkuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZG9t
L0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5odG1s
IFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWFwcGVhcmFuY2Vz
LWNhcGFjaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0
ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJk
YXI6Ly9wcm9ibGVtLzMyNjIwMDI0PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFuZCBpbXBvcnRlZC93M2MvY2Fu
dmFzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFyZSBmYWlsaW5nCi1bIEhpZ2hTaWVycmEr
IF0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRtbCBbIEZhaWx1
cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0aC5zdHJva2Uu
c2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2NhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0aC5zdHJv
a2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0aC5z
dHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI3OTk1
NzM+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L2lwYS10b25lLWxldHRlcnMuaHRt
bCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L2lwYS10b25lLWxldHRlcnMu
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC90ZXh0L2lwYS10b25lLWxldHRlcnMuaHRtbCBbIEZhaWx1
cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMjc5OTYyND4gUkVHUkVTU0lPTjogTGF5b3V0VGVz
dHMgY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLWNvdmVyYWdlLmh0bWwg
YW5kIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLWNvdmVyYWdlLmh0bWwg
YXJlIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjc3MzL2ZvbnQtdmFyaWFudC1wZXRpdGUtY2Fw
cy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotWyBIaWdoU2ll
cnJhKyBdIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLWNvdmVyYWdlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBldGl0ZS1jYXBzLXN5
bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL2ZvbnQtdmFy
aWFudC1zbWFsbC1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNzk5NTk2PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0
cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnNvbGlkLmh0bWwg
YW5kIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQuaW50ZXJwb2xhdGUuc29saWQuaHRt
bCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVu
dC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFp
bHVyZSBdCitjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnNvbGlk
Lmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQuaW50ZXJw
b2xhdGUuc29saWQuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMjgwMDA5
NT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBpbXBvcnRlZC9ibGluay9mYXN0L2dyYWRpZW50cy9n
cmFkaWVudC10cmFuc3BhcmVuY3kuaHRtbCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gaW1w
b3J0ZWQvYmxpbmsvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtdHJhbnNwYXJlbmN5Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3QvZ3JhZGllbnRzL2dyYWRpZW50
LXRyYW5zcGFyZW5jeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzMyODI2MzkxPiBMYXlvdXRUZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
eGhyL3NldHJlcXVlc3RoZWFkZXItY29udGVudC10eXBlLmh0bSBpcyBmYWlsaW5nIG9uIEhpZ2gg
U2llcnJhCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94
aHIvc2V0cmVxdWVzdGhlYWRlci1jb250ZW50LXR5cGUuaHRtIFsgRmFpbHVyZSBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZXRyZXF1ZXN0aGVhZGVyLWNvbnRlbnQtdHlw
ZS5odG0gWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI4NjQzMDY+IFVuc2tpcCBh
ZnRlciBib3RzIGhhdmUgQ1RGb250Q29weVBoeXNpY2FsRm9udCgpCi1bIEhpZ2hTaWVycmErIF0g
ZmFzdC90ZXh0L3N5c3RlbS1mb250LWphcGFuZXNlLXN5bnRoZXRpYy1pdGFsaWMuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvc3lzdGVtLWZvbnQtamFwYW5lc2Utc3lu
dGhldGljLWl0YWxpYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGF0IHZhcmlhdGlvbiBmb250cyBhcmUgZGlzYWJsZWQgb24gT1NlcyB3
aGljaCBkb24ndCBzdXBwb3J0IHRoZW0uIFNvLAogIyB0aGUgdGVzdCBzaG91bGQgYmUgc2tpcHBl
ZCBvbiBPU2VzIHdoaWNoIGRvIHN1cHBvcnQgdGhlbS4gQXMgc29vbiBhcyBhbGwgT1NlcyBzdXBw
b3J0IHRoZW0sCiAjIHdlIHNob3VsZCBkZWxldGUgdGhlIHRlc3QuCi1bIEhpZ2hTaWVycmErIF0g
ZmFzdC90ZXh0L2ZvbnQtdmFyaWF0aW9ucy1mZWF0dXJlLWRldGVjdGlvbi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCitmYXN0L3RleHQvZm9udC12YXJpYXRpb25zLWZlYXR1cmUtZGV0ZWN0aW9u
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM0Mzc1OTc+
IE11bHRpcGxlIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2ggYXJlIGZhaWxp
bmcgb24gSGlnaCBTaWVycmEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55Lndvcmtlci5odG1s
IFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmFueS5odG1sIFsgRmFpbHVyZSBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0
LWhlYWRlcnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55Lmh0bWwgWyBG
YWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM3MzEwODY+Ci1bIEhpZ2hTaWVycmErIF0g
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RpbWUtbGFiZWxzLXN1cHBvcnQvZWxhcHNlZC10
aW1lLmh0bWwgWyBTa2lwIF0KK21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy90aW1lLWxhYmVs
cy1zdXBwb3J0L2VsYXBzZWQtdGltZS5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVt
LzMzODUwMTg5PgotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbCBbIEZhaWx1cmUgXQoraHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1sIFsgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzczMTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudHMtZmls
dGVyLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtMTUyMCwxOSArMTUwNiw5IEBAIHdlYmtpdC5vcmcv
Yi8xNzc4MjYgaW5zcGVjdG9yL2RvbS9jc3AtYmlnNS1oYXNoLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQogCiB3ZWJraXQub3JnL2IvMTc1OTk4IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L2luc2VjdXJlLWNzcy13aXRoLXNlY3VyZS1jb29raWVzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
Ci0jIEFWQ29udGVudEtleVNlc3Npb24gbm90IGF2YWlsYWJsZSBwcmUtSGlnaCBTaWVycmEKLVsg
U2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRlTWVk
aWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9mcHMtcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwgWyBTa2lwIF0K
LVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRl
U2Vzc2lvbi5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBd
IHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWVuY3J5cHRlZC1ldmVudC5o
dG1sIFsgU2tpcCBdCi0KICMgVXNlci1pbnN0YWxsZWQgZm9udCBpbmZyYXN0cnVjdHVyZSBpcyBv
bnkgcHJlc2VudCBvbiBjZXJ0YWluIE9TZXMuCi13ZWJraXQub3JnL2IvMTgwMDYyIFsgU2llcnJh
IEhpZ2hTaWVycmEgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZGlzYWJsZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3QvdGV4dC91c2Vy
LWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9z
aGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE4NzIyOCBbIFNp
ZXJyYSBIaWdoU2llcnJhIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2xvY2FsLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogCiB3ZWJraXQub3JnL2IvMTgwNTYwIGFjY2Vzc2li
aWxpdHkvbWFjL2h0bWw1LWlucHV0LW51bWJlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAt
MTU0NiwxMCArMTUyMiw2IEBAIHdlYmtpdC5vcmcvYi8xODE0NzkgaHR0cC90ZXN0cy9taXNjL3Ns
b3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsgUGFzcyBJbWFnCiAKIHdlYmtpdC5vcmcv
Yi8xODE0OTQgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tdWx0aXBsZS1saXZlcmVnaW9ucy1ub3Rp
ZmljYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgQSBsb3Qgb2YgR1BVIGhhcmR3YXJl
IHNpbXBseSBjcmFzaGVzIHdpdGggdGhlc2UgdGVzdHMsIHNpbmNlIHRoZXkgYWxsb2NhdGUgYSBs
b3Qgb2YgbWVtb3J5LgotIyBUaGV5IGFyZSBlbmFibGVkIG9uIHN5c3RlbXMgdGhhdCBpbnN0ZWFk
IHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZLgotWyBTaWVycmEgXSBmYXN0L2NhbnZhcy93ZWJnbC9p
bmRleC12YWxpZGF0aW9uLXdpdGgtc3Vic2VxdWVudC1kcmF3cy5odG1sIFsgU2tpcCBdCi0KIHdl
YmtpdC5vcmcvYi8xODAyNjAgaHR0cC93cHQvcmVzb3VyY2UtdGltaW5nL3J0LXJlc291cmNlcy1w
ZXItd29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTgxODMwIFsg
RGVidWcgXSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1kZW55Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQpAQCAtMTU2Miw3ICsxNTM0LDcgQEAgd2Via2l0Lm9yZy9iLzE4MTU2NSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1j
b24KIAogd2Via2l0Lm9yZy9iLzE4MTk2OSBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbCBb
IFNraXAgXQogCi13ZWJraXQub3JnL2IvMTgxODMxIFsgSGlnaFNpZXJyYSsgXSBmYXN0L2Zvcm1z
L3NlYXJjaGZpZWxkLWhlaWdodHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTgxODMxIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVpZ2h0cy5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzE3Mzk0NiBbIERlYnVnIF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2Z1bGxzY3JlZW4tc3VwcG9ydC9mdWxsc2NyZWVuLXN1cHBvcnQtcHJlc3MuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKQEAgLTE1NzksMTUgKzE1NTEsMTIgQEAgd2Via2l0Lm9yZy9iLzE4
Mzc2NCBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0tY29udHJvbC1jb2xvcnMuaHRtbCBbIFBhc3MgXQog
CiB3ZWJraXQub3JnL2IvMTg0MTE2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5k
ZXhlZERCL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4Ny1ldmVudF9vcmRlci5odG0gWyBQYXNz
IEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc3NjE2IFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rl
c3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRUaW1lLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE3NzYxNiBodHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRUaW1lLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogCiB3ZWJraXQub3JnL2IvMTg0NjEwIG1lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXItZHJh
Zy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE4NDYxMiBtZWRpYS9hdWRp
by1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyBGb250IGNv
bGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGV2ZXJ5IE9TLgotd2Via2l0Lm9yZy9iLzE4
NDYyNCBbIFNpZXJyYSBdIGZhc3QvdGV4dC9mb250LWNvbGxlY3Rpb24uaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg0NDU3IG1lZGlhL3ZpZGVvLWFzcGVjdC1yYXRp
by5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDYwOSBwbGF0Zm9ybS9t
YWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS12aWRlby10cmFjay1jaGFuZ2UuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCkBAIC0xNTk5LDEzICsxNTY4LDYgQEAgd2Via2l0Lm9yZy9iLzE4NTY1
OSBbIERlYnVnIF0gYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHUKICMgbWFjT1MgZG9lc24ndCBoYXZlIElDVSB2NTkKIHdlYmtpdC5vcmcvYi8xODUzNzUg
anMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmh0bWwgWyBGYWlsdXJlIF0KIAot
IyA8PSBIaWdoIFNpZXJyYSBkb2Vzbid0IHN1cHBvcnQgTW9kZXJuIEVNRQotWyBIaWdoU2llcnJh
IF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRlTWVkaWFLZXlz
Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvZnBzLWNyZWF0ZVNlc3Npb24uaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0g
cGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtZW5jcnlwdGVkLWV2ZW50Lmh0
bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBw
bGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Zwcy1yZXF1ZXN0TWVkaWFLZXlTeXN0
ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQotCiAjIEltcG9ydGVkIGNzcy10ZXh0IHRlc3Qgc3VpdGUg
ZnJvbSBXUFQKIHdlYmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQtbGluZS1icmVhay1vcGNsbnMtMDEwLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQtbGluZS1icmVh
ay1vcGNsbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE2MjksNTYgKzE1OTEs
NTAgQEAgZmFzdC9jc3MvcHNldWRvLXZpc2l0ZWQtYmFja2dyb3VuZC1jb2xvci1vbi1pbnB1dC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODczOTMgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VC
aXRtYXAtb3JpZ2luLnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotWyBNb2phdmUrIF0gaHR0
cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQoraHR0cC90ZXN0cy9jb29raWVzL3Nh
bWUtc2l0ZSBbIFBhc3MgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSA8cmRhcjovL3By
b2JsZW0vNDcxNjU5Mzk+IGlzIGZpeGVkLgotWyBNb2phdmUrIF0gaHR0cC90ZXN0cy9jb29raWVz
L29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMuaHRtbCBbIFNraXAgXQog
CiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSB0aGUgZml4IGZvciA8cmRhcjovL3Byb2JsZW0v
NDIyNTUyNTE+IGlzIHNoaXBwZWQuCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2Ft
ZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1jcm9zcy1zaXRlLWNvb2tpZXMucGhwIFsgU2tpcCBdCi1b
IE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1z
YW1lLXNpdGUtY29va2llcy5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY29va2llcy9zYW1lLXNp
dGUvc2V0LWZpcnN0LXBhcnR5LWNyb3NzLXNpdGUtY29va2llcy5waHAgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LXNhbWUtc2l0ZS1jb29raWVz
LnBocCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zNjYzOTExNz4gUkVHUkVTU0lPTiAo
TW9qYXZlKTogTGF5b3V0VGVzdCBzdmcvY3VzdG9tL3N1YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRl
cmluZy5zdmcgaXMgZmFpbGluZwotWyBNb2phdmUrIF0gc3ZnL2N1c3RvbS9zdWJwYXRocy1tb3Zl
dG8tb25seS1yZW5kZXJpbmcuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL3N1YnBhdGhzLW1v
dmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
NDA0OTgyOTA+IFJFR1JFU1NJT04gKE1vamF2ZSk6IEhUTUxNZXRlckVsZW1lbnQgTGF5b3V0VGVz
dHMgZmFpbGluZwotWyBNb2phdmUrIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1i
b3VuZGFyeS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZmFzdC9kb20vSFRN
TE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXJlcGFpbnQtb24tdXBkYXRlLXZhbHVlLmh0bWwg
WyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXIt
ZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBmYXN0L2RvbS9IVE1MTWV0ZXJF
bGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGZhc3Qv
ZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3Qv
ZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYm91bmRhcnktdmFsdWVzLmh0bWwgWyBGYWlsdXJl
IF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC1yZXBhaW50LW9uLXVw
ZGF0ZS12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21l
dGVyLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9t
ZXRlci1vcHRpbXVtcy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50
L21ldGVyLXN0eWxlcy5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQxMTAz
MjYwPiBSRUdSRVNTSU9OIChNb2phdmUpOiBUaHJlZSB0ZXh0IHRlc3RzIGZhaWxpbmcgd2l0aCBz
bWFsbCBhbnRpYWxpYXNpbmcoPykgZGlmZnMKLVsgTW9qYXZlKyBdIGZhc3QvaW5saW5lL2JyZWFr
LWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBpbXBv
cnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNoYXBpbmctYXJhYmljLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGltcG9ydGVkL2JsaW5rL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29tYmluaW5nLW1h
cmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyA8IE1vamF2ZSB1c2VzIGZvbnQgc21v
b3RoaW5nLgotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNvbXBvc2l0aW5nL2NvbnRlbnRzLWZvcm1h
dC9zdWJwaXhlbC1hbnRpYWxpYXNlZC10ZXh0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zh
c3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitp
bXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNoYXBpbmctYXJhYmlj
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29tYmluaW5nLW1hcmtzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8IE1vamF2ZSBkb2Vzbid0IHN1cHBvcnQgdGhlIENH
IG5lZWRlZCBmb3IgQ29uaWMgR3JhZGllbnRzCi1bIE1vamF2ZSsgXSBodHRwL3dwdC9jc3MvY3Nz
LWltYWdlcy00L2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUr
IF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZl
KyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3Qv
Z3JhZGllbnRzL2NvbmljLW9mZi1jZW50ZXIuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFz
dC9ncmFkaWVudHMvY29uaWMtY2VudGVyLW91dHNpZGUtYm94Lmh0bWwgWyBQYXNzIF0KLVsgTW9q
YXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWV4dGVuZGVkLXN0b3BzLmh0bWwgWyBQYXNzIF0K
LVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWZyb20tYW5nbGUuaHRtbCBbIFBhc3Mg
XQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLWxhc3Qtc3RvcC5o
dG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1h
bHBoYS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFk
aWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRp
ZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3MgXQoraHR0cC93cHQvY3NzL2Nzcy1pbWFn
ZXMtNC9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRz
L2NvbmljLXJlcGVhdGluZy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy5odG1s
IFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1vZmYtY2VudGVyLmh0bWwgWyBQYXNzIF0K
K2Zhc3QvZ3JhZGllbnRzL2NvbmljLWNlbnRlci1vdXRzaWRlLWJveC5odG1sIFsgUGFzcyBdCitm
YXN0L2dyYWRpZW50cy9jb25pYy1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBdCitmYXN0L2dy
YWRpZW50cy9jb25pYy1mcm9tLWFuZ2xlLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2Nv
bmljLXJlcGVhdGluZy1sYXN0LXN0b3AuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29u
aWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtZ3Jh
ZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMt
Z3JhZGllbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtdHdvLWhpbnRzLmh0
bWwgWyBQYXNzIF0KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWltYWdlcy9tdWx0aXBsZS1wb3NpdGlvbi1jb2xvci1zdG9wLWNvbmljLmh0bWwgWyBQ
YXNzIF0KIAogIyBEYXJrIE1vZGUgaXMgTW9qYXZlIGFuZCBsYXRlci4KLVsgTW9qYXZlKyBdIGNz
cy1kYXJrLW1vZGUgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUvb2xkZXItc3lz
dGVtcyBbIFNraXAgXQotWyBNb2phdmUrIF0gaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVh
cmFuY2UuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBdCi0KLSMgVGVzdCBEYXJrIE1v
ZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24gb2xkZXIgc3lzdGVtcy4KLVsgU2llcnJh
IEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3RlbXMgWyBQYXNzIF0KK2Nzcy1k
YXJrLW1vZGUgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQor
aW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQorZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBd
CiAKIHdlYmtpdC5vcmcvYi8xODk2ODYgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMv
bWlzYy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12aWV3Lmh0
bWwgWyBTbG93IF0KIApAQCAtMTY5NCwxNCArMTY1MCw2IEBAIHdlYmtpdC5vcmcvYi8xOTA4OTIg
WyBEZWJ1ZyBdIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC11bnBh
Y2stCiAKIHdlYmtpdC5vcmcvYi8xOTA5NzYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5Lmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIHdlYmdwdSBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvY2FudmFz
L2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1
IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5vZGVzLXdlYmdw
dS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3Bl
Y3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVD
b250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNp
ZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5o
dG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcv
Yi8xODk2ODAgcGxhdGZvcm0vbWFjL21lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnktdmlkZW8t
cGF1c2VkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTk1NDY2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXkuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBDcmFzaCBdCkBAIC0xNzI5LDcgKzE2NzcsNyBAQCB3ZWJraXQub3JnL2IvMTk2MTEyIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0aW9ucy9jc3Mtc3R5bGluZwog
IyBGbGFreSBmb3Igbm9uIE1hdGhNTCBjb3JlLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9zY3JpcHRzL2NyYW1wZWQtMDAxLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk2NTAgWyBIaWdoU2llcnJhKyBdIGFj
Y2Vzc2liaWxpdHkvbWFjL3ByZXNzLW5vdC13b3JrLWZvci1kaXNhYmxlZC1tZW51LWxpc3QuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2NTAgYWNjZXNzaWJpbGl0eS9tYWMv
cHJlc3Mtbm90LXdvcmstZm9yLWRpc2FibGVkLW1lbnUtbGlzdC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogIyBTa2lwIGlPUy1zcGVjaWZpYyBQb2ludGVyIEV2ZW50cyBXUFQgdGVzdHMuCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJldmVudHMvcG9pbnRlcmV2ZW50X2No
YW5nZS10b3VjaC1hY3Rpb24tb25wb2ludGVyZG93bl90b3VjaC5odG1sIFsgU2tpcCBdCkBAIC0x
NzQ0LDE2ICsxNjkyLDE2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcG9pbnRl
cmV2ZW50cy9wb2ludGVyZXZlbnRfcG9pbnRlcm91dF9wZW4uaHRtbCBbCiAKIHdlYmtpdC5vcmcv
Yi8xOTc0NzMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJjZS10aW1pbmcv
cmVzb3VyY2UtdGltaW5nLWxldmVsMS5zdWIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8xMzY2MjcgWyBNb2phdmUrIF0gbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmlu
Zy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTM2NjI3IG1lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS80NzA4ODkzOT4KLVsgTW9qYXZlKyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtbWVkaWFlbGVtZW50YXVkaW9z
b3VyY2Vub2RlLWludGVyZmFjZS9tZWRpYUVsZW1lbnRBdWRpb1NvdXJjZVRvU2NyaXB0UHJvY2Vz
c29yVGVzdC5odG1sICBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gd2ViYXVkaW8vcmVhbHRpbWVh
bmFseXNlci1mZnQtc2NhbGluZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIHdl
YmF1ZGlvL29zY2lsbGF0b3Itc2luZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW1lZGlhZWxlbWVudGF1ZGlv
c291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VUb1NjcmlwdFByb2Nl
c3NvclRlc3QuaHRtbCAgWyBGYWlsdXJlIF0KK3dlYmF1ZGlvL3JlYWx0aW1lYW5hbHlzZXItZmZ0
LXNjYWxpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJhdWRpby9vc2NpbGxhdG9yLXNpbmUu
aHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTk5MDEzIFsgRGVidWcgTW9qYXZlKyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9DcmVhdGUtU2VjdXJlLXZl
cmlmeS11cmwtc2V0LW5vbi1kZWZhdWx0LXBvcnQuYW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzE5OTAxMyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJzb2NrZXRzL0NyZWF0ZS1TZWN1cmUtdmVyaWZ5LXVybC1zZXQtbm9uLWRlZmF1bHQt
cG9ydC5hbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTA4ODIgWyBN
b2phdmUrIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTkwODgyIGFuaW1hdGlvbnMvY2hhbmdlLW9uZS1hbmltLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80ODc4MTA5OD4KIFsgQ2F0YWxpbmEr
IF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgUGFzcyBdCkBAIC0xODQ3
LDE0ICsxNzk1LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDI1MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy8yZGNvbnRleHQvcGF0aC1vYmplY3RzLzJkLnBhCiAKIHdlYmtpdC5vcmcvYi8y
MDI1OTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvbGluZS1zdHls
ZXMvMmQubGluZS5jYXAucm91bmQuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk4
ODY3IFsgTW9qYXZlKyBdIHdlYmdsL21hbnktY29udGV4dHMuaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzE5ODg2NyB3ZWJnbC9tYW55LWNvbnRleHRzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0
Lm9yZy9iLzIwMzE3MSBpbnNwZWN0b3IvbGF5ZXJzL2xheWVycy1mb3Itbm9kZS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzQxNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvYmVmb3JlLWxvYWQtMDAxLmh0bWwgWyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwMzMwNSBbIEhpZ2hTaWVycmEgRGVidWcgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvcHJvcGVydGllcy12
YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAzMzA1IFsgSGln
aFNpZXJyYSBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVyaXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL2V2ZW50LWRpc3BhdGNoLnRlbnRhdGl2ZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzNTYgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVz
LXZhbHVlLTAwMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTg3MCw3ICsxODE2LDcgQEAg
d2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
Ni5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsg
XSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItOS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGlu
YSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRp
bmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJhdWRp
by9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtMTg4NSwyMCAr
MTgzMSwyMCBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRl
cnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNzCiB3ZWJraXQub3JnL2IvMjA1NzU3IHdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtdXBsb2FkLXNpemUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjA1NzU2IHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlMi9nbHNsMy9uby1hdHRyaWJ1dGUtdmVydGV4LXNoYWRlci5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzIwNTg2MiBbIE1vamF2ZSsgXSB3ZWJncHUvd2hsc2wvd2hpbGUt
bG9vcC1icmVhay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8y
MDU4NjUgWyBNb2phdmUrIF0gd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFyaWFibGUtbGlm
ZXRpbWUtMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDU4
NjcgWyBNb2phdmUrIF0gd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1ODYyIHdlYmdwdS93aGxzbC93aGls
ZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNTg2NyB3ZWJncHUv
ZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzE5NzIwNCB3ZWJleHBvc2VkL2Nzcy1wcm9wZXJ0aWVzLWJlaGluZC1mbGFn
cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUgbmF2aWdhdG9yLmxhbmd1YWdlIHRlc3Rz
IHJlbHkgb24gZnVuY3Rpb25hbGl0eSBvbmx5IGF2YWlsYWJsZSBpbiByZWNlbnQgcmVsZWFzZXMg
b2YgbWFjT1MgQ2F0YWxpbmEgYW5kIG9ud2FyZC4KLXdlYmtpdC5vcmcvYi8yMDAwNDMgWyBTaWVy
cmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9z
eXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMDAwNDMgWyBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsgUGFzcyBGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9p
bXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcgWyBGYWlsdXJlIFBhc3MgXQogCiAjIExv
Y2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5hYmxlZCBvbiBjZXJ0YWluIE9TZXMuCi13
ZWJraXQub3JnL2IvNzc1NjggWyBTaWVycmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBm
YXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzc3NTY4IFsgU2llcnJhIEhpZ2hTaWVycmEgTW9qYXZlIENhdGFsaW5hIF0gZmFzdC90
ZXh0L2xvY2FsZS1zaGFwaW5nLWNvbXBsZXguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzc3NTY4IFsgTW9qYXZlIENhdGFsaW5hIF0gZmFzdC90ZXh0L2xvY2FsZS1zaGFw
aW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi83NzU2OCBbIE1vamF2
ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy1jb21wbGV4Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzIyMiBzdmcvd2ljZC9yaWdodHNpemlu
Zy1ncmlkLnhodG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMjAxOSw4ICsxOTY1LDggQEAgd2Vi
a2l0Lm9yZy9iLzIwOTA4NCBjc3MzL3NlbGVjdG9yczMveG1sL2NzczMtbW9kc2VsLWQ0LnhtbCBb
IFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA3MTUwIHBsYXRmb3JtL21hYy93ZWJydGMv
Y2FwdHVyZUNhbnZhcy13ZWJydGMtc29mdHdhcmUtZW5jb2Rlci5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogIyBUaGUgbGluZSBicmVha2luZyBydWxlcyBjaGFuZ2VkIGluIElDVSA2Ni4gV2UndmUg
dXBkYXRlZCB0aGUgdGVzdHMgdG8gbWF0Y2gsIGJ1dCBvbGQgcGxhdGZvcm1zIHdvbid0IGdldCB1
cGRhdGVkIGxpbmUgYnJlYWtpbmcgcnVsZXMuCi13ZWJraXQub3JnL2IvMjA5MjUwIFsgU2llcnJh
KyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJl
YWsvbGluZS1icmVhay1ub3JtYWwtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIwOTI1MCBbIFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJlYWstc3RyaWN0LTAxNS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDkyNTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1icmVhay9saW5lLWJyZWFrLW5vcm1hbC0wMTUu
eGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA5MjUwIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1icmVhay1z
dHJpY3QtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3ODU4
IGZhc3QvY2FudmFzL3dlYmdsL3NpbXVsYXRlZC12ZXJ0ZXhBdHRyaWIwLWludmFsaWQtaW5kaWNp
ZXMuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJz
dHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRjYzI2ZDRiMmQyNjRjMmVlNWMw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAot
RURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlk
QmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9m
ICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4g
SSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+
IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLTEyMzQ1NgotMTAsNTcyLDAs
MTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01
Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0xMCw1NzIsNTEsMTgKLTEwLDU3
Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAs
MCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2UwNzQwMTAxMDYwZWNjYzQ5MjA1
NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRmNWMzZDMyYzQxMjFlMDQyNzQ0
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1
dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
LTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3RpbmcgdGV4dCB3aXRoIGJyIGVs
ZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwgMTAwKTogaGVsbG8KICg2LCAx
KToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVuZGVmaW5lZAor
KDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAzOWYxNTMxM2Y0ZGM0MmExNDRl
ZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3OGYzMmJkZjVlZDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwKQEAgLTM0
LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAgICAgICAgICAg
bG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDYsIDEpOiAi
ICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDYsIDEp
LnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAiICsgdGV4dElucHV0Q29udHJv
bGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEpLnN0cmluZygpKTsgLy8gc2hv
dWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQg
YmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hv
dWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1
dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hv
dWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hv
dWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUzZjllNTZlMTdlYTE3MzU4ZWEx
YzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNlMTIxZTQ2ODNiZmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4
dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAoMTI8Yj4zPGk+NDU2PC9pPjwv
Yj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAyKTogNgotKDEwMCwgMCk6IHVu
ZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKTogCisoMTAwLCAxMDApOiAK
IAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KQogdG90YWwgbGVu
Z3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9h
dHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAppbmRl
eCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODliMGMzLi5jZjZjOTExZDRiNTc1
YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5IHsgbWFyZ2luOiAxMDsg
cGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAsIDEwMCkuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIo
NSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFu
Z2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJ
bnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8g
c2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7
IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7
IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7
IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBsb2coIlxuVGVz
dGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KSIpOwogICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZuYnNwOyZuYnNwOzMgJm5ic3A7
Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394860</attachid>
            <date>2020-03-28 23:23:26 -0700</date>
            <delta_ts>2020-03-29 10:19:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200328232325.patch</filename>
            <type>text/plain</type>
            <size>264122</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2ZGI1NTViNWMyNjEw
MGE3OWUwZTBjNTQ1MGVjMzMwYjE5ZDI3ZC4uZGMwNGE5MjdhYTM2MjI0MGRjYzEwNTRhY2Y5YjVl
NzA5ZWFjZTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0yOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBQdXQgQ2hhcmFjdGVyUmFu
Z2UgYW5kIENoYXJhY3Rlck9mZnNldCBpbnRvIGEgaGVhZGVyLCBDaGFyYWN0ZXJSYW5nZS5oLgor
ICAgICAgICAtIFVzZSB0aGVtIGZvciBjYXNlcyBvZiBjaGFyYWN0ZXIgb2Zmc2V0cy4gQmVjYXVz
ZSB0aGlzIGNhbiBiZSBhIHNpbmdsZQorICAgICAgICAgIG9mZnNldCBpbnRvIGFuIGVudGlyZSBk
b2N1bWVudCwgdXNlIGEgNjQtYml0IGludGVnZXIgc28gd2UgZG9uJ3QgbGltaXQKKyAgICAgICAg
ICBhbiBlbnRpcmUgZG9jdW1lbnQgdG8gMl4zMiBjaGFyYWN0ZXJzOyBpbiB0aGVvcnkgdGhpcyBt
YWtlcyBpdCBzbyB3ZQorICAgICAgICAgIGNhbiBzdXBwb3J0IGEgZG9jdW1lbnQgd2l0aCB0b25z
IG9mIHRleHQgbm9kZXMgdGhhdCBhZGQgdXAgdG8gbW9yZQorICAgICAgICAgIHRoYW4gMl4zMi4K
KyAgICAgICAgLSBCZWNhdXNlIENoYXJhY3RlclJhbmdlIHVzZXMgNjQtYml0IGludGVnZXJzIHdl
IGNhbiBub3cgY29udmVydCBtb3JlCisgICAgICAgICAgZWFzaWx5IHRvIGFuZCBmcm9tIE5TUmFu
Z2UgYW5kIENGUmFuZ2Ugb24gQ29jb2EgcGxhdGZvcm1zLiBPbmUgZGlmZmVyZW5jZQorICAgICAg
ICAgIGlzIHRoYXQgQ2hhcmFjdGVyUmFuZ2UgZG9lc24ndCB1c2UgYSAibm90IGZvdW5kIiB2YWx1
ZTsgaW5zdGVhZCB3ZQorICAgICAgICAgIHVzZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gd2hl
biB3ZSBuZWVkIGEgbnVsbCB2YWx1ZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6IEFkZGVk
IENoYXJhY3RlclJhbmdlLmguCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6CisgICAgICAgIFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdGV4dE1hcmtlckZvckluZGV4Ol0pOiBEaXR0
by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6
IFRha2UgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OmFkZE1hcmtlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIpOiBEaXR0by4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5n
ZXMuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDogRXhwb3J0IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbiBzbyBpdCBjYW4gYmUgdXNlZAorICAgICAgICBvdXRzaWRlIG9mIFdlYkNvcmUu
CisKKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmFz
dElzQ2hhcmFjdGVyRGF0YSk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0aGUgTm9kZSBjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aCk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0
aGUgTm9kZSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyk6IEFkZGVkLiBBbmFsb2dvdXMgdG8gdGhlCisgICAgICAgIFJhbmdlOjpzZWxlY3RO
b2RlQ29udGVudHMgZnVuY3Rpb24uCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICBVc2UgQ2hhcmFjdGVyQ291
bnQvUmFuZ2UsIHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKiBlZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb3Jy
ZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVy
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2lu
Z1Jlc3VsdCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHcmFtbWF0aWNhbEVycm9ycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1pc3NwZWxsaW5ncyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VW
YWx1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6
cmFuZ2VMZW5ndGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1BhcmFncmFwaDo6c3VicmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCBjb25zdCk6IERpdHRvLiBBbHNvIHVz
ZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjpj
aGVja2luZ1N0YXJ0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kIGNvbnN0KTogRGl0dG8uIEFsc28gY29tcHV0ZQorICAg
ICAgICB0aGlzIGJ5IGFkZGluZyBzdGFydCBhbmQgbGVuZ3RoLCBhbmQgZG9uJ3QgY2FjaGUgaXQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3Ro
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RCYWRHcmFtbWFyIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNh
bFJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxNaXNzcGVsbGluZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLiBBbHNvIGdvdCByaWQgb2YK
KyAgICAgICAgbV9jaGVja2luZ0VuZCBzaW5jZSBpdCdzIHN1ZmZpY2llbnQgdG8gY2FjaGUgdGhl
IHN0YXJ0IGFuZCB0aGUgbGVuZ3RoLgorICAgICAgICBTaG91bGQgY29tZSBiYWNrIGxhdGVyIGFu
ZCB1c2UgQ2hhcmFjdGVyUmFuZ2UgaW5zdGVhZCBvZiAyeCBDaGFyYWN0ZXJDb3VudC4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjbGFtcGVkQWRkKTogQWRkZWQuIEhlbHBzIGltcGxlbWVudCByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UgaW4gYSB3YXkKKyAgICAgICAgdGhhdCBjYW4gd29yayB3aXRoIGFueSBjaGFyYWN0ZXIg
Y291bnQgd2l0aG91dCBjb25jZXJuIGFib3V0IG92ZXJmbG93LgorICAgICAgICAoV2ViQ29yZTo6
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKTogQWRkZWQuIFJlcGxhY2VzIGJvdGggc3VicmFuZ2UgYW5k
CisgICAgICAgIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLCB1c2luZyBhbiBhbGdvcml0aG0g
Y2xvc2UgdG8gdGhlIG9uZSBmcm9tCisgICAgICAgIHRoZSBsYXR0ZXIgZnVuY3Rpb24sIGluY2x1
ZGluZyB3b3JrYXJvdW5kcyBpdCBoYWQuIFJlcGxhY2VkIHRoZSBib29sZWFuCisgICAgICAgICJm
b3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24iIHdpdGggdGhlIFRleHRJdGVyYXRvckJlaGF2aW9yIG9w
dGlvbnMsIHdoaWNoIHNlZW1zCisgICAgICAgIHRvIG1ha2UgZ29vZCBzZW5zZSBhdCBhbGwgdGhl
IGNhbGwgc2l0ZXMuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24p
OiBBZGRlZC4gTGlrZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UsIGJ1dAorICAgICAgICBpbnN0ZWFk
IG9mIHJlc29sdmluZyBDaGFyYWN0ZXJSYW5nZSB0byBTaW1wbGVSYW5nZSwgcmVzb2x2ZXMgQ2hh
cmFjdGVyQ291bnQKKyAgICAgICAgdG8gYSBCb3VuZGFyeVBvaW50LiBNYWRlIGEgc2VwYXJhdGUg
ZnVuY3Rpb24gZm9yIHRoaXMgaW4gY2FzZSB3ZSBsYXRlciByZWZhY3RvcgorICAgICAgICBmb3Ig
ZWZmaWNpZW5jeSwgYnV0IGZvciBub3cgc2ltcGx5IGNhbGxzIHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZSB3aXRoIGEgemVybworICAgICAgICBsZW5ndGggcmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5oOiBNb3ZlZCBDaGFyYWN0ZXJDb3VudCBhbmQgQ2hhcmFnZXJSYW5nZSBp
bnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLiBSZXBsYWNlZCBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZAorICAgICAgICBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlIHdpdGggcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uIGFuZCByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAg
IChXZWJDb3JlOjpkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOiBEaXR0by4K
KyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQpOiBEaXR0
by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJh
bmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhU
ZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDogRGl0
dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzdWJyYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6IERpdHRvLgorCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDogTWFkZSBsb2NhdGlvbiBhbmQgbGVuZ3RoIHVuc2lnbmVkIHJh
dGhlciB0aGFuIHNpZ25lZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRv
LgorCiAyMDIwLTAzLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGVkaXRpbmcgY29va2llIGtleS92YWx1ZXMgZnJv
bSBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjA5Y2RlNWU5NGI3OTAwNjIzZjU0MDZhYzlkNWYwZjBm
MTEwODg0OS4uMjMyYTc3M2JhOTk4ODgzMWNlNDY0YjlkYzBhYTU4OGRkNjE1Yzk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wMy0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvRWRpdGluZ1JhbmdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RWRpdGluZ1JhbmdlOjp0b1JhbmdlKTogVXNlIENoYXJhY3RlckNvdW50L1JhbmdlLAor
ICAgICAgICByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisKKyAgICAgICAgKiBTaGFy
ZWQvRWRpdGluZ1JhbmdlLmg6IEFkZGVkIGEgRklYTUUgYWJvdXQgcmVwbGFjaW5nIHdpdGggQ2hh
cmFjdGVyUmFuZ2UuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmVuY29kZSk6
IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVj
b2RlKTogQWRkZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46
OmVuY29kZSk6IFVwZGF0ZWQgdG8gdXNlIENoYXJhY3RlclJhbmdlLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUpOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6IEFkZGVkIENo
YXJhY3RlclJhbmdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdS
ZXN1bHQpOiBVc2UgQ2hhcmFjdGVyQ291bnQvUmFuZ2UsCisgICAgICAgIHJlc29sdmVDaGFyYWN0
ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRhaWwp
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHcmFtbWFyRGV0YWlsOjpsb2NhdGlvbiBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJHcmFtbWFyRGV0YWlsOjpsZW5ndGggY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENo
ZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2Vy
Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJhbmdlQW5kT2Zm
c2V0UmVsYXRpdmVUb1NlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVk
U3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsZXRlU3Vy
cm91bmRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhE
ZWx0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dCk6IERpdHRvLgorCiAyMDIwLTAzLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGVkaXRpbmcg
Y29va2llIGtleS92YWx1ZXMgZnJvbSBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBiYmQ5ZGJjYWRkNmExYWNlNGFkODNlNDM0ZGY4ZGY1NGM3OTAxNzdmLi5lMmFlOGVm
YjQ5MWVjMWE4ZjhmNWRkZTgyOTU5NDJlYTM4ZjU5MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMjggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6IFVzZSBD
aGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jh
bmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6IERp
dHRvLgorICAgICAgICAoY29yZSk6IERpdHRvLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6IERpdHRv
LgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9j
b252ZXJ0VG9ET01SYW5nZTpyYW5nZUlzUmVsYXRpdmVUbzpdKTogRGl0dG8uCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAodGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4
dENoZWNraW5nUmVzdWx0KTogRGl0dG8uCisKIDIwMjAtMDMtMjcgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkg
c2hvdWxkIGF2b2lkIHJlYWRpbmcgVVJMIHN0cmluZ3MgZnJvbSB0aGUgcGFzdGVib2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDI3NDE5NGVhYTA3MjJiZTdlYjFhZmJmYWIxY2Uz
MWYzMTAyNDc3MmIuLjkxNDQzZWRlMWEzOGZkNDJjMTUzMzlkYWNhZTMxY2U4MGE5MWFkZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0yOCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dy
YW1tYXJPZlN0cmluZyk6IFVzZSBDaGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2
ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVz
dGluZyk6IERpdHRvLgorCiAyMDIwLTAzLTE4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgYSBwcmVmbGlnaHQgZmFpbHMgaWYgcmVzcG9uc2Ug
aGVhZGVycyBhcmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWFkNTM3ODUzMjRiYjM0
YzBkZGI5ZGNjMTE3MGM4Y2RkNGEzNjZhOC4uNzk3ZDNjMTM5NDgzM2FkODhiNzUzNGRkMjRlM2Rm
ZTY3NjE5ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00ODcsNiArNDg3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMuaAogCisgICAgZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCiAgICAgZWRp
dGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25IaWdo
bGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxpbmUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhM2M0YjRk
ZjE5NDI5Mzk0YWYzODNmZjI1MGY2MDI1OTk2Nzk0MmIuLmM1OTBlMTVlYjBmZjBkNzFjMzk2ODM0
NmM3ZTU3YjY0ZDcwNTcyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzQsNiArMjczNCw3IEBACiAJCTkzRjE5QjE3MDgy
NDVFNTkwMDFFOUFCQyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxp
YmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJH
TExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oICovOyB9
OwogCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDVCRjEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi87IH07CisJCTkzRjJDQzkzMjQy
N0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJh
Y3RlclJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2RjFFQjEyN0Y3
MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJOTNGOTI1NDMwRjdF
RjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcy
MDA4NTQwNjQgLyogSlNDb21tZW50LmggKi87IH07CkBAIC0xMDkzNCw2ICsxMDkzNSw3IEBACiAJ
CTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHTExvc2VDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRjEyRDUzMzU2
MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4
dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29u
dGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUIxMjdG
NzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTksNiArMjE3NjEsNyBAQAogCQkJCTkzMzA5RDhDMDk5
RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi8sCiAJCQkJRjREOTgx
N0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8sCiAJCQkJ
RjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovLAor
CQkJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovLAogCQkJ
CTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywK
IAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
ICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjk2NDIsNiArMjk2NDUsNyBAQAogCQkJCUZEMzE2MDAyMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
MDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ODMxMDc1Y2QzMTFkOTUyYzJiMTg2NTliZmUzNDg1NGVhMTdjNzViLi5kNTYyOTA5ZmZkMjFkNTg0
NmEzNzQ4YTQ3NGQ2ZTM5Y2VhOGE0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjMzOCwxMSArMjMzOCwxMCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKWxpdmVSYW5nZQogCiAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJ
TlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFuZ2Uu
bGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJ
TlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0
aW9uOwotICAgICAgICAKKwogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
d2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNlbnRy
YXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KICAgICAvLyBXZSBo
YXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUg
RE9NIGZvciB0aG9zZSBpcyBub3QKQEAgLTIzNTIsNyArMjM1MSw5IEBAIC0gKFJlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50KiBz
ZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksICpyYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5lMTNlMzNjOGZhNmQ4MmI2Zjhi
NmEyMzg0ZDk1YThiZjQ4MTgwYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQuLjM2MmQ3NDc0
MzQ5ZTRiY2Y4YjM2MzljZGY0MTJjYTc5YTNjOGIwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsKIAorc3RydWN0
IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAgICB+
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNv
bnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVudE1h
cmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVy
cHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAgIHZvaWQgYWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0
TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOworICAgIHZvaWQg
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgUmV0YWlu
UHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2VkQ29udGVudE1h
cmtlcihSYW5nZSYpOwogCkBAIC0xMDcsNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgYWRkTWFya2VyKE5vZGUmLCBjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYpOworICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVSYW5n
ZSYpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcj4gTWFya2Vy
TGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBzdGQ6OnVuaXF1ZV9wdHI8
TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOTkzZTk1MWYx
YTUwYTRkYmE5ZjkzYzFlODFmZTVlMmIxN2FlN2Y5OC4uYzI4ZTcwNmIxMDU2ZjZlYTVlOTA0OWQw
MGE0NjJjZDNhNWExMjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIyNiw3ICsyMjYsNyBA
QCBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiAv
LyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0byAibWFrZSIgaW5zdGVhZCBvZiAiY3Jl
YXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0IGFs
bG9jYXRlIGhlYXAgb2JqZWN0cy4KIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKLVBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CitXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25z
dCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBiNGZlMmI4
NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhLi5hNDMzOGFiMjBmYzUyZjJmZjI3ZGNi
NWI3MDIwOGE3ZjdiMzA2MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTUz
LDQgKzUzLDIzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3Qg
U2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9
PSBiLmVuZDsKIH0KIAorLy8gRklYTUU6IE5vZGU6OmlzQ2hhcmFjdGVyRGF0YSBzaG91bGQgdXNl
IGFuIGFsZ29yaXRobSBsaWtlIHRoaXMsIHNpbmNlIEknbSBhc3N1bWluZyBpdCdzIGZhc3RlciB0
aGFuIHRoZSBpc0NoYXJhY3RlckRhdGFOb2RlIHZpcnR1YWwgY2FsbCBpbiBtb3N0IGNhc2VzLgor
c3RhdGljIGJvb2wgZmFzdElzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKQoreworICAg
IHJldHVybiAhbm9kZS5pc0NvbnRhaW5lck5vZGUoKSAmJiAobm9kZS5pc1RleHROb2RlKCkgfHwg
bm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgTm9kZTo6bGVuZ3RoIHNpbmNlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBjYWxscyB0aGlzIGEg
bm9kZSdzIGxlbmd0aC4KK3N0YXRpYyB1bnNpZ25lZCBsZW5ndGgoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICBpZiAoZmFzdElzQ2hhcmFjdGVyRGF0YShub2RlKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PENoYXJhY3RlckRhdGE+KG5vZGUpLmxlbmd0aCgpOworICAgIHJldHVybiBub2RlLmNv
dW50Q2hpbGROb2RlcygpOworfQorCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4geyB7IG5vZGUsIDAgfSwgeyBub2Rl
LCBsZW5ndGgobm9kZSkgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4
IGFjZDk4NTVhODkxOWMzNzZlMTU3ZDFjZWQ5YzVkZWVkN2ExOTU3MjQuLjk1ODJkZjhjMzMyNmM4
OTg1NWJiOGRlYTExNDYzMzVjNDY3MTNhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC01MSw2ICs1MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgU2ltcGxlUmFuZ2UoY29u
c3QgUmVmPFJhbmdlPiYpOwogfTsKIAorV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmKTsKKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogaW5saW5lIFNpbXBsZVJhbmdl
OjpTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGViZDRj
YWIzMjZmMmMwOTc1NTQwY2IxZDZmOWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2ZGQwYjNiNzhkZGJk
MzIyYzMxMzM0ZTY4ODA2Zjk4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1OTksMTggQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2Uo
Y29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNyZWF0
ZShyYW5nZS5jbG9uZVJhbmdlKCksIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKIAogICAgIC8vIFJl
Y2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZCBtb2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9yaWdp
bmFsIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZhbGlk
LiBSYWRhcjogMTAzMDUzMTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFyYWdy
YXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgodHJlZVNjb3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBoT2Zmc2V0SW5UcmVl
U2NvcGUsIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0aCgp
KTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uKQor
ICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24gPSByZXNv
bHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHRyZWVT
Y29wZVJvb3QpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSk7CisgICAgYXV0byB1cGRhdGVk
UGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBtYWtlQm91bmRhcnlQb2ludChtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGlmICghdXBkYXRlZFBh
cmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0
RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIGF1dG8gcmVwbGFjZW1l
bnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNv
bnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVybmF0
aXZlLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2ZUxlbmd0aEFzQ2hh
cmFjdGVyQ291bnQgPSBhbHRlcm5hdGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50
UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdyYXBoU3RhcnRDb250
YWluaW5nQ29ycmVjdGlvbiwgKnVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVjdGlv
biB9LCB7IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmVMZW5ndGhBc0No
YXJhY3RlckNvdW50IH0pOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50IHN1
Y2NlZWRlZC4KLSAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpICE9IGFs
dGVybmF0aXZlKQorICAgIGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZSkgIT0gYWx0ZXJu
YXRpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNlbWVu
dFJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpOworICAgIGF1dG8mIG1hcmtlcnMgPSBy
ZXBsYWNlbWVudFJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGZvciAoYXV0
byBtYXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKICAgICAgICAgbWFya2Vycy5hZGRNYXJr
ZXIocmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JBcHBs
aWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiYjkyYzAy
MTIxYTNiN2IzOTJmNTI5ZjhhYjc2ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhhZDI1MTI5NmI0Mzky
YjZhOWJjNjdmNWViMGQ4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcApAQCAtMjgzLDEyICsyODMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgewotICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBzdGFydEluZGV4LCAwLCB0cnVl
KTsKLSAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgaWYg
KHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCi0gICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFy
dFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAg
IH0KKyAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
c2NvcGUpLCBzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqc2NvcGUpLCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICB1cGRhdGVTdGFydEVuZChzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0
eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5
MzZmZTJkNjEyYjdmMzNkZjFiMjk2MzdlYWQ0NGJiOTM2YWY2ZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKQEAgLTAsMCArMSw5OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNlbmRpZgorCisjaWYgVVNFKEZP
VU5EQVRJT04pCit0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQ2hhcmFjdGVyQ291bnQgPSBzdGQ6OnNpemVfdDsK
Kworc3RydWN0IENoYXJhY3RlclJhbmdlIHsKKyAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiB7
IDAgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAwIH07CisKKyNpZiBVU0UoQ0YpCisg
ICAgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElP
TikKKyAgICBvcGVyYXRvciBOU1JhbmdlKCkgY29uc3Q7CisjZW5kaWYKK307CisKKyNpZiBVU0Uo
Q0YpCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFuZ2Up
OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKK09wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisjZW5kaWYKKworLy8gaW5saW5lcworCisj
aWYgVVNFKENGKQorCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIENGUmFuZ2UoKSBj
b25zdAoreworICAgIHJldHVybiBDRlJhbmdlTWFrZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKwor
aW5saW5lIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoQ0ZSYW5n
ZSByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQgfHwg
cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKHJhbmdlLmxlbmd0aCA+PSAwKTsKKyAg
ICBpZiAocmFuZ2UubG9jYXRpb24gPCAwIHx8IHJhbmdlLmxlbmd0aCA8IDApCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJhY3RlclJhbmdlIHsgc3RhdGljX2Nh
c3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVy
Q291bnQ+KHJhbmdlLmxlbmd0aCkgfTsKK30KKworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElP
TikgJiYgZGVmaW5lZChfX09CSkNfXykKKworaW5saW5lIENoYXJhY3RlclJhbmdlOjpvcGVyYXRv
ciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UobG9jYXRpb24sIGxl
bmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3Rl
clJhbmdlKE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IE5TTm90
Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJhY3Rl
clJhbmdlIHsgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCB9OworfQorCisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxNTRiYjg3YzMzMWQ0MWQ5MTYxNjJlN2Q5MTEwZDQ3
ODgyN2QxYzcwLi40NmMyNTE3MmViMmJlZGFmMjVlNzkzMjNmNWJmMzgyMzljYTEwYWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAt
MTQxNSw4ICsxNDE1LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFw
aHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZSA9PSBkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgaW50IGVuZEluZGV4ID0gLTE7CisgICAgT3B0
aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IHN0YXJ0SW5kZXg7CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVy
Q291bnQ+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5kaW5n
U2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAm
JiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwpAQCAtMTUy
OCwxNiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBo
cyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlmIChzdHlsZUlu
RW1wdHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkKICAgICAgICAgYXBw
bHlTdHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAgaWYgKHByZXNlcnZl
U2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJlc2VydmVTZWxlY3Rp
b24gJiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAgICAgICAvLyBGcmFnbWVudCBjcmVh
dGlvbiAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJlZ3VsYXIKICAgICAg
ICAgLy8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2VzIHRoYXQgd2VyZSBy
ZW5kZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJlIGNv
bGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAgICAg
IC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9jYXRp
b24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCBy
ZXR1cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRp
b25JbmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGVu
ZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290
LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAgICBp
ZiAoc3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9uKCksIERP
V05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOworICAgICAgICBhdXRvIHN0YXJ0ID0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9uSW5k
ZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgYXV0byBlbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICplbmRJbmRleCwgVGV4
dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSwgb3JpZ2lu
YWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKaW5kZXggNjA0N2I5NDY0M2UzZDVlYTU3M2FmYmRjZjY3NmIyMDExYWM4NzVmNy4uZGZiYTcy
MWY1ZWFkM2EyMDNlZDZmNjRiOWJjMDVlYWQyMzllYzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCkBAIC0xMTE0LDEyICsxMTE0LDEwIEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENv
bnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1ZSk7Ci0gICAgLy8g
Q2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBvcGVyYXRpb25zIGlu
dmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAotICAgIC8vIG9mIHByb2JsZW1zIHdpdGggVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMuCi0gICAgaWYg
KCFyYW5nZSkKKyAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVy
biB7IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBpbmRleEFz
Q2hhcmFjdGVyQ291bnQgPSBpbmRleDsKKyAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cygqc2NvcGUpLCBpbmRleEFzQ2hhcmFjdGVyQ291bnQsIFRleHRJdGVyYXRvckVtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2Rl
JiBub2RlLCBpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDNhYzBm
YzAxMDk1MmJhYzRmMTA2ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uYjY5NDg5Zjc2NTc1ZDVmYTI4M2Jl
Y2FkMDRjOTEyZWVkOTBkYzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjIy
MywxNSArMjIyMywxNSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFmdGVyV3Jh
cCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBzZWFyY2hF
bmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoKTsKICAg
ICAKLSAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IG1p
c3NwZWxsaW5nT2Zmc2V0ID0gMDsKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7Ci0g
ICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IGdyYW1t
YXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdl
OwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwogICAgIFN0cmluZyBtaXNzcGVsbGVkV29y
ZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zmc2V0ID0g
MDsKKyAgICBDaGFyYWN0ZXJDb3VudCBmb3VuZE9mZnNldCA9IDA7CiAgICAgU3RyaW5nIGZvdW5k
SXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBpZiAo
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBAIC0yMzA3LDEwICsyMzA3LDEwIEBAIHZv
aWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVj
dGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBzbyB3ZSBkcmF3IHRo
ZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIEFTU0VSVChiYWRHcmFt
bWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxv
Y2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VS
VChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICAKICAgICAgICAgLy8g
RklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5jdHVhdGlv
biBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCBncmFtbWFyUGhy
YXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgp
OworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgq
Z3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0YWls
LnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRHcmFt
bWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0
aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApAQCAtMjMyMiw3ICsyMzIyLDcgQEAg
dm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBidXQgbm90IGFueSBl
YXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1cGRhdGUgdGhlIHNw
ZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJhdyB0
aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAgICAgICAgYXV0byBtaXNzcGVsbGlu
Z1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCBtaXNz
cGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOworICAgICAgICBhdXRvIG1p
c3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5n
ZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgfSk7CiAgICAg
ICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obWlz
c3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAgLTI3NzMsNyArMjc3Myw3IEBAIHZvaWQg
RWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNraW5nKFJhbmdlJiByYW5nZVRvUmVwbGFj
ZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFwcGx5KCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRMZW5n
dGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5n
ZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgQ2hhcmFjdGVyQ291bnQgcmVz
dWx0TG9jYXRpb24sIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCkKIHsKICAgICBhdXRvJiBz
Y29wZSA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgp
LnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSk7CiAKQEAgLTI3ODYsMTAgKzI3ODYsOSBAQCBz
dGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGgoVGV4dENoZWNraW5nUGFyYQogICAgIC8vIFRleHRDaGVja2luZ1BhcmFncmFwaCBtYXkg
YmUgb3JwaGFuZWQgYWZ0ZXIgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtdXRhdGVkIERPTS4K
ICAgICAvLyBTZWUgPHJkYXI6Ly8xMDMwNTMxNT4sIGh0dHA6Ly93ZWJraXQub3JnL2IvODk1MjYu
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFwaExvY2F0aW9uLCBwYXJh
Z3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCk7Ci0KLSAg
ICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5ld1Bh
cmFncmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwotICAg
IHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2UuY29w
eVJlZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5nZS5n
ZXQoKSk7CisgICAgYXV0byBuZXdQYXJhZ3JhcGhSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHBhcmFncmFwaExvY2F0
aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0
aCB9KTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZShuZXdQYXJhZ3JhcGhSYW5nZSwgeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3Ro
KCkgfSk7CisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKGNyZWF0ZUxpdmVS
YW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1Jh
bmdlKSwgY3JlYXRlTGl2ZVJhbmdlKG5ld1BhcmFncmFwaFJhbmdlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC0yODExLDcgKzI4
MTAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1Jl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogI2VuZGlmCiAKICAgICAvLyBFeHBhbmQg
dGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBjaGVj
a2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KLSAgICBpbnQgc2VsZWN0aW9uT2Zmc2V0ID0g
MDsKKyAgICBDaGFyYWN0ZXJDb3VudCBzZWxlY3Rpb25PZmZzZXQgPSAwOwogICAgIGJvb2wgdXNl
QW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSBmYWxzZTsKICAgICBib29sIHNlbGVjdGlvbkNoYW5n
ZWQgPSBmYWxzZTsKICAgICBib29sIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZhbHNl
OwpAQCAtMjgyMyw5ICsyODIyLDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNv
bnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAg
ICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gcGFyYWdyYXBoLm9mZnNl
dFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICAgICAgcmVz
dG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rp
b25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dExlbmd0aCgp
IHx8IHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpID09IG5ld2xpbmVD
aGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVj
dGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRleHQo
KVtzZWxlY3Rpb25PZmZzZXQgLSAxXSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKICAgICAgICAgICAg
ICAgICBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJh
Z3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdy
YXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkpKQorICAgICAgICAgICAgaWYgKHNl
bGVjdGlvbk9mZnNldCA+IDAgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50ZXh0KCku
bGVuZ3RoKCkgJiYgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgudGV4dCgp
W3NlbGVjdGlvbk9mZnNldCAtIDFdKSkKICAgICAgICAgICAgICAgICB1c2VBbWJpZ3VvdXNCb3Vu
ZGFyeU9mZnNldCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODMzLDE0ICsyODMyLDE0
IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgaW50IG9mZnNldER1ZVRvUmVwbGFjZW1l
bnQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgY29uc3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJhZ3Jh
cGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0
IFRleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKLSAgICAgICAg
Y29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9mZnNldER1
ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSByZXN1bHRz
W2ldLmxlbmd0aDsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0gcmVzdWx0
TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCBhdXRvbWF0aWNSZXBs
YWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQo
KSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdSYW5nZUVuZE9mZnNl
dCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAg
ICAgICAgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBlOworICAg
ICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ucmFuZ2UubG9j
YXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJDb3VudCBy
ZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLnJhbmdlLmxlbmd0aDsKKyAgICAgICAgQ2hhcmFjdGVy
Q291bnQgcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aDsK
KyAgICAgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlvbiA9
IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0b21h
dGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1bHRzW2ldLnJlcGxhY2VtZW50OwotICAg
ICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0gdXNlQW1iaWd1
b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRFbmRMb2Nh
dGlvbjsKKyAgICAgICAgYm9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVzZUFt
YmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0RW5k
TG9jYXRpb247CiAKICAgICAgICAgLy8gT25seSBtYXJrIG1pc3NwZWxsaW5nIGlmOgogICAgICAg
ICAvLyAxLiBDdXJyZW50IHRleHQgY2hlY2tpbmcgaXNuJ3QgZG9uZSBmb3IgYXV0b2NvcnJlY3Rp
b24sIGluIHdoaWNoIGNhc2Ugc2hvdWxkTWFya1NwZWxsaW5nIGlzIGZhbHNlLgpAQCAtMjg1MCwx
NiArMjg0OSwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIHJlc3VsdFR5cGUg
PT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcKICAgICAgICAgICAgICYmIHJlc3VsdExvY2F0
aW9uID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0RW5kTG9jYXRpb24gPD0g
c3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkp
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9u
ID49IDApOwotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBt
aXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24sIHJl
c3VsdExlbmd0aCB9KTsKICAgICAgICAgICAgIGlmICghbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1JhbmdlKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2Us
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOwotICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwg
cmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYm
IHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hl
Y2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49IDAp
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHRzW2ldLmRldGFpbHMpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDAgJiYgZGV0YWlsLmxvY2F0
aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNv
dmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCAmJiBkZXRhaWwu
cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVj
a2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRpb24s
IGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRH
cmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiArIGRldGFp
bC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAgICAgICAg
ICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBk
ZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CkBAIC0yODc3LDcgKzI4NzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29u
c3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAg
ICAgLy8gMi4gVGhlIHJlc3VsdCBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3VvdXMgYm91bmRhcnku
CiAgICAgICAgICAgICAvLyAgICAoRklYTUU6IHRoaXMgaXMgcmVxdWlyZWQgdW50aWwgNjg1MzAy
NyBpcyBmaXhlZCBhbmQgdGV4dCBjaGVja2luZyBjYW4gZG8gdGhpcyBmb3IgdXMKICAgICAgICAg
ICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50Lmxlbmd0aCgpID4gMCAmJiAhcmVz
dWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBs
YWNlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOwor
ICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJl
c3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAKICAgICAgICAgICAgIC8vIEFkZGluZyBs
aW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5cGVk
LgogICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6TGluayAm
JiBzZWxlY3Rpb25PZmZzZXQgIT0gcmVzdWx0RW5kTG9jYXRpb24gKyAxKQpAQCAtMjkyMiw3ICsy
OTIxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hlY2tS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciByZXN1bHRzIGZvciB0aGUgcmVwbGFjZWQg
dGV4dC4KLSAgICAgICAgICAgICAgICB3aGlsZSAoaSArIDEgPCByZXN1bHRzLnNpemUoKSAmJiBy
ZXN1bHRzW2kgKyAxXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0gcmVzdWx0
TG9jYXRpb24pCisgICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXplKCkg
JiYgcmVzdWx0c1tpICsgMV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50
IDw9IHJlc3VsdExvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBpKys7CiAKICAgICAgICAg
ICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKQEAgLTI5MzEsNyArMjkzMCw3IEBAIHZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNl
dCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAogICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcGFyYWdyYXBoLnN1YnJh
bmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3Vs
dExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKICAgICAgICAgICAgICAgICAgICAg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFj
ZW1lbnRSYW5nZS5wdHIoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFya2Vy
IHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJlIHJl
LWNvcnJlY3RlZC4KQEAgLTI5NDUsOCArMjk0NCw4IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRl
CiAgICAgICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBleHRlbmRlZFBhcmFncmFwaChXVEZNb3Zl
KHBhcmFncmFwaCkpOwogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBwb3NpdGlvbiBpZiB3
ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwogICAgICAgICBleHRlbmRlZFBhcmFncmFwaC5l
eHBhbmRSYW5nZVRvTmV4dEVuZCgpOwotICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFmdGVy
Q2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBleHRl
bmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNlbGVjdGlv
blJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0KTsK
KyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZz
ZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgeworICAgICAgICAgICAgYXV0
byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKHsgMCwgc2VsZWN0
aW9uT2Zmc2V0IH0pOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3ZlVG8oc2Vs
ZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYg
KGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCiAgICAgICAgICAgICAgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CkBAIC0yOTczLDcgKzI5
NzIsOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZykKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6UmV2ZXJ0
ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVja2luZ1Bh
cmFncmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7CiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIFNtYXJ0UmVwbGFjZTo6
Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7Ci0gICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3Jh
cGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcubGVu
Z3RoKCkpOworICAgIENoYXJhY3RlckNvdW50IHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFyYWN0
ZXJDb3VudCA9IHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8gY2hhbmdlZFJhbmdl
ID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFj
ZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogICAgIGNoYW5nZWRSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdl
LCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vsc2UKQEAg
LTM3NzcsMTIgKzM3NzcsMTIgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51
bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKIAogICAgICAgICBB
U1NFUlQoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8IGxlbmd0aCk7CiAK
LSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxh
dGl2ZVN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0gcmVs
YXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisgICAgICAgIENo
YXJhY3RlckNvdW50IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVT
dGFydFBvc2l0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZUxlbmd0aCA9IHJl
bGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxOwogCi0gICAgICAg
IGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJyYW5nZU9m
ZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCB9KTsK
IAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJhbmdlLnB0cigpKTsKKyAgICAgICAg
bWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2Uoc3VicmFuZ2UpKTsKICAgICAgICAg
cmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoc3VicmFuZ2UsIERvY3Vt
ZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQb3NpdGlvbiAr
PSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTM5OTIsMTQgKzM5OTIsMTQgQEAgUmVmUHRy
PFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdAog
CiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3Qg
VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXN1bHQubGVu
Z3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5nZSA9IGNvbnRleHRSYW5nZUZvckNh
bmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJh
bmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVM
aXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5yYW5n
ZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggYWQ4Mjc4ODlj
YWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1ZTM3NC4uOTUwZTQ0NWY1YTNiMGIzNGUyOWM0MDRk
ZWZkYjkzNDk3ZmUyNWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgdm9pZCBmaW5kR3Jh
bW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0
LCBWZQogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBiYWRHcmFtbWFyOwogICAgICAgICBi
YWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICBiYWRH
cmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbjsKLSAg
ICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOworICAgICAgICBiYWRH
cmFtbWFyLnJhbmdlLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlv
bjsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOwog
ICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1tYXJEZXRhaWxzKTsK
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7CiAKQEAgLTk3LDkgKzk3LDkgQEAg
c3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBT
dHJpbmdWaWV3IHRleHQsIFZlY3RvcjwKIAogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IG1pc3NwZWxsaW5nOwogICAgICAgICAgICAgbWlzc3BlbGxpbmcudHlwZSA9IFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubG9jYXRpb24gPSB3b3Jk
U3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubGVu
Z3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBsYWNl
bWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0
ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5sb2NhdGlvbiwgbWlzc3BlbGxpbmcubGVuZ3RoKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFuZ2Uu
bG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAgICAg
bWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAgICAg
ICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5yYW5nZS5sb2Nh
dGlvbiwgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobWlzc3BlbGxpbmcpOwogICAgICAgICB9CiAK
QEAgLTEzOSwxNCArMTM5LDEzIEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpleHBhbmRS
YW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6aW52YWxpZGF0ZVBh
cmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQucmVzZXQoKTsKLSAg
ICBtX2NoZWNraW5nRW5kLnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgpOwogICAg
IG1fb2Zmc2V0QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CiAK
LWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKK0NoYXJhY3Rl
ckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFuZ2VMZW5ndGgoKSBjb25zdAogewogICAg
IHJldHVybiBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSgpKTsKIH0KQEAgLTE1OCwxMiAr
MTU3LDEyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnBhcmFncmFwaFJhbmdlKCkg
Y29uc3QKICAgICByZXR1cm4gKm1fcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVJlZjxSYW5nZT4gVGV4
dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hh
cmFjdGVyQ291bnQpIGNvbnN0CitSZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6c3Vi
cmFuZ2UoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0
ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UocGFyYWdyYXBoUmFuZ2UoKSwgcmFuZ2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50PiBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29u
c3QKK0V4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9m
ZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIHN0YXJ0
ID0gbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UoKS5zdGFydFBvc2l0aW9uKCkpOwog
ICAgIGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pOwpAQCAtMTg3LDM1ICsx
ODYsMzMgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0QXNSYW5nZSgpIGNv
bnN0CiAgICAgcmV0dXJuICptX29mZnNldEFzUmFuZ2U7CiB9CiAKLWNvbnN0IFN0cmluZyYgVGV4
dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKK1N0cmluZ1ZpZXcgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKKyAg
ICBpZiAobV90ZXh0LmlzTnVsbCgpKQogICAgICAgICBtX3RleHQgPSBwbGFpblRleHQoJnBhcmFn
cmFwaFJhbmdlKCkpOwogICAgIHJldHVybiBtX3RleHQ7IAogfQogCi1pbnQgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRDaGVj
a2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NoZWNr
aW5nU3RhcnQpCiAgICAgICAgIG1fY2hlY2tpbmdTdGFydCA9IGNoYXJhY3RlckNvdW50KG9mZnNl
dEFzUmFuZ2UoKSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5nU3RhcnQ7CiB9CiAKLWludCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kKCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRl
eHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBjb25zdAogewotICAgIGlmICghbV9j
aGVja2luZ0VuZCkKLSAgICAgICAgbV9jaGVja2luZ0VuZCA9IGNoZWNraW5nU3RhcnQoKSArIGNo
ZWNraW5nTGVuZ3RoKCk7Ci0gICAgcmV0dXJuICptX2NoZWNraW5nRW5kOworICAgIHJldHVybiBj
aGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQgVGV4dENoZWNraW5n
UGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2hl
Y2tpbmdMZW5ndGgpCiAgICAgICAgIG1fY2hlY2tpbmdMZW5ndGggPSBjaGFyYWN0ZXJDb3VudCht
X2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAqbV9jaGVja2luZ0xlbmd0aDsKIH0KIAotaW50
IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0
CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2Vt
ZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQp
CiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwpAQCAtMjI5LDcg
KzIyNiw3IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50
U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0Owog
fQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0
aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvbWF0aWNSZXBsYWNl
bWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3Ro
OwpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tpbmdI
ZWxwZXIoRWRpdG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKIAogVGV4dENoZWNraW5n
SGVscGVyOjp+VGV4dENoZWNraW5nSGVscGVyKCkgPSBkZWZhdWx0OwogCi1TdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdP
ZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
KQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFj
dGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJh
bmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZz
ZXQgPSAwOwogCiAgICAgU3RyaW5nIGZpcnN0TWlzc3BlbGxpbmc7Ci0gICAgaW50IGN1cnJlbnRD
aHVua09mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudENodW5rT2Zmc2V0ID0g
MDsKIAogICAgIGZvciAoV29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZSk7ICFpdC5hdEVuZCgp
OyBjdXJyZW50Q2h1bmtPZmZzZXQgKz0gaXQudGV4dCgpLmxlbmd0aCgpLCBpdC5hZHZhbmNlKCkp
IHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gaXQudGV4dCgpOwpAQCAtMjc3LDE3ICsyNzQs
MjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50
JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogICAgICAgICBpZiAobWlzc3BlbGxpbmdM
b2NhdGlvbiA+PSAwICYmIG1pc3NwZWxsaW5nTGVuZ3RoID4gMCAmJiBtaXNzcGVsbGluZ0xvY2F0
aW9uIDwgdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoICYmIG1p
c3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoKSB7CiAg
ICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdlIG9mIG1pc3NwZWxsZWQgd29yZAotICAgICAgICAg
ICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3Jhbmdl
LCBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xl
bmd0aCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJSYW5nZSBtaXNwZWxsaW5nQ2hhcmFjdGVyUmFu
Z2U7CisgICAgICAgICAgICBtaXNwZWxsaW5nQ2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBjdXJy
ZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAgICAgbWlzcGVs
bGluZ0NoYXJhY3RlclJhbmdlLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAgICAg
ICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2Us
IG1pc3BlbGxpbmdDaGFyYWN0ZXJSYW5nZSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGZp
cnN0LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAgICAgICAg
aWYgKCFmaXJzdE1pc3NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGlu
Z09mZnNldCA9IGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CiAgICAg
ICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5n
TG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAg
IGZpcnN0TWlzc3BlbGxpbmdSYW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7CisgICAgICAg
ICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1pc3NwZWxs
aW5nUmFuZ2UpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBtYXJrZXIg
Zm9yIG1pc3NwZWxsZWQgd29yZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVsbGluZ1Jh
bmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1Jhbmdl
LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBp
ZiB3ZSdyZSBtYXJraW5nIG9ubHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFsbCBp
bnN0YW5jZXMuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjk4LDcgQEAg
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJz
dE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGluZzsKIH0K
IAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdy
YW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmly
c3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wg
Y2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0Rmly
c3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBp
ZiAoIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CkBAIC0zMTMsOCArMzEzLDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAv
LyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2Ug
ZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAg
IG91dEZpcnN0Rm91bmRPZmZzZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24g
PSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRl
dGFpbC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5sZW5n
dGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAgLTMz
NCw4ICszMzQsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIHdoaWxlICh0b3RhbExl
bmd0aFByb2Nlc3NlZCA8IHRvdGFsUmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0ZSB0
aHJvdWdoIHRoZSBzZWFyY2ggcmFuZ2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBvbmUg
Zm9yIHNwZWxsaW5nIGFuZCBncmFtbWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBj
aGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRP
ZmZzZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBp
bnQgY3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIENoYXJhY3RlckNv
dW50IGN1cnJlbnRTdGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNl
dCA6IDA7CisgICAgICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRFbmRPZmZzZXQgPSBjdXJyZW50
TGVuZ3RoOwogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBE
ZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5h
bCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAg
Ly8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KQEAg
LTM0Niw5ICszNDYsOSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgU3Ry
aW5nIHBhcmFncmFwaFN0cmluZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAg
ICAgICAgICAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAgICAg
ICAgICAgIGJvb2wgZm91bmRHcmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IHNw
ZWxsaW5nTG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlTG9j
YXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAw
OworICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOwor
ICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9uID0g
MDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHJlc3VsdHM7CkBAIC0zNjEsNDIgKzM2MSw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgICAgICAgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tl
cigpLCBwYXJhZ3JhcGhTdHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRTZWxl
Y3Rpb24pOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZyAmJiByZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJl
c3VsdC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3Ry
aW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQu
cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIHJlc3VsdC5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdlLmxv
Y2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3Jh
cGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxl
bmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVu
Z3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1cnJl
bnRFbmRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJlbnRT
dGFydE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5n
dGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24g
Pj0gMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LnR5
cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRpb24g
PCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5n
ZS5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNp
bmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWls
IGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3Vs
dC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0
LmRldGFpbHNbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+
bGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+
bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5s
b2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3Vs
dC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJyZW50
RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+
bG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFp
bC0+cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0aCA8
PSBjdXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9IGo7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9
IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2NhdGlv
biArIGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kR3JhbW1hciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kR3JhbW1hcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VM
b2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cmFtbWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dyYW1t
YXJEZXRhaWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBo
cmFzZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0g
cGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3VsdC5y
YW5nZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFt
bWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICgh
bWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQ
aHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0
aW9uKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGlu
Z0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBDaGFy
YWN0ZXJDb3VudCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3Rh
cnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICpt
YWtlQm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAg
ICAgICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wg
Y2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhy
YXNlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9m
ZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAg
ICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1t
YXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQ
aHJhc2VPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0g
ZmFsc2U7CkBAIC00MjgsMTggKzQyOCwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogCiAj
aWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRG
aXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0
YWlscywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1h
ckRldGFpbHMsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hhcmFj
dGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBtYXJr
QWxsKSBjb25zdAogewogICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhlIGVh
cmxpZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChpZiBh
bnkpLgogICAgIC8vIE9wdGlvbmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2ggZGV0
YWlsIGluIHRoZSByYW5nZS4KLSAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0g
LTE7CisgICAgQ2hhcmFjdGVyQ291bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gMDsK
ICAgICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9IC0xOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBncmFtbWFyRGV0YWlscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBHcmFt
bWFyRGV0YWlsKiBkZXRhaWwgPSAmZ3JhbW1hckRldGFpbHNbaV07Ci0gICAgICAgIEFTU0VSVChk
ZXRhaWwtPmxlbmd0aCA+IDApOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAw
KTsKKyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFT
U0VSVChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAKLSAgICAgICAgaW50
IGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24g
KyBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBkZXRhaWxTdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5yYW5n
ZS5sb2NhdGlvbjsKICAgICAgICAgCiAgICAgICAgIC8vIFNraXAgdGhpcyBkZXRhaWwgaWYgaXQg
c3RhcnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlCiAgICAgICAgIGlmIChkZXRh
aWxTdGFydE9mZnNldEluUGFyYWdyYXBoIDwgc3RhcnRPZmZzZXQpCkBAIC00NTAsMzAgKzQ1MCwz
MCBAQCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0
IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFy
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VM
b2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgp
OwotICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50
KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBhdXRvIGJhZEdy
YW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLmdldCgpLCB7IGJhZEdy
YW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlv
biwgZGV0YWlsLT5yYW5nZS5sZW5ndGggfSk7CisgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2Uu
c3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBkZXRhaWwgb25seSBpZiBpdCdz
IGVhcmxpZXIgdGhhbiBvdXIgY3VycmVudCBjYW5kaWRhdGUgKHRoZSBkZXRhaWxzIGFyZW4ndCBp
biBhIGd1YXJhbnRlZWQgb3JkZXIpCi0gICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwg
MCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPmxvY2F0aW9uKSB7Cisg
ICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0
aW9uU29GYXIgPiBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICBlYXJsaWVz
dERldGFpbEluZGV4ID0gaTsKLSAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0Zh
ciA9IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0aW9u
U29GYXIgPSBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAog
ICAgIHJldHVybiBlYXJsaWVzdERldGFpbEluZGV4OwogfQogCi1TdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRh
aWwsIGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAorU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWls
JiBvdXRHcmFtbWFyRGV0YWlsLCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9mZnNl
dCwgYm9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRl
cnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4u
Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJEZXRh
aWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gMDsK
KyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1hckRl
dGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRp
b24gPSBlbXB0eVN0cmluZygpOwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAg
IAotICAgIFN0cmluZyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBmaXJz
dEJhZEdyYW1tYXJQaHJhc2U7CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBl
bmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVlZHMg
dGhhdCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBvcmln
aW5hbCBzZWFyY2ggcmFuZ2UsCkBAIC00ODEsMTEgKzQ4MSwxMSBAQCBTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsCiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNvcHlS
ZWYoKSk7CiAgICAgCiAgICAgLy8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2YgcGFy
YWdyYXBoLCBidXQgc2tpcCBwYXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0YXJ0
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZzZXQg
PSAwOyBzdGFydE9mZnNldCA8IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBmb3Ig
KENoYXJhY3RlckNvdW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGgu
Y2hlY2tpbmdFbmQoKTsgKSB7CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFtbWFy
RGV0YWlsczsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwogICAg
ICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50LnRl
eHRDaGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBoLnRl
eHQoKSkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9jbGll
bnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQoKS5z
dWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VM
b2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAgaWYg
KCFiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1h
clBocmFzZUxvY2F0aW9uID09IC0xKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBTdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1t
YXJEZXRhaWwsCiAgICAgICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5z
dGFuY2VzKS4KICAgICAgICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3Jh
bW1hclBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZz
ZXQgPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgp
OwotICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJz
dHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsK
KyAgICAgICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vi
c3RyaW5nKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3cs
IHVubGVzcyB3ZSdyZSBtYXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1h
cmtBbGwpCkBAIC01MTgsNyArNTE4LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAg
ICBzdGFydE9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJh
c2VMZW5ndGg7CiAgICAgfQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7
CisgICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29s
IFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3ICs1
MjksNyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QK
ICAgICAvLyBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29y
cmVzcG9uZHMgdG8gYSBiYWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3Vz
CiAgICAgLy8gdG8gaXNTZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBm
b3IgdGhlcmUgdG8gYmUgc29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAog
ICAgIC8vIG9yIG92ZXJsYXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkg
bWF0Y2guCi0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQg
Z3JhbW1hclBocmFzZU9mZnNldDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRh
aWw7CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdy
YW1tYXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSArNTQy
LDE1IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAog
ICAgIGlmIChncmFtbWFyUGhyYXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdy
YW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2Uu
bG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4g
MCk7CiAKICAgICAvLyBCYWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdy
YW1tYXRpY2FsIHdvcmQpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3Jh
bW1hckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1t
YXJEZXRhaWwucmFuZ2UubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2Us
IGJ1dCBlbmQgb2YgYmFkIGdyYW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQot
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IGNo
YXJhY3RlckNvdW50KG1fcmFuZ2UpKQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0
aCAhPSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIC8vIFVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlz
IGVycm9yICh3aGV0aGVyIG9yIG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4K
QEAgLTU5NCw4ICs1OTQsOCBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1
ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4
dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBj
aGVja2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0
byYgcmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJl
c3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNz
cGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAo
cmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNo
ZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBt
aXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7
CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAg
ICAgbV9jbGllbnQudGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdv
cmQsIFN0cmluZygpLCBjdXJyZW50U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1f
Y2xpZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQp
OwpAQCAtNjA4LDEyICs2MDgsMTIgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVy
OjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAg
cmV0dXJuIGd1ZXNzZXM7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAg
ICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFy
YWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5s
ZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpH
cmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdl
KSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewot
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFy
YWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2Nh
dGlvbiwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdy
YW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJl
c3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3Ro
ID4gMCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAw
KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsg
cmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFu
Z2UubGVuZ3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlID0gcGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQucmFuZ2UubGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAo
YXV0byYgZ3Vlc3MgOiBkZXRhaWwuZ3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1
ZXNzZXMuYXBwZW5kKGd1ZXNzKTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFRleHRDaGVja2lu
Z0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxs
aW5nUmFuZwogewogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0
TWlzc3BlbGxpbmcuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0
ZXIiOwogICAgIC8vIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0g
ICAgaW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsK
ICAgICBmaW5kRmlyc3RNaXNzcGVsbGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpOwogfQogCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdI
ZWxwZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0
dXJlIG9mIG9maW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQg
Im91dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5
IGluc3RhbmNlLgogICAgIEdyYW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAg
aW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsKICAg
ICBmaW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0
LCB0cnVlKTsKIH0KICNlbmRpZgpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRp
b25TZXQ8CiAgICAgaWYgKGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcikpIHsKICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckNoZWNrTGVuZ3RoID0gdGV4dC5s
ZW5ndGgoKTsKICAgICAgICAgZm9yIChhdXRvJiBtaXNwZWxsaW5nIDogbWlzcGVsbGluZ3MpCi0g
ICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1h
ckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdyYW1tYXJD
aGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3Bl
bGxpbmcucmFuZ2UubG9jYXRpb24pOwogICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMoY2xp
ZW50LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNhbEVy
cm9ycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuaAppbmRleCAzZjM5ZTg2OGQ5OTQxZTViODgxYjA2MTZkZGZjMTZiMzQwMTUxMWQ0Li5iMjk5
YTY2NjA0YWU3ZDEzNDY1ZTRlNGQ5ZWIyZDEzZWE2ZjMzYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwzNCArMzYsMjggQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+JiYg
Y2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4m
JiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFu
Z2UpOwogCi0gICAgaW50IHJhbmdlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJy
YW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0OwotICAg
IEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAgICBD
aGFyYWN0ZXJDb3VudCByYW5nZUxlbmd0aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3VicmFu
Z2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50
PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFuZ2VU
b05leHRFbmQoKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRvIHJl
dHVybiBhIFN0cmluZ1ZpZXcuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0KLSAg
ICAvLyBGSVhNRTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRoZSBj
YWxsZXIgdXNlIHRleHQoKSBkaXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVuc2ln
bmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5z
dWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQorICAg
IFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAK
LSAgICBpbnQgY2hlY2tpbmdTdGFydCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgpIGNv
bnN0OwotICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVja2lu
Z1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgp
LCBjaGVja2luZ0xlbmd0aCgpKTsgfQorICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3RhcnQo
KSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIENo
YXJhY3RlckNvdW50IGNoZWNraW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVj
a2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdT
dGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFu
Z2UgaW4gd2hpY2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1
dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRl
eHQgY2hlY2tpbmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2lu
ZyByYW5nZS4KLSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAg
IGludCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3RlckNv
dW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3Vu
dCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2lu
Z1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxv
Y2F0aW9uID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsg
fQotICAgIGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0
aW9uICsgbGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAg
ICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25z
dCB7IHJldHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGgg
PiBjaGVja2luZ1N0YXJ0KCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJh
Y3RlclJhbmdlIHJhbmdlKSBjb25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2lu
Z1N0YXJ0KCkgJiYgcmFuZ2UubGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29s
IGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyBy
ZXR1cm4gcmFuZ2UubG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9u
ICsgcmFuZ2UubGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0K
KyAgICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0
IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlv
biArIHJhbmdlLmxlbmd0aCA+IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3Jh
cGhSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3Rl
eHQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGlu
dD4gbV9jaGVja2luZ0xlbmd0aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+
IG1fY2hlY2tpbmdTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50PiBt
X2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IG1f
YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3Rl
ckNvdW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4dENo
ZWNraW5nSGVscGVyIHsKQEAgLTg4LDExICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNr
aW5nSGVscGVyKEVkaXRvckNsaWVudCYsIFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hlbHBl
cigpOwogCi0gICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVs
bGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5n
UmFuZ2UpOwotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29s
IGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zm
c2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmluZEZp
cnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJv
b2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBT
dHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIs
IGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0
LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxNaXNz
cGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBVU0Uo
R1JBTU1BUl9DSEVDS0lORykKLSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFy
RGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJv
b2wgbWFya0FsbCkgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1h
ckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQaHJh
c2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1h
cigpOwogICAgIGJvb2wgaXNVbmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3
ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
KSBjb25zdDsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3Jh
bW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBo
cmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0Fs
bCkgY29uc3Q7CisgICAgaW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdy
YW1tYXJEZXRhaWw+JiwgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBD
aGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBib29s
IG1hcmtBbGwpIGNvbnN0OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggYmExYjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdi
NS4uMTM3ZTU0YjFjYjcwNjI4OWU1MjU5MzUzODFlMjFhZDFkMDRjOTI4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENoYXJh
Y3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9m
ZnNldCwgaW50IGNoYXJhY3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGly
ZVJhbmdlSXRlcmF0b3IoZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5n
ZShlbnRpcmVSYW5nZS5vd25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJh
Y3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJ
bnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NF
UlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwpAQCAtMjM2NSw4OCArMjM1OSw2NyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikK
ICAgICByZXR1cm4gbm9kZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRl
cmVyKCkpOwogfQogCi1SZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQg
cmFuZ2VMZW5ndGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorY29uc3RleHByIENo
YXJhY3RlckNvdW50IGNsYW1wZWRBZGQoQ2hhcmFjdGVyQ291bnQgYSwgQ2hhcmFjdGVyQ291bnQg
YikKIHsKLSAgICBSZWY8UmFuZ2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCkuY3Jl
YXRlUmFuZ2UoKTsKLQotICAgIGludCBkb2NUZXh0UG9zaXRpb24gPSAwOwotICAgIGludCByYW5n
ZUVuZCA9IHJhbmdlTG9jYXRpb24gKyByYW5nZUxlbmd0aDsKLSAgICBib29sIHN0YXJ0UmFuZ2VG
b3VuZCA9IGZhbHNlOwotCi0gICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29u
dGVudHMoKnNjb3BlKTsKLQotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UsIGZvclNl
bGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICAK
LSAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwg
d29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
ODk+LgotICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQuYXRFbmQo
KSkgewotICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7Ci0gICAg
fQorICAgIGF1dG8gc3VtID0gYSArIGI7CisgICAgcmV0dXJuIHN1bSA+PSBhID8gc3VtIDogc3Rk
OjpudW1lcmljX2xpbWl0czxDaGFyYWN0ZXJDb3VudD46Om1heCgpOworfQogCi0gICAgZm9yICg7
ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0LnRl
eHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0
LnJhbmdlKCkpOworU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yKQoreworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHJhbmdl
LmxvY2F0aW9uID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQsIChyYW5nZS5sb2NhdGlvbiB8fCBy
YW5nZS5sZW5ndGgpID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQgfTsKKyAgICBhdXRvIHJhbmdl
RW5kID0gY2xhbXBlZEFkZChyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKKyAgICBDaGFy
YWN0ZXJDb3VudCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2NvcGUs
IGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJhbmdl
ID0gaXQucmFuZ2UoKTsKIAotICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0aW9u
ID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3NpdGlvbiAr
IGxlbmd0aDsKLSAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1RleHRQb3Np
dGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CisgICAgICAgIGF1
dG8gZm91bmQgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBib29sIHsK
KyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA+PSBsb2NhdGlvbiAmJiB0YXJnZXRM
b2NhdGlvbiAtIGxvY2F0aW9uIDw9IGxlbmd0aDsKKyAgICAgICAgfTsKKyAgICAgICAgYm9vbCBm
b3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOworICAgICAgICBib29sIGZvdW5kRW5k
ID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChmb3VuZEVuZCkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IHRoZSBl
bmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0gICAgICAgICAgICAvLyBwb3NpdGlv
biBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9k
ZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBh
dCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRlcmVy
IG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50LgorICAgICAgICAgICAg
Ly8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBUZXh0SXRlcmF0b3JCZWhh
dmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9uYWxseSB0byBoZWxwIHVzIGV2ZW50
dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAgICBpZiAobGVuZ3RoID09
IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50KGl0
KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBpdC5yYW5n
ZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChXVEZN
b3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVuUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuRW5k
ID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9kZSgpLCBy
dW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQgPSBp
dC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRpb24oY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQoKS5kZWVw
RXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQg
PSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91bmQgPSB0
cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKS5pc1Rl
eHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlvbiAt
IGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQo
dGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2UtPnN0
YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo
cmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRS
dW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRDb250YWlu
ZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91bmRhcnkg
PSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50IHsK
KyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyKSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGRv
d25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3RhcnQu
b2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlv
biA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7Cisg
ICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAgICAgICAgICByZXN1bHRS
YW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYgKGZvdW5k
RW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlz
VGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVuZCAtIGRv
Y1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRS
dW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFydE9m
ZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJhbmdl
RW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2Ut
PnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3Rh
cnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5S
YW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9jVGV4dFBv
c2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5kYXJ5
KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgZG9j
VGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3RoOwogICAg
IH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4dFBvc2l0
aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJhbmdlLT5z
ZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZz
ZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCitCb3VuZGFyeVBvaW50
IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIENoYXJh
Y3RlckNvdW50IGxvY2F0aW9uLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAg
ICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0sIGJl
aGF2aW9yKS5zdGFydDsKK30KKwogYm9vbCBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UsIHNpemVfdCYgbG9j
YXRpb24sIHNpemVfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0aW9uID0gbm90Rm91bmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAwOTE0ZjdiY2E2MTUwOWZiNWMzZGVl
YWM5ZDM4Y2U0ZDRjMzg5NjRiLi5mNGU0MDhhMjFhNTU2YTU4Yjg0MjM4YjhlMzJjMTAxYTczNmZk
NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1
ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIlNpbXBsZVJhbmdlLmgiCkBAIC0xMDMsOSArMTA0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25z
dCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQogCiAg
ICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gU2ltcGxlUmFuZ2UsIENoYXJhY3RlclJhbmdlLCBh
bmQgQ2hhcmFjdGVyQ291bnQgYW5kIG1vdmUgb3V0IG9mIHRoaXMgY2xhc3MgdG8gdGhlIHRvcCBs
ZXZlbCAoYm90dG9tIG9mIHRoaXMgZmlsZSkuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2Nv
cGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBz
aXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVy
T2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdCgp
OwpAQCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQg
eyB0cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OwotCi1z
dHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9
OwotICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAgfTsKLX07CiAKIFdFQkNPUkVfRVhQT1JU
IENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9F
WFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxl
UmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFmMzhjNWIxZmJhNGUwODRhYjdjYTYuLmUy
ZjhmNTdiMzk1NTE3N2JjZGVmNzNhYTQyYjczNzhjOGFjOTMwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTk3LDcgKzk3LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJh
bmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0
ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAgICAgICBpZiAoaGl0TG9jYXRpb24gPj0g
cmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0UmFu
Z2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7CiAg
ICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OwotICAgICAgICAgICAgbWFpblJlc3VsdFJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5nZUlu
Q29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKKyAgICAgICAg
ICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoKmNvbnRleHRSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShyZXN1bHRSYW5nZUluQ29udGV4
dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTA4LDkgKzUw
OCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRyPFJh
bmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdl
ID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4IGZy
YWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlmIChm
cmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAgICBm
cmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJhbmdl
LCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlS
YW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFnbWVu
dEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENoYXJh
Y3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxvY2F0
aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdl
Lmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0
OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShyZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQpCiAg
ICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAgICAg
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rp
Y3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25h
cnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5MmMyNGU1MTc4OTA0N2NlZjYyNjNmYTUw
OS4uNmJjNWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4OGE0ZTEyNjllOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjg3LDEw
ICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0
aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogCiAgICAgUmVmUHRyPFJhbmdlPiBm
dWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVu
ZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdl
LmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NSVkl0
ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VU
b1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGln
aHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NSVkl0
ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFuZ2VU
b1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRv
cjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24s
IGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKm1ha2VDaGFy
YWN0ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmlsIH07CiAKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC0zNTgsMTMgKzM1NywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxS
YW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJl
c3VsdAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkg
cmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsK
IAogICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2Up
OwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3Rh
bmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdl
XSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFu
Z2U7CisgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShhZG9wdE5T
KFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRS
YW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCkuaGlnaGxpZ2h0UmFuZ2UpOwogCi0gICAgaWYgKGhp
Z2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxl
bmd0aCkKKyAgICBpZiAoIWhpZ2hsaWdodFJhbmdlIHx8ICFoaWdobGlnaHRSYW5nZS0+bGVuZ3Ro
KQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICByZXR1cm4geyBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJhbmdl
LmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4geyBj
cmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2Us
ICpoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGlj
dGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmNwcAppbmRleCBhMmI4MTgyODc3YjI4YWYyOWM4YTA2Mzk1NGQzNzRjZDVh
YTVhNWRhLi5kM2NmMDZjOTNkMTlkODVlZTUxNDVkMDJhMTJkNTJiODNiYzdhMDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApA
QCAtNzIsMTEgKzcyLDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAg
ICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChyb290LCBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCk7Ci0gICAgaWYgKCFy
ZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CisgICAg
YXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zm
c2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtl
cihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBM
ZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVn
YWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVlMThlMDE3NzllYzYxMTQ3NDMxYzc5NWUzOGE1OGUuLjY1
ZDVkZDU2MmU5MzcwY2ViZmNlNTNjMzIyNWUyNzM1YzU1YjVmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAtMTQy
LDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKIAogICAgIE5TUmFuZ2UgcmFu
Z2VUb1Bhc3MgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7ICpmdWxsQ2hhcmFjdGVyU3Rh
cnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0pLCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMg
PSBuaWw7Ci0gICAgTlNSYW5nZSBleHRyYWN0ZWRSYW5nZSA9IHRva2VuUmFuZ2UocGxhaW5UZXh0
KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucyk7CisgICAg
YXV0byBleHRyYWN0ZWRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZSh0b2tlblJhbmdlKHBsYWlu
VGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMpKTsK
IAogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJldHVybnMge05TTm90Rm91bmQsIDB9IGlm
IGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcuCiAgICAgLy8gRklYTUUg
KDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvIGxlbmd0aCBoZXJl
LgotICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFleHRy
YWN0ZWRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFleHRyYWN0ZWRSYW5nZSB8fCAhZXh0cmFjdGVk
UmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAKLSAgICBy
ZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5nZS5sZW5ndGgpLCBvcHRpb25zIH07Cisg
ICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENo
YXJhY3RlclJhbmdlLCAqZXh0cmFjdGVkUmFuZ2UpKSwgb3B0aW9ucyB9OwogfQogCiBzdGF0aWMg
dm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMoUERGU2VsZWN0aW9uICpzZWxlY3Rpb24s
IE5TSW50ZWdlciBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCwgTlNJbnRlZ2VyJiBjaGFyYWN0
ZXJzQWRkZWRCZWZvcmVTdGFydCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRBZnRlckVuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNiMzA3MWJjNDMyOGU0ZWUzZDQ1YzNmMmMzYWJkMmI1YmYx
YWMwOTcuLjlmMGE0MDZkZTQxNDkxODNmODUxMTYxMjRiM2VkNWMxOWIxZWYyZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtODAzLDggKzgwMyw3IEBAIHVuc2lnbmVkIFBhZ2U6OmNvdW50RmluZE1h
dGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAK
IHN0cnVjdCBGaW5kUmVwbGFjZW1lbnRSYW5nZSB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHJvb3Q7Ci0gICAgc2l6ZV90IGxvY2F0aW9uIHsgbm90Rm91bmQgfTsKLSAgICBzaXplX3QgbGVu
Z3RoIHsgMCB9OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogfTsKIAogc3RhdGljIHZvaWQg
cmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFu
Z2U+JiByYW5nZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQpAQCAtODE2LDEwICs4
MTUsMTAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0
b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJhbmdlcyBhcmUgc29ydGVkIGJ5IHRoZWly
IGVuZCBvZmZzZXRzLCBwZXIgZWRpdGluZyBjb250YWluZXIuCi0gICAgICAgIGF1dG8gZW5kT2Zm
c2V0Rm9yUmFuZ2UgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICAgICAgYXV0
byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UucmFuZ2Uu
bGVuZ3RoOwogICAgICAgICBhdXRvIGluc2VydGlvbkluZGV4ID0gcmFuZ2VMaXN0LnNpemUoKTsK
ICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VMaXN0LnJiZWdpbigpOyBpdGVyYXRv
ciAhPSByYW5nZUxpc3QucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIGVu
ZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPmxvY2F0aW9uICsgaXRlcmF0
b3ItPmxlbmd0aDsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9uSW5k
ZXggPSBpdGVyYXRvci0+cmFuZ2UubG9jYXRpb24gKyBpdGVyYXRvci0+cmFuZ2UubGVuZ3RoOwog
ICAgICAgICAgICAgaWYgKGVuZE9mZnNldEZvclJhbmdlID49IGVuZE9mZnNldEJlZm9yZUluc2Vy
dGlvbkluZGV4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaW5zZXJ0aW9u
SW5kZXgtLTsKQEAgLTg2MiwxMSArODYxLDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMo
UGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAg
ICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggcmFuZ2VzIHdoZW4gcmVwbGFjaW5n
IHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVwbGFjZW1lbnRzIGRvbid0IGNsb2JiZXIg
cmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAgICAgICBhdXRvJiByYW5nZXMgPSByYW5n
ZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIpLT52YWx1ZTsKICAgICAgICAgZm9yIChh
dXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZXMucmVuZCgp
OyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIuZ2V0KCksIGl0ZXJhdG9yLT5sb2Nh
dGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlIHx8IHJhbmdl
LT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpjb250YWluZXIpLCBpdGVyYXRv
ci0+cmFuZ2UpOworICAgICAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNl
bGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJh
bWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQsIEVkaXRv
cjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vLCBFZGl0
QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC04OTgsNyAr
ODk3LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZlY3Rv
cjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgICAgICBpZiAocmVwbGFjZW1lbnRM
b2NhdGlvbiA9PSBub3RGb3VuZCB8fCAhcmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhp
Z2hlc3RSb290KSwgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSk7Cisg
ICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdURk1vdmUoaGlnaGVzdFJvb3QpLCB7
IHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0gfSk7CiAgICAgfQogCiAg
ICAgcmVwbGFjZVJhbmdlcygqdGhpcywgcmVwbGFjZW1lbnRSYW5nZXMsIHJlcGxhY2VtZW50VGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBk
MGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0NzdkZWIzLi5kMjQ1Y2NkOWVjOTEyMDJl
YzNkMGY0OWVkNTU0YzMwNTBlZTk3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEwICszMSw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsMTYgKzYyLDE0IEBAIGVu
dW0gVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgewogfTsKIAogc3RydWN0IEdyYW1tYXJEZXRhaWwg
ewotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3RoOworICAgIENoYXJhY3RlclJhbmdl
IHJhbmdlOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgU3RyaW5nIHVzZXJEZXNj
cmlwdGlvbjsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewogICAgIFRleHRDaGVj
a2luZ1R5cGUgdHlwZTsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBD
aGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWlsczsK
ICAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGFmMjdiOTlmMzg3YzEyOGFmZmI0MzY5YWI0ZWMzYTljMGJmZmMyOTguLjEzNGVh
MzFmY2U4Zjk4ODkxMTJjYzE0YzA3ZmQxNzRkYmU1YmNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIwNDQsOSArMjA0NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElu
dGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
UmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1l
bnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmUHRyPFJh
bmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNjb3Bl
LCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHJh
bmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKHJl
c29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUp
LCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogdW5zaWduZWQgSW50ZXJu
YWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmIHJhbmdl
KQpAQCAtMjA3NSw5ICsyMDc1LDkgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1RleHRVc2lu
Z0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHBs
YWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhyYW5nZSk7CiB9CiAK
LVJlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIGludCByYW5nZUxv
Y2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitSZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2Uo
UmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0
aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgcmFuZ2VMb2Nh
dGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNo
YXJhY3RlclJhbmdlKHJhbmdlLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0K
IAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29u
c3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCkKQEAgLTI0MzIsOCArMjQzMiw3IEBAIHZvaWQgSW50ZXJuYWxzOjpoYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgdW5zaWduZWQgbG9jYXRpCiAK
ICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6Tm9uZTsKLSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICBy
ZXN1bHQubGVuZ3RoID0gbGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9IHsgbG9jYXRpb24sIGxl
bmd0aCB9OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IGNhbmRpZGF0ZTsKICAgICBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUocmVz
dWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGUyMzUyMzQxZGI4YzE1
ZDQyOWY5Y2VmZDI4OWRmNTIyNzBlNWFjN2MuLmNmNzllNTBjN2I4NDczZjZmZTI1MmY4Y2M3Njg1
OWM2ZjkxNTcxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk1LDEyICsy
OTUsMTIgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW52YWxpZGF0ZUNvbnRy
b2xUaW50cygpOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7Cisg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29w
ZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIHVu
c2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYpOwog
ICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2Um
KTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcgcmFu
Z2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOwotICAgIFJl
ZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVu
Z3RoKTsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgdW5zaWduZWQgcmFuZ2VMb2Nh
dGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSYW5n
ZT4+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsIGludCB5KTsKICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2UmLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAppbmRleCAxNjJmYWY0OTQ2ZWFhZGQ5ODBlNTc4OWExOGJiZGVjNTU4M2Y2MzIzLi4zNzU3OTA3
NzA0ZjkzMTNlNjg0MTRjMDA1NTkxNzQxZTQ2YTI1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCkBAIC0zMjUsMTIgKzMyNSwxMiBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5
IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVs
ZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAotICAgIFJh
bmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCBsb25nIHJhbmdl
TG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOworICAgIFJhbmdlPyByYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9jYXRpb24sIHVu
c2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9t
UmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcg
cmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVzaW5n
QmFja3dhcmRzVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlKTsKLSAgICBSYW5nZSBzdWJyYW5nZShS
YW5nZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBS
YW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9uLCB1
bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdl
PyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKICAg
ICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3RyaW5n
IHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5n
ZS5jcHAKaW5kZXggYjg5OTMzZmZhMWJmMjg0M2MyNmZkYmQ2NmQyOTI2ZWQwMGM1ZjZhMS4uNzZl
ZjQ3MjJkNzUxY2Y2ZTU5YWFiOWVkZmFiNjY1NmU3MDRmMTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0zMyw0MiArMzMsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKK1JlZlB0cjxXZWJDb3JlOjpS
YW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBiYXNl
KQogewotICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgQVNTRVJU
KGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgV2ViQ29yZTo6Q2hhcmFj
dGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5nZS5sZW5n
dGggfTsKIAotICAgIC8vIFNhbml0aXplIHRoZSBpbnB1dCwgYmVjYXVzZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHRha2VzIHNpZ25lZCBpbnRlZ2Vycy4KLSAgICBp
ZiAocmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBpbnQgbGVuZ3RoOwotICAgIGlmIChyYW5nZS5sZW5ndGggPD0gSU5UX01BWCAmJiByYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYKQotICAgICAgICBsZW5ndGggPSBzdGF0
aWNfY2FzdDxpbnQ+KHJhbmdlLmxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBsZW5ndGggPSBJ
TlRfTUFYIC0gcmFuZ2UubG9jYXRpb247Ci0KLSAgICBpZiAoZWRpdGluZ1JhbmdlSXNSZWxhdGl2
ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CisgICAgaWYg
KGJhc2UgPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAgICAg
ICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBj
YWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEg
Z2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIC8vIFdlIGhhdmUg
dG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBET00g
Zm9yIHRob3NlIGlzIG5vdAogICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9N
LCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAg
ICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBz
dGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0aCBB
cHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGZy
YW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwor
ICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKLSAgICBB
U1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVU
bzo6UGFyYWdyYXBoKTsKLQotICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwotICAgIGlmICghc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChiYXNlID09IEVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtl
Qm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSkp
OworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFy
YWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAg
ICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290
Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFj
dGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9v
dE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyByYW5nZS5sb2NhdGlvbiwgbGVuZ3RoKTsKKyAg
ICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFw
aFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1
cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1v
dmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsKIH0KIAog
RWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFt
ZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8g
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaApp
bmRleCA5NDczOGI3Zjg4ZTllMDU4ZGEyZWQyNTRhMTYwNDRlYmM2YjkzMDY5Li5lMDQzZjk3MjQw
ZTQyNWVjZDI1YTQyN2VkZDkyN2FjYjc0NWUzNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5n
UmFuZ2UuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyA6IHVpbnQ4X3QgewogICAgIFBhcmFncmFwaCwKIH07CiAKKy8vIEZJWE1FOiBSZXBsYWNl
IHRoaXMgd2l0aCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4uCiBzdHJ1Y3QgRWRpdGluZ1Jhbmdl
IHsKICAgICBFZGl0aW5nUmFuZ2UoKQogICAgICAgICA6IGxvY2F0aW9uKG5vdEZvdW5kKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjMw
N2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFhOTE4MC4uNDI1Nzc1NzlmZDdlNWIxNDhk
ZjBkMjJiY2NkZDE1MWZlOGVkNDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNlZW1zIGxpa2Ug
d2UgY291bGQgdXNlIHN0ZDo6dHVwbGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVsb3cgYSBsb3Qh
CisKIG5hbWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpAQCAtMjUwLDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2Fj
aGVRdWVyeU9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVRdWVyeU9wdGlv
bgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFu
Z2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZ2UmIHJhbmdl
KQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxvY2F0aW9u
KTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sZW5ndGgpOwor
fQorCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJSYW5n
ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBs
b2NhdGlvbjsKKyAgICBkZWNvZGVyID4+IGxvY2F0aW9uOworICAgIGlmICghbG9jYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVu
Z3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24sICpsZW5ndGgg
fSB9OworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
JiBpbmZvKQogewogICAgIGVuY29kZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAtMjA1MywyMiAr
MjA3NiwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8
R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0
YWlsJiBkZXRhaWwpCiB7Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247Ci0gICAgZW5j
b2RlciA8PCBkZXRhaWwubGVuZ3RoOworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJhbmdlOwogICAg
IGVuY29kZXIgPDwgZGV0YWlsLmd1ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwudXNlckRl
c2NyaXB0aW9uOwogfQogCiBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdy
YW1tYXJEZXRhaWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxp
bnQ+IGxvY2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2NhdGlv
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4gbGVu
Z3RoOwotICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9wdGlv
bmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAgIGlm
ICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gZ3Vlc3NlczsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9wdGlvbmFsPEdy
YW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgq
bGVuZ3RoKSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikgfX07
CisgICAgcmV0dXJuIHsgeyAqcmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2Vy
RGVzY3JpcHRpb24pIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jl
cXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jl
cXVlc3REYXRhJiByZXF1ZXN0KQpAQCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRl
eHRDaGVja2kKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVyIDw8IHJlc3Vs
dC5sb2NhdGlvbjsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAgZW5jb2RlciA8
PCByZXN1bHQucmFuZ2U7CiAgICAgZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsKICAgICBlbmNv
ZGVyIDw8IHJlc3VsdC5yZXBsYWNlbWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUsOSBAQCBPcHRp
b25hbDxUZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0
Pjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBsb2Nh
dGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRpb24pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsKLSAg
ICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRpb25hbDxDaGFy
YWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdy
YW1tYXJEZXRhaWw+PiBkZXRhaWxzOwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0aW9uYWw8VGV4
dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29k
ZShEZWNvZGVyJgogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgqbG9jYXRpb24p
LCBXVEZNb3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1l
bnQpIH19OworICAgIHJldHVybiB7IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpkZXRhaWxzKSwg
V1RGTW92ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFVzZXJT
dHlsZVNoZWV0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTdHlsZVNoZWV0
JiB1c2VyU3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAxNy4u
MWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw3IEBAIGNs
YXNzIE1hY2hTZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFz
cyBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBAQCBjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBzdHJ1Y3QgQ2Fj
aGVRdWVyeU9wdGlvbnM7CitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlv
bmFyeVBvcHVwSW5mbzsKQEAgLTE0Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhOwog
c3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAgICAK
LXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0
PjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0
ZXJSYW5nZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6Q2hhcmFjdGVyUmFuZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFj
dGVyUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
YWNoZUluZm8mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBjZDlkMjQxNTU1NzExODQzYTU1NTc0
NTY2NDQyOWVkYTQ3N2M5MjcxLi40ZWRiOWRhODYxNjhjYzVkYzU4ZjFhNDhiNTBlMjkxZGVkNmY1
MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC01MDcsOCArNTA3LDEwIEBAIHN0YXRpYyB2b2lkIHRyeUludGVyY2VwdE5hdmln
YXRpb24oUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uCiAgICAg
ICAgICAgICAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
ICp3ZWFrUGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICAgICAgaWYgKHN1Y2Nlc3MgJiYgd2Vha1BhZ2UpCiAgICAgICAgICAgICAgICAgd2Vha1BhZ2Ut
PndpbGxPcGVuQXBwTGluaygpOworI2VuZGlmCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6
dXJsIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVyXShCT09MIHN1Y2Nl
c3MsIE5TRXJyb3IgKikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCAwZmQyZTU2Mjg5NWIzMTYzZWY2ZTc5NmI4M2RhMGZlNTYyNDE4YzFlLi4y
OWJkMThmN2RhMzIyMGYxOTE2YzFhNzY2OGI1YTNkZWE0YzE0OGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzM2NiwxMiArMzM2Niw5IEBA
IHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSBjb3JlVGV4dENoZWNr
aW5nVHlwZShOU1RleHRDaGVja2luZ1R5CiAKIHN0YXRpYyBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0RnJvbU5TVGV4dENoZWNraW5nUmVzdWx0KE5TVGV4dENo
ZWNraW5nUmVzdWx0ICpuc1Jlc3VsdCkKIHsKLSAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW25z
UmVzdWx0IHJhbmdlXTsKLQogICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRU
eXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9ICpt
YWtlQ2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQucmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVu
dCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCmluZGV4IDZlZTQ0
MWIxMWEyMzkwNWUzM2MzOWQ4YTllMDBkMzk3Zjk2ZjUyYjEuLjA2ZDVjZWNjNGU4NTBhNTJiNGM3
OTRjZTIxNjA1NjU0MGY5NTBlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdy
YW1tYXJEZXRhaWwuY3BwCkBAIC00NCw4ICs0NCw4IEBAIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBX
ZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3Jh
CiAKIFdlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRhaWwoaW50IGxvY2F0aW9uLCBpbnQg
bGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlv
bikKIHsKLSAgICBtX2dyYW1tYXJEZXRhaWwubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICBtX2dy
YW1tYXJEZXRhaWwubGVuZ3RoID0gbGVuZ3RoOworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5s
b2NhdGlvbiA9IGxvY2F0aW9uOworICAgIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGggPSBs
ZW5ndGg7CiAKICAgICBzaXplX3QgbnVtR3Vlc3NlcyA9IGd1ZXNzZXMtPnNpemUoKTsKICAgICBt
X2dyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5yZXNlcnZlQ2FwYWNpdHkobnVtR3Vlc3Nlcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKaW5kZXggYzliNzU1M2NkN2Iw
OGVlYWM3ZDgyMzM4YjExMGY0YWVkZDllZjZhYy4uMzkwYjRhNWY3YjllYWM2MzFmZDczMjQxNjU3
ZTIyMWRhNWMxOTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3Jh
bW1hckRldGFpbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRh
aWwuaApAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFy
RGV0YWlsPiBjcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVz
c2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbik7CiAgICAgc3RhdGljIFJlZjxXZWJH
cmFtbWFyRGV0YWlsPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogCi0g
ICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9u
OyB9Ci0gICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sZW5n
dGg7IH0KKyAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwu
cmFuZ2UubG9jYXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFt
bWFyRGV0YWlsLnJhbmdlLmxlbmd0aDsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBndWVzc2VzKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVy
biBtX2dyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCmluZGV4IDQxMDhmYWQ2ZDI2NjU3ZWFk
ZTkwODZjMTZjZmRmMjE4MTA3Y2NiMjUuLjFkYTkwZWVjNGRiNzBiNTEwYTEzZWFhN2RlM2U1MDVi
ZmQ1ZjQzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hl
Y2tlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2Vy
R3RrLmNwcApAQCAtMjY5LDggKzI2OSw4IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAg
ICAgICAgVGV4dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nUmVzdWx0OwogICAgICAgICBtaXNz
cGVsbGluZ1Jlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAg
IG1pc3NwZWxsaW5nUmVzdWx0LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlv
bjsKLSAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7
CisgICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LnJhbmdlLmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlz
c3BlbGxpbmdMb2NhdGlvbjsKKyAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQucmFuZ2UubGVuZ3Ro
ID0gbWlzc3BlbGxpbmdMZW5ndGg7CiAgICAgICAgIHBhcmFncmFwaENoZWNraW5nUmVzdWx0LmFw
cGVuZChtaXNzcGVsbGluZ1Jlc3VsdCk7CiAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGluZ0xv
Y2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGg7CiAgICAgICAgIC8vIEdlbmVyYWxseSwgd2UgZW5k
IHVwIGNoZWNraW5nIGF0IHRoZSB3b3JkIHNlcGFyYXRvciwgbW92ZSB0byB0aGUgYWRqYWNlbnQg
d29yZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tl
cklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpp
bmRleCA5MjAwZWI2MDhiM2ExNTFmNzZjMDg2OGRjNDg4MzBhZmZkYzQ3MWZlLi5mNjA4YzhkYjVj
NjA2NTMwY2FhNTk2ZWQ2YWI1ZTk1ZDZjZWRlNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCkBAIC0yMTIsOCArMjEyLDcgQEAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxs
RG9jdW1lbnRUYWcgc3AKIAogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSBtaXNzcGVsbGVkUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIHJlc3Vs
dC5sZW5ndGggPSBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2Ug
PSAqbWFrZUNoYXJhY3RlclJhbmdlKG1pc3NwZWxsZWRSYW5nZSk7CiAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKFdURk1vdmUocmVzdWx0KSk7CiAKICAgICAgICAgb2Zmc2V0U29GYXIgPSBtaXNzcGVs
bGVkUmFuZ2UubG9jYXRpb24gKyBtaXNzcGVsbGVkUmFuZ2UubGVuZ3RoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4IDBjYTEzM2EyYWRjZTQx
YTdjZmNmM2EwZDQxNGFiNGZmYjg0ZWU2MzQuLmFjM2JlZTAwYjE2NTkzYWNmNDU3MWVhOTljMTEw
MTZjYzE0ZjQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0
Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0KQEAgLTMzNCwyMiArMzM0LDIwIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9ydGhvZ3JhcGh5Ok5VTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkQ291bnQ6TlVMTF07
CiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21p
bmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1
bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNv
bWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubGVuZ3RoID4g
MCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxlbmd0aCA+IDAp
OworICAgICAgICBhdXRvIHJlc3VsdFJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWlu
Z1Jlc3VsdC5yYW5nZSk7CiAgICAgICAgIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmcpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3Vs
dC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0
KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFy
KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAg
IE5TQXJyYXkgKmRldGFpbHMgPSBbaW5jb21pbmdSZXN1bHQgZ3JhbW1hckRldGFpbHNdOwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0
LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaW5j
b21pbmdEZXRhaWwgaW4gZGV0YWlscykgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmNvbWlu
Z0RldGFpbCk7CiAgICAgICAgICAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CkBAIC0zNTgs
OCArMzU2LDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgICAgICAgICBOU1Jh
bmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3RoID4gMCk7Ci0g
ICAgICAgICAgICAgICAgZGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgICAgICBkZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgZGV0YWlsLnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShkZXRhaWxO
U1JhbmdlKTsKICAgICAgICAgICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2luY29t
aW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOwogICAgICAg
ICAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBbaW5jb21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5
Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpn
dWVzcyBpbiBndWVzc2VzKQpAQCAtMzcwLDM2ICszNjcsMzEgQEAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRU
YWcgc3AKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlw
ZUxpbmsgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6TGluazsKLSAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3Vs
dFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW1tpbmNvbWluZ1Jlc3Vs
dCBVUkxdIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVR
dW90ZSAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7Ci0gICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1
bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3Vs
dCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlRGFz
aCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpKSB7CiAg
ICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0
aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
cmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFu
Z2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVw
bGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZVJlcGxhY2Vt
ZW50ICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKLSAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
YW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5n
VHlwZTo6Q29ycmVjdGlvbikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rp
b247Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBs
YWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9CkBAIC00NDMsMTcgKzQzNSwyMCBA
QCB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKFNw
ZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cgogCiB2b2lkIFRleHRDaGVja2VyOjp1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoU3BlbGxEb2N1bWVudFRhZywgY29uc3QgU3RyaW5nJiBi
YWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQogewot
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdy
YW1tYXJEZXRhaWwuZ3Vlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBOU1N0cmluZyAqZ3Vl
c3MgPSBncmFtbWFyRGV0YWlsLmd1ZXNzZXNbaV07Ci0gICAgICAgIFtjb3JyZWN0aW9ucyBhZGRP
YmplY3Q6Z3Vlc3NdOworICAgIGF1dG8gY29ycmVjdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZ3JhbW1hckRldGFp
bC5ndWVzc2VzKSB7CisgICAgICAgIE5TU3RyaW5nICpndWVzc05TU3RyaW5nID0gZ3Vlc3M7Cisg
ICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0cmluZ107CiAgICAgfQogCi0g
ICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0
aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcgKmdyYW1tYXJVc2VyRGVz
Y3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PiBncmFtbWFyRGV0YWlsRGljdCA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3Jh
bW1hclJhbmdlXSwgTlNHcmFtbWFyUmFuZ2UsIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24sIE5TR3Jh
bW1hclVzZXJEZXNjcmlwdGlvbiwgY29ycmVjdGlvbnMuZ2V0KCksIE5TR3JhbW1hckNvcnJlY3Rp
b25zLCBuaWxdKTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJE
ZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGV0YWlsID0gQHsKKyAg
ICAgICAgTlNHcmFtbWFyUmFuZ2UgOiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyRGV0
YWlsLnJhbmdlXSwKKyAgICAgICAgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uIDogZGVzY3JpcHRp
b25OU1N0cmluZywKKyAgICAgICAgTlNHcmFtbWFyQ29ycmVjdGlvbnMgOiBjb3JyZWN0aW9ucy5n
ZXQoKSwKKyAgICB9OwogCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRl
dGFpbDpncmFtbWFyRGV0YWlsRGljdC5nZXQoKV07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRH
cmFtbWFyUGhyYXNlIGRldGFpbDpkZXRhaWxdOwogfQogCiB2b2lkIFRleHRDaGVja2VyOjpnZXRH
dWVzc2VzRm9yV29yZChTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0
cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGluc2VydGlvblBvaW50
LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFi
bGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCmluZGV4IGYxOGNh
YTcyY2JkOTY1MzE3NTVlOTJlY2ZiMjBlZjRkYjhjYTUzYWYuLjcwYTM5MDM1ZDU4YzgxMmMyY2Iw
MTMxOWY1YTE2YzZmYTU5ZjVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHkubW0KQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3gKICAgICBU
ZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJvb3QsIHJhbmdlLmdl
dCgpLCBzZWxlY3Rpb25Mb2NhdGlvbiwgc2VsZWN0aW9uTGVuZ3RoKTsKICAgICBzZWxlY3Rpb25M
b2NhdGlvbiArPSBvZmZzZXQ7CiAKLSAgICByZXR1cm4ge3sgVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBzZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2Vs
ZWN0aW9uTG9jYXRpb24gfX07CisgICAgcmV0dXJuIHt7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShy
b290LCBzZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoKSwgc2VsZWN0aW9uTG9jYXRpb24gfX07CiB9
CiAKIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVUb1Nl
bGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFubm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rp
b25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExv
Y2F0aW9uLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKQpAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVU
b1NlbGVjdGlvbihBdHRyaWJ1dGVkU3RyaW5nIGFuCiAKICAgICAgICAgICAgICAgICBzaXplX3Qg
c2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9m
ZnNldDsKICAgICAgICAgICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25M
b2NhdGlvblRvUmVzdG9yZSA+IGxvY2F0aW9uSW5Sb290ICsgcmVsYXRpdmVSZXBsYWNlbWVudExv
Y2F0aW9uICsgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAg
ICBhdXRvIHNlbGVjdGlvblRvUmVzdG9yZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgocm9vdCwgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDApOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblRvUmVzdG9yZSA9IHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShyb290LCBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSwgMCk7CiAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhzZWxlY3Rpb25Ub1Jlc3RvcmUuZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lk
IFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24o
QXR0cmlidXRlZFN0cmluZyBhbgogICAgIH0KIAogICAgIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5n
IGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIFthbm5vdGF0ZWRTdHJp
bmcuc3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5PE5T
QXR0cmlidXRlZFN0cmluZ0tleSwgaWQ+ICphdHRycywgTlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwg
Qk9PTCAqc3RvcCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbG9jYXRpb25JblJvb3QgKyBh
dHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAg
YXV0byBhdHRyaWJ1dGVDb3JlUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgbG9j
YXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVu
Z3RoKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVDb3JlUmFuZ2UpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBBdHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q2hlY2tpbmdEYXRh
ID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFy
a2VyLT5kYXRhKCkpOwotICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOwor
ICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShjcmVhdGVM
aXZlUmFuZ2UoY3VycmVudFRleHRSYW5nZSksIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSAtIG1hcmtlci0+c3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgICAgIHNp
emVfdCBzdWJyYW5nZUxvY2F0aW9uOwogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTGVuZ3Ro
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
MmIzYTE0YjU5YTRlNzg4NDI3Y2Y5MTRiN2IyMzJkYTEwYzI4MDVhLi43YWIxMDZhMWI5MWQ2NjNk
MDY2NmNlNTZmZGEyZDA1NGNjOTczYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQyMCwyMCArNTQyMCwyMyBAQCB2b2lkIFdlYlBhZ2U6
OmRlbGV0ZVN1cnJvdW5kaW5nKGludDY0X3Qgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJDb3Vu
dCkKICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CisgICAgYXV0byYgc2VsZWN0aW9uID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7
CiAgICAgYXV0byBzdXJyb3VuZGluZ1JhbmdlID0gbWFrZVJhbmdlKHN0YXJ0T2ZFZGl0YWJsZUNv
bnRlbnQoc2VsZWN0aW9uU3RhcnQpLCBzZWxlY3Rpb25TdGFydCk7Ci0gICAgYXV0byBjdXJzb3JQ
b3NpdGlvbiA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKTsKLSAg
ICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkudHJl
ZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9u
ICsgb2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7Ci0gICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkKKyAg
ICBpZiAoIXN1cnJvdW5kaW5nUmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8mIHJv
b3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5y
b290Tm9kZSgpOworICAgIENoYXJhY3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJh
Y3RlclJhbmdlLmxvY2F0aW9uID0gV2ViQ29yZTo6Y2hhcmFjdGVyQ291bnQoKnN1cnJvdW5kaW5n
UmFuZ2UpICsgb2Zmc2V0OworICAgIGNoYXJhY3RlclJhbmdlLmxlbmd0aCA9IGNoYXJhY3RlckNv
dW50OworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHJvb3ROb2RlKSwgY2hhcmFjdGVyUmFuZ2UpOwor
CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1
ZSk7Ci0gICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKCpzZWxlY3Rpb25SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICB0YXJn
ZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc2VsZWN0
aW9uUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShmYWxzZSk7CiAgICAgdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogICAgIHNlbmRF
ZGl0b3JTdGF0ZVVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhODdkYmVmNTQ3MjA3MTUxNzVjZTcyNTY0YzZh
OGY1YWFjMTQxYzdiLi41ZjQ1NTZkMzRmOTc1MzEyNDI5YTI1Y2MzM2IwODhjMzk3ODhlMjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNDA3Niw4ICs0MDc2LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXV0byByYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbmV3U2VsZWN0aW9uTG9jYXRpb24udW5z
YWZlR2V0KCksIG5ld1NlbGVjdGlvbkxlbmd0aC51bnNhZmVHZXQoKSkpCi0gICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdn
ZXJlZCk7CisgICAgQ2hhcmFjdGVyUmFuZ2UgbmV3U2VsZWN0aW9uUmFuZ2U7CisgICAgbmV3U2Vs
ZWN0aW9uUmFuZ2UubG9jYXRpb24gPSBuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKTsK
KyAgICBuZXdTZWxlY3Rpb25SYW5nZS5sZW5ndGggPSBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZl
R2V0KCk7CisKKyAgICBhdXRvIHJlc29sdmVkUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2Up
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlZFJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KQEAgLTQxOTIsMTYgKzQxOTYsMTUgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCByZXF1ZXMKICAgICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3RDb250YWluZXJOb2Rl
ID0gcm9vdE5vZGUtPmlzQ29udGFpbmVyTm9kZSgpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4o
cm9vdE5vZGUuZ2V0KCkpIDogcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgVGV4dEl0
ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290Q29udGFpbmVyTm9kZS5n
ZXQoKSwgcmFuZ2VPZkludGVyZXN0LmdldCgpLCByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiwgcmFu
Z2VPZkludGVyZXN0TGVuZ3RoKTsKIAotICAgICAgICBDaGVja2VkU2l6ZSBtaWRwb2ludExvY2F0
aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKKyAgICAgICAgQ2hlY2tlZDxDaGFyYWN0
ZXJDb3VudCwgUmVjb3JkT3ZlcmZsb3c+IG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJl
c3RMb2NhdGlvbiB9OwogICAgICAgICBtaWRwb2ludExvY2F0aW9uICs9IHJhbmdlT2ZJbnRlcmVz
dExlbmd0aCAvIDI7CiAgICAgICAgIGlmIChtaWRwb2ludExvY2F0aW9uLmhhc092ZXJmbG93ZWQo
KSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWlkcG9pbnRSYW5nZSA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdENvbnRhaW5lck5vZGUuZ2V0KCks
IG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0KCksIDApOworICAgICAgICBhdXRvIG1pZHBvaW50
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3RDb250YWluZXJOb2RlKSwgbWlkcG9p
bnRMb2NhdGlvbi51bnNhZmVHZXQoKSkpOwogCi0gICAgICAgIGF1dG8gbWlkcG9pbnQgPSBtaWRw
b2ludFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIHN0YXJ0T2ZSYW5nZU9mSW50ZXJl
c3RJblNlbGVjdGlvbiA9IHN0YXJ0T2ZXb3JkKG1pZHBvaW50KTsKICAgICAgICAgaWYgKHN0YXJ0
T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA8IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0KSB7CiAg
ICAgICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBlbmRPZldvcmQo
bWlkcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGNhNDc5MzEwNTRiODAyNjI2ODczZTNm
NTNmYjVlZTMwNTRlOTg1MTMuLjNiOTQ2MzA0ZGZiNzUyMTE0MTNlOWY4ZDExMDdmNmY4NzY1OTlk
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTg2NSwxMiArODY1LDExIEBAIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3Ry
aW5nVmlldyBzdHJpCiAKICAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW21fd2ViVmll
dyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gY2hlY2tTcGVsbGluZ09mU3RyaW5nOnN0cmluZy5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldOwogICAgIGZvciAoTlNWYWx1ZSAq
aW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVz
dWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIHJlc3VsdFJhbmdlLmxlbmd0aCA+
IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUu
bGVuZ3RoID4gMCk7CiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
IHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJh
Y3RlclJhbmdlKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUpOwogICAgICAgICByZXN1bHRzLmFw
cGVuZChyZXN1bHQpOwogICAgIH0KIApAQCAtOTM5LDExICs5MzgsOSBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3Jh
bW1hckRldGFpbAogICAgICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgICAg
IE5TVmFsdWUgKmRldGFpbFJhbmdlQXNOU1ZhbHVlID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNH
cmFtbWFyUmFuZ2VdOwogICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUpOwotICAg
ICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VW
YWx1ZV07Ci0gICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpOwotICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAg
Z3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAg
IGdyYW1tYXJEZXRhaWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgIEFT
U0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sZW5n
dGggPiAwKTsKKyAgICAgICAgZ3JhbW1hckRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFu
Z2UoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZSk7CiAgICAgICAgIGdyYW1tYXJEZXRh
aWwudXNlckRlc2NyaXB0aW9uID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRl
c2NyaXB0aW9uXTsKICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtkZXRhaWwgb2JqZWN0Rm9y
S2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3Mg
aW4gZ3Vlc3NlcykKQEAgLTk1NywyMiArOTU0LDIwIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRD
CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKIAogICAgIGZvciAoTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewot
ICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAg
ICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVz
dWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZv
dW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBB
U1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAg
ICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0
byByZXN1bHRSYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2Up
OwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAm
JiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewog
ICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQu
bG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1
bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNr
aW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAg
ICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRh
aWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5s
b2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3Vs
dFJhbmdlOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGlu
IGRldGFpbHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAg
ICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtOTgxLDggKzk3Niw3IEBAIHN0
YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVz
dWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1Jh
bmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAg
IEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAg
IGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAg
ICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAg
IGRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFjdGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAg
ICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmpl
Y3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0Fy
cmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3Jy
ZWN0aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3Nl
cykKQEAgLTk5MywzNiArOTg3LDMxIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAg
IH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNr
aW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAg
ICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0
ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9
IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tp
bmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAg
IFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRl
eHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVz
dWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFu
Z2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAg
ICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRT
dHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdU
eXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJh
bmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxl
bmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAg
ICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5n
XTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2lu
Z1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAg
ICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRS
YW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCBy
ZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rp
b24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAg
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJh
bmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5j
b21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTA0OSwxNiArMTAzOCwxOCBAQCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0
cmluZ1ZpZXcgc3RyaQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdp
dGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3Jh
bW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBOU011dGFibGVBcnJheSogY29ycmVj
dGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTlNTdHJp
bmcqIGd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlv
bnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBOU011dGFibGVBcnJheSAqY29ycmVjdGlvbnMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0
YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcgKmd1ZXNzTlNTdHJpbmcgPSBndWVzczsK
KyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc05TU3RyaW5nXTsKICAgICB9Ci0g
ICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0
aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVz
Y3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBOU0RpY3Rpb25h
cnkqIGdyYW1tYXJEZXRhaWxEaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1h
clJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24s
IGNvcnJlY3Rpb25zLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXTsKLSAgICAKLSAgICBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhH
cmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsK
KyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRl
c2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7CisgICAgICAgIE5T
R3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5n
ZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJp
bmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMsCisgICAgfTsK
KyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQ
YW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRpY3Rpb25hcnld
OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVs
bGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQpAQCAtMTE5NCw3ICsxMTg1LDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRT
cGFjZXMoVGV4dENoZWNraW5nUmVzdWx0IGEKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpb
V2ViSFRNTFZpZXcgY2xhc3NdXSkgewogICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0
aCA9IGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpOwogICAgICAgICBpZiAo
cmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFu
Z2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRM
ZW5ndGgpOworICAgICAgICAgICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2Uo
YWNjZXB0ZWRDYW5kaWRhdGUucmFuZ2UubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAg
ICAgICAgICAgIE5TUmFuZ2Ugc29mdFNwYWNlUmFuZ2UgPSBOU01ha2VSYW5nZShOU01heFJhbmdl
KHJlcGxhY2VkUmFuZ2UpIC0gMSwgMSk7CiAgICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRh
dGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoIiAiKSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxW
aWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFuZ2VdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZWQ1ZWQyMDQwMjk1NTc4
ZWJlOTllYjgwNzc0MmQ3ZTA2YjA0OWUzMC4uZGQ4N2FkNDlhMzVhODJlMzJkZjJiY2VjZjVkZTJm
ZTc1ZmI2ODQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC04MjEsMTAgKzgyMSw5IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZl
cnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKIAogLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoo
V2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8KIHsKLSAgICBpZiAobnNyYW5n
ZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6Om1ha2VDaGFy
YWN0ZXJSYW5nZShuc3JhbmdlKTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRp
b24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0g
SU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8g
PT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIg
Y3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVk
IGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAtODM2LDcgKzgzNSw3IEBAIC0gKFJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1Jl
bGF0aXZlVG86CiAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVs
ZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCplbGVtZW50KSwgKnJhbmdlKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKHJh
bmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpQYXJhZ3JhcGgpOwpAQCAt
ODQ0LDEwICs4NDMsOSBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01S
YW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAgIGF1dG8gcGFyYWdy
YXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7CiAgICAg
aWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byYg
cm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9k
ZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hhcmFjdGVy
Q291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5v
ZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0
aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhw
YXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5lbmQ7Cisg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3Zl
KCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQpIH0sICpyYW5nZSkpOwogfQogCiAt
IChET01SYW5nZSAqKV9jb252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVkZGYyM2Vj
ZjNjYmE1YjliYzllYTlmMjZlZWRjZjAzNzk5NTY4OGMuLjZmOTFlZmI5YTkwMWFlMWNjYmFlNTZj
OWIyZmQ5OWMxNDA5OTUyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTcyNzgsMTIgKzcyNzgsOSBAQCBjb25zdGV4cHIgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZSBjb3JlVGV4dENoZWNraW5nVHlwZShOU1RleHRDaGVja2luZ1R5cGUgdHlwZQog
CiBzdGF0aWMgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZy
b21OU1RleHRDaGVja2luZ1Jlc3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7
Ci0gICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IG5zUmVzdWx0LnJhbmdlOwotCiAgICAgV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0
Q2hlY2tpbmdUeXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9
IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5s
ZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0gKldlYkNvcmU6Om1ha2VDaGFyYWN0ZXJSYW5nZShu
c1Jlc3VsdC5yYW5nZSk7CiAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFj
ZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDhkZjFjNzIxYmI2OGY2ZTAxMDE3ZTY1NTI0YzkzYzBkZmVlMjg4NDYuLjQ2OTc5ZDcxYWZm
NzUxOWFlMGE0YWVmOTIxZjlkYzllOGE1MDQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
NzkwLDE0ICs3OTAsMTkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3Ry
aW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAgICAgICAgaWYgKGVu
dW1EZXRhaWxzT2JqLT5OZXh0KDEsICZkZXRhaWxPYmosICZmZXRjaGVkKSAhPSBTX09LKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7Ci0gICAgICAg
IGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sZW5ndGgoJmRldGFpbC5sZW5ndGgpKSkKKyAgICAgICAg
aW50IGxlbmd0aDsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxlbmd0aCgmbGVuZ3Ro
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmot
PmxvY2F0aW9uKCZkZXRhaWwubG9jYXRpb24pKSkKKyAgICAgICAgaW50IGxvY2F0aW9uOworICAg
ICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+bG9jYXRpb24oJmxvY2F0aW9uKSkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgQlN0cmluZyB1c2VyRGVzYzsKICAgICAgICAgaWYgKEZB
SUxFRChkZXRhaWxPYmotPnVzZXJEZXNjcmlwdGlvbigmdXNlckRlc2MpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOworICAgICAgICBkZXRh
aWwucmFuZ2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxlbmd0
aCA9IGxlbmd0aDsKICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFN0cmluZyh1c2Vy
RGVzYywgU3lzU3RyaW5nTGVuKHVzZXJEZXNjKSk7CiAKICAgICAgICAgQ09NUHRyPElFbnVtU3Bl
bGxpbmdHdWVzc2VzPiBlbnVtR3Vlc3Nlc09iajsKQEAgLTgyNiw3ICs4MzEsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjbwogICAgICAgICBndWVzc2VzQlNUUnMuYXBwZW5kKGd1ZXNzLnJlbGVh
c2UoKSk7CiAgICAgfQogICAgIEJTdHJpbmcgdXNlckRlc2NyaXB0aW9uQlNUUihkZXRhaWwudXNl
ckRlc2NyaXB0aW9uKTsKLSAgICBlZC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3RoLCB1c2VyRGVz
Y3JpcHRpb25CU1RSLCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXpl
KCkpOworICAgIGVkLT51cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoQlN0cmluZyhz
dHJpbmcpLCBkZXRhaWwucmFuZ2UubG9jYXRpb24sIGRldGFpbC5yYW5nZS5sZW5ndGgsIHVzZXJE
ZXNjcmlwdGlvbkJTVFIsIGd1ZXNzZXNCU1RScy5kYXRhKCksIChpbnQpZ3Vlc3Nlc0JTVFJzLnNp
emUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGd1ZXNzZXNCU1RScy5zaXplKCk7
IGkrKykKICAgICAgICAgU3lzRnJlZVN0cmluZyhndWVzc2VzQlNUUnNbaV0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkNzA1M2VjMzIwNGNhYWVlMGU0OWE4MWUxNWJl
MTEyODM0OThjZGM0Li4xN2FlNWIwYTU2OGM2Mzc1NTdhNDUyYzU1YWQzMzI4YjkzNzFiZmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNzc2MSwyMyArNzc2MSwyMSBAQCBI
UkVTVUxUIFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZyhVSU5U
IGxvY2F0aW9uLCBVSU5UIGxlbmd0aAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCi0gICAgSW50UmVjdCByZXN1bHRJbnRSZWN0OwotICAgIHJlc3VsdEludFJlY3Qu
c2V0TG9jYXRpb24oSW50UG9pbnQoMCwgMCkpOwotICAgIHJlc3VsdEludFJlY3Quc2V0U2l6ZShJ
bnRTaXplKDAsIDApKTsKLSAgICAKLSAgICBpZiAobG9jYXRpb24gPiBJTlRfTUFYKQorICAgIGF1
dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm4gRV9GQUlMOwotICAgIGlmIChsZW5ndGggPiBJTlRfTUFYIHx8IGxvY2F0aW9uICsgbGVuZ3Ro
ID4gSU5UX01BWCkKLSAgICAgICAgbGVuZ3RoID0gSU5UX01BWCAtIGxvY2F0aW9uOwotICAgICAg
ICAKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKworICAgIENoYXJh
Y3RlclJhbmdlIGNoYXJhY3RlclJhbmdlOworICAgIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uID0g
bG9jYXRpb247CisgICAgY2hhcmFjdGVyUmFuZ2UubGVuZ3RoID0gbGVuZ3RoOworICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIGNoYXJhY3RlclJhbmdlKSk7
CiAKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICAKKwogICAg
IEludFJlY3QgcmVjdCA9IGZyYW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKLSAgICByZXN1bHRJbnRSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93
KHJlY3QpOworICAgIEludFJlY3QgcmVzdWx0SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyZWN0KTsKIAogICAgIHJlc3VsdEludFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0ODE4MDE2Y2U0NzZkNmU3Nzg5YzZhMGRlY2IxZGM3MzJlMzU0
ZDExLi5mZWEyMjg2Y2NhZGVmYjRkMzJmMjkyNzc5MTlhYzQ2OGYyMDRkNzUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTEgQEAKKzIwMjAtMDMtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBv
ZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9m
LWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sOgorICAgICAgICBV
cGRhdGVkIHRvIGV4cGVjdCB0ZXh0TWFya2VyRm9ySW5kZXggdG8gY2xhbXAgcmF0aGVyIHRoYW4g
cmV0dXJuaW5nIHNvbWV0aGluZyBpbnZhbGlkLgorCisgICAgICAgICogZWRpdGluZy9tYWMvaW5w
dXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0
bWw6CisgICAgICAgIFVwZGF0ZWQgdGVzdCBvdXRwdXQgdG8gaW5jbHVkZSB3aGF0IGlzIGJlaW5n
IHRlc3RlZCwgbm90IGp1c3QgdGhlIHRlc3QgcmVzdWx0LgorICAgICAgICBVcGRhdGVkIHRlc3Qg
cmVzdWx0cyB0byBleHBlY3QgY2xhbXBpbmcgcmF0aGVyIHRoYW4gYW4gZW1wdHkgcmVjdGFuZ2xl
LCBmb3IgdmFsdWVzCisgICAgICAgIHRoYXQgYXJlIG91dCBvZiBib3VuZHMuIEFsc28gZ290IHJp
ZCBvZiBkdW1waW5nIG9mIGVpZHRpbmcgY2FsbGJhY2tzIHNpbmNlIHRoZXJlIGlzCisgICAgICAg
IG5vIHJlYXNvbiB0byBpbmNsdWRlIHRoZW0gaW4gdGhpcyB0ZXN0LgorCisgICAgICAgICogZWRp
dGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQuaHRtbDoKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNpbmNlIG91ciBvbGRlc3Qgc3VwcG9ydGVkIHJlbGVh
c2UgaXMgTW9qYXZlLCBkZWxldGVkCisgICAgICAgIGFsbCBydWxlcyB3aXRoIFNpZXJyYSBvciBI
aWdoU2llcnJhIGNvbmRpdGlvbmFscyBzaW5jZSB0aG9zZSBjb25kaXRpb25zIGFyZSBhbHdheXMg
ZmFsc2UsCisgICAgICAgIGFuZCByZW1vdmVkIGFueSBjb25kaXRpb25hbHMgdGhhdCBzYWlkIFNp
ZXJyYSssIEhpZ2hTaWVycmErLCBvciBNb2phdmUrIGJlY2F1c2UgdGhvc2UKKyAgICAgICAgY29u
ZGl0aW9ucyBhcmUgYWx3YXlzIHRydWUuIE9uZSB0ZXN0LCBmaXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQuaHRtbCwgaGFkIHJlc3VsdHMKKyAgICAgICAgY2hlY2tlZCBpbiB0aGF0IHdl
cmUgY29ycmVjdCBmb3IgTW9qYXZlIGJ1dCBpbmNvcnJlY3QgZm9yIENhdGFsaW5hLiBGb3IgdGhh
dCB0ZXN0LCB0aGUKKyAgICAgICAgcmVzdWx0cyBhcmUgbm93IGNvcnJlY3QgZm9yIENhdGFsaW5h
LCBzbyB1cGRhdGVkIGV4cGVjdGF0aW9ucyBmb3IgdGhhdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uIEFsc28gc29tZSB0ZXN0cyB0aGF0IGNs
YWltZWQgSW1hZ2VPbmx5RmFpbHVyZQorICAgICAgICBhcmUgZmxha3kgYW5kIHNvbWV0aW1lcyBw
YXNzaW5nLCBzbyBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgSW1hZ2VPbmx5RmFpbHVy
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4gQWxz
byBzb21lIHRlc3RzIG1hcmtlZCBGYWlsdXJlIHdlcmUgZmxha3kgYW5kCisgICAgICAgIHNvbWV0
aW1lcyBwYXNzaW5nLCBzbyBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgRmFpbHVyZS4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICBUaGlz
IGlzIGFscmVhZHkgYSBNYWMtc3BlY2lmaWMgdGVzdDsgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRv
IGhhdmUgYW4gYWRkaXRpb25hbAorICAgICAgICBNYWMtc3BlY2lmaWMgb3ZlcnJpZGRlbiByZXN1
bHQgc2luY2UgdGhlIGJhc2UgcmVzdWx0IGlzIGFscmVhZHkgTWFjLXNwZWNpZmljLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJh
bmdlLTAwMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9h
dHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sOgorICAgICAgICBVcGRhdGVk
IHRoaXMgdGVzdCB0byBleHBlY3QgdGhlIGVtcHR5IHN0cmluZywgbm90ICJ1bmRlZmluZWQiIGZv
ciBhbiBvdXQgb2YgcmFuZ2UsCisgICAgICAgIHNpbmNlIHdlIG5vdyBjbGFtcCBpbnN0ZWFkIG9m
IGZhaWxpbmcgaW4gc3VjaCBjYXNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3Rl
eHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdl
Lmh0bWw6CisgICAgICAgIERpdHRvLgorCiAyMDIwLTAzLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbjogZmFzdC9oaWRw
aS9pbWFnZS1zcmNzZXQtc3ZnLWNhbnZhcy0yeC5odG1sIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5
IG9uIGlPUyBFV1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Rl
eHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJv
dW5kcy1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3Yjlj
NTg3MmVmZTFkZTcyYy4uMjM0ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYxNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3It
aW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFz
aC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRoaXMg
dmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVu
IGFuIGluZGV4IG91dCBvZiBib3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9y
SW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAyXjMx
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1hcmtl
clZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNlCitQ
QVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5
OTk5OTk5OSkpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFz
aC5odG1sCmluZGV4IDBhYjJmMTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEuLjZh
YzdmOWY2NzJjYjY4NTE1ZTA3YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3Vu
ZHMtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFy
a2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwxMiBA
QCB0ZXh0CiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0
IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggb3V0
IG9mIGJvdW5kcyIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1h
cmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRo
YW4gMl4zMSIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAgICAg
ICB2YXIgaXRlbTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1h
cmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5
OTk5OTk5KSkiKTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFj
dGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2QzY2M2
NDQ5NzQzYmRiNTZlMDM5YTIuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2NmIz
YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50
eHQKQEAgLTEsMjAgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGlu
Z0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIg
b2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcy
LDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4
Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAot
MTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBh
dCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZp
cnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2Yg
bGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYs
MTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4
KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rlcjog
KDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgs
MTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcp
LCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgs
MTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5
NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3
LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgx
MDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
cGxhaW4uaHRtbAppbmRleCA3OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2MGRl
Li42MmNkYzliODI2Zjk2NWY4NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1w
bGFpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVt
cEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFyZ2lu
OiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBtYXJn
aW46IDEwOyBwYWRkaW5nOiAwIH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1NgogPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpA
QCAtMjEsNDAgKzE1LDQyIEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRl
bS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNv
bGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9n
UmVjdChjb21tZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQg
KyAiOiAoIiArIHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICArIHRl
eHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0
aCkgKyAiKSIpOworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5
IHsKLQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQg
YXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3Rl
ciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7
IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0K
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUs
IDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5Njcy
OTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmly
c3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEw
MDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJCXdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAorCQkJ
bG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2Fy
ZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQg
YXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5k
IG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7
CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBj
aGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsK
KwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUi
LCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxv
Z1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2
NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3
LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEw
MDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwg
NywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3
LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsg
ZXguZGVzY3JpcHRpb24pOwogCQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgicCIpOwogCQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMp
OwogCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2Ugewog
CQlkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0
ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5w
dXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRleCBh
Y2ZkNTJmMGI5NDhhNjUzZmMwNmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4MDcw
ZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGlu
Z05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkg
PiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJ
ID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIs
MCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgK
LTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEw
LDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAs
MCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQg
YWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0
IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQg
b2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwg
KDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0
IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDAp
LCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0
IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSks
ICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3Rlcjog
KDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRv
IHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRv
IHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVk
IHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1z
dHlsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3MWNk
MmZiMGRiYTYzMGYyMWUuLmU1YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZhOTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lu
cHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsxLDUg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0eWxl
PgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMzICsx
NiwzNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2Vz
LmFwcGVuZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVu
dCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBz
dGFydCArICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsK
KyAgICB9CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJ
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLnNldE1hcmtlZFRleHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250
cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhl
IGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDAp
KTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZp
cnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkp
OyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsg
Ly8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hh
cmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDAp
KTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9nUmVj
dCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0
ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhl
IGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxp
bmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQls
b2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0
ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxv
Z1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3
KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3Qo
ImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7
CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsK
KwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDAp
OworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7
CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0
OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVz
Y3JpcHRpb24pOwogCQl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggOWIzZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNlMC4u
ODFmZjFkYTMwNzFlYjgxNDAyMTk4MjAxNzdjZTZkYzY0MjdhNmIyZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIsOSArOTIsNiBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJT
b2NrZXQvcmVhZHlTdGF0ZS8wMDYuaAogIyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzIG5vdCB5ZXQg
c3VwcG9ydGVkIGluIFdLMQogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5IFsgU2tpcCBdCiAKLVsg
U2llcnJhIF0gYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsgU2tpcCBd
Ci1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktc2Vzc2lvbi12NC5o
dG1sIFsgU2tpcCBdCi0KICMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIHll
dC4KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LW5vZG93bmxvYWQtc2V0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBGYWlsdXJlIF0K
QEAgLTIzOCwyNiArMjM1LDExIEBAIHdlYmtpdC5vcmcvYi8xNTUwNjcgc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYWJvcnQtcHJpdmF0ZS5odG1sIFsgUGFzcyBDcmFzCiAKIHdlYmtpdC5v
cmcvYi8xNzIwOTIgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2Fkb3B0aW9uLWFnZW5jeS11bmxvYWQt
aWZyYW1lLTQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBT
aWVycmEgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWh0dHAtdXJsLWFsbG93
ZWQtYnktY3NwLW1lZGlhLXNyYy1zdGFyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291
cmNlLWZyb20tcmVtb3RlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3
MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vz
c3NhbWVvcmlnaW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsg
U2llcnJhIF0gaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNl
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0
dHAvdGVzdHMvbWVkaWEvYXV0b3BsYXktaWYtYXVkaW8taXMtcGxheWluZy5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLWxvYWQtdHdpY2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4
MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3QuaHRt
bCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90
ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGlyZWN0Lmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAv
dGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmcuaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0
eS54bWwgWyBTa2lwIF0KIAotIyByZGFyOi8vcHJvYmxlbS8yMDAwMTk4NQotWyBTaWVycmEgXSBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotCiAj
IHJkYXI6Ly9wcm9ibGVtLzM0NzE2MTYzIEJyZWFrcyBzdWJzZXF1ZW50IHRlc3RzIHVzaW5nIHJl
c3BvbnNlLnhtbAotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmFu
Z2UtdGVzdC5odG1sIFsgU2tpcCBdCisjIEZJWE1FOiBTaG91bGQgYmUgZml4ZWQgaW4gQ2F0YWxp
bmE7IG5lZWQgdG8gcmUtZW5hYmxlLgoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yYW5nZS10
ZXN0Lmh0bWwgWyBTa2lwIF0KIAogIyBXSzEgZG9lcyBub3Qgc3VwcG9ydCBzeW5jIFhIUiByZWRp
cmVjdGlvbnMgYXMgZG9lcyBXSzIKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1zeW5jLXho
ci1pbi1tYWluLWZyYW1lLmh0bWwgWyBTa2lwIF0KQEAgLTQxMyw3ICszOTUsNyBAQCBodHRwL3Rl
c3RzL211bHRpcGFydC9tdWx0aXBhcnQtYXN5bmMtaW1hZ2UuaHRtbAogCiBmYXN0L3J1YnkvcnVi
eS1leHBhbnNpb24tY2prLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi1bIFNpZXJyYSsg
XSBjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTIxNzggZmFzdC9yZXBsYWNlZC9y
ZXBsYWNlZC1icmVha2luZy5odG1sIFsgRmFpbHVyZSBdCiAKQEAgLTUyMCwxOSArNTAyLDE5IEBA
IGZhc3QvcmVwYWludC92ZXJ0aWNhbC10ZXh0LXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTU4NTg1IHdlYmdsL3dlYmdsLWJhY2tpbmctc3RvcmUtc2l6ZS11cGRh
dGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI0ODE4NzEyPgot
WyBTaWVycmErIF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQtaHRtbC5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRt
bCBbIFBhc3MgVGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI2Mzk5NTk4PgotWyBTaWVy
cmErIF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJlIF0K
LVsgU2llcnJhKyBdIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24u
aHRtbCBbIEZhaWx1cmUgXQorZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwg
WyBGYWlsdXJlIF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24u
aHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3Vs
dCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5CiAjIHRv
IGhhdmUgcGxhdGZvcm0gc3BlY2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2Vl
biBXSzEgYW5kIFdLMi4KLVsgU2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0
dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQotWyBTaWVycmErIF0gYWNjZXNzaWJpbGl0eS9wYXJl
bnQtZGVsZXRlLmh0bWwgWyBGYWlsdXJlIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0
dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQorYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0
bWwgWyBGYWlsdXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNjQ3ODI5NgotWyBTaWVycmErIF0g
c3ZnL2hpeGllL3RleHQvMDAzLmh0bWwgWyBGYWlsdXJlIF0KK3N2Zy9oaXhpZS90ZXh0LzAwMy5o
dG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTk4OTMgWyBEZWJ1ZyBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2V2ZW50LXJlYWR5c3RhdGVjaGFuZ2UtbG9hZGVk
LmFueS5qcyBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTU0MSwxMyArNTIzLDEzIEBAIHdlYmtpdC5v
cmcvYi8xNjAxMDEgdXNlcnNjcmlwdHMvd2luZG93LW9uZXJyb3ItZm9yLWlzb2xhdGVkLXdvcmxk
LTMuaHRtbCBbIFBhc3MKIHdlYmtpdC5vcmcvYi8xMDU4NzAgWyBEZWJ1ZyBdIHdlYmF1ZGlvL2F1
ZGlvbm9kZS1jb25uZWN0LW9yZGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogIyByZGFyOi8vcHJv
YmxlbS8yNzcyMzcxOAotWyBTaWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvY2hp
bGQtdHJhbnNmb3JtLXdpdGgtYW5jaG9yLXBvaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K2ltcG9ydGVkL2JsaW5rL2NvbXBvc2l0aW5nL2NoaWxkLXRyYW5zZm9ybS13aXRoLWFuY2hvci1w
b2ludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjEwNTYgZ2Ft
ZXBhZCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTYyNTkyIFsgU2llcnJhKyBdIGNzczMvZmls
dGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2MjU5MSBbIFNpZXJyYSsgXSBjc3Mz
L2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtcmVmbGVjdGlvbi1hZGQtYmFj
a2Ryb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYyNTkx
IFsgU2llcnJhKyBdIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1y
ZWZsZWN0aW9uLXZhbHVlLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xNjI1OTIgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13
aXRoLXJlZmxlY3Rpb24uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMTYyNTkxIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZs
ZWN0aW9uLWFkZC1iYWNrZHJvcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xNjI1OTEgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRo
LXJlZmxlY3Rpb24tdmFsdWUtY2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTYxMzYwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL2hpc3RvcnktdHJhdmVyc2FsL3BlcnNpc3RlZC11
c2VyLXN0YXRlLXJlc3RvcmF0aW9uL3Njcm9sbC1yZXN0b3JhdGlvbi1mcmFnbWVudC1zY3JvbGxp
bmctY3Jvc3Mtb3JpZ2luLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC01NzYsNyArNTU4LDcg
QEAgd2Via2l0Lm9yZy9iLzE2NDkzMyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZv
cmVsb2FkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vZml4ZWQtb3ZlcmxhcC1leHRlbnQtcnRsLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1vdmVyZmxvdy5o
dG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNTQ2MTIgWyBTaWVycmErIF0gY29tcG9z
aXRpbmcvcmVwYWludC9maXhlZC1iYWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8xNTQ2MTIgY29tcG9zaXRpbmcvcmVwYWludC9maXhlZC1iYWNrZ3Jv
dW5kLXNjcm9sbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NTU4OSBw
b2ludGVyLWxvY2svbG9jay1sb3N0LW9uLWVzYy1pbi1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0K
IApAQCAtNjM0LDggKzYxNiw2IEBAIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAgXQogCiB3
ZWJraXQub3JnL2IvMTc1MzQ1IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1zY3JvbGxpbmctY3Jh
c2guaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzU1NTQgWyBTaWVycmEg
XSBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1sZWdhY3kuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzQyMTggc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWxpc3Qt
cHJvcGVydHktaW5zdGFuY2VzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NzI4Nzcgc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWJhY2tncm91bmQuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC02NDksMjMgKzYyOSwyMyBAQCB3ZWJraXQu
b3JnL2IvMTc2OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBp
bmcvZXJyb3ItcHJvcGFnYQogd2Via2l0Lm9yZy9iLzE3NTg4NiBzdmcvYW5pbWF0aW9ucy9zbWls
LWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjov
L3Byb2JsZW0vMjkyMDE2OTg+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkNv
cmVHcmFwaGljczogQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YSArIDM3NwotWyBIaWdoU2llcnJhKyBd
IGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtcG90ZW50
aWFsbHktc3Vic2FtcGxlZC1pbWFnZS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9jYW52YXMvd2ViZ2wv
dGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxseS1zdWJzYW1wbGVkLWlt
YWdlLmh0bWwgWyBDcmFzaCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBSRUdSRVNT
SU9OPyAoRm9udFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0qIGFuZCBz
dmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsg
XSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNC1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1cz
Qy1TVkctMS4xL2ZvbnRzLWVsZW0tMDQtYi5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3By
b2JsZW0vMzE4OTM3MTQ+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L211bHRpcGxl
LWNvZGV1bml0LXZlcnRpY2FsLXVwcmlnaHQuaHRtbCBpcyBmYWlsaW5nIG9uIFdLMQotWyBIaWdo
U2llcnJhKyBdIGZhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJpZ2h0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0
aWNhbC11cHJpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2Js
ZW0vMzE4OTUxOTI+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkltYWdlSU8u
ZnJhbWV3b3JrOiBJSU9EaWN0aW9uYXJ5OjpnZXRCb29sRm9yS2V5ICsgMAotWyBIaWdoU2llcnJh
KyBdIGh0dHAvdGVzdHMvbWlzYy9zbG93LWxvYWRpbmctYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsg
U2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMzNTIyNDIwPiBDcmFzaDogTXVsdGlwbGUgTGF5
b3V0IHRlc3QgaW4gZmFzdC9ldmVudHMgYW5kIGZhc3QvZm9ybXMgYW5kIGZhc3QvdGV4dCBhcmUg
Y3Jhc2hpbmcKLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWNvZGUu
aHRtbCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50
LWtleS5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tleWRvd24t
bGVmdHJpZ2h0LWtleXMuaHRtbCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2Zvcm1z
L3RleHRhcmVhLW1heGxlbmd0aC5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3Qv
dGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVu
dHMva2V5Ym9hcmRldmVudC1jb2RlLmh0bWwgWyBDcmFzaCBdCitmYXN0L2V2ZW50cy9rZXlib2Fy
ZGV2ZW50LWtleS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVudHMva2V5ZG93bi1sZWZ0cmlnaHQt
a2V5cy5odG1sIFsgQ3Jhc2ggXQorZmFzdC9mb3Jtcy90ZXh0YXJlYS1tYXhsZW5ndGguaHRtbCBb
IENyYXNoIF0KK2Zhc3QvdGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jh
c2ggXQogCiB3ZWJraXQub3JnL2IvMTc5Nzc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL2ZpcmluZy1ldmVudHMtaHR0cC1uby1jb250ZW50LWxlbmd0aC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIApAQCAtNzMxLDMyICs3MTEsMzIgQEAgd2Via2l0Lm9yZy9iLzE4NzU1NyBbIERl
YnVnIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDA5MS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xODc3MTEgWyBEZWJ1ZyBdIHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEt
Yi5zdmcgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MjYyNTY1Nz4KLVsg
TW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmltYXRpb24u
aHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dy
b3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdl
cy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBd
IGZhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsg
U2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1v
dXRzaWRlLXZpZXdwb3J0Lmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2Rl
Y29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFz
dC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2ph
dmUrIF0gZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0
bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1k
eW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3Qv
aW1hZ2VzL3Nwcml0ZS1zaGVldC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNraXAgXQorZmFzdC9p
bWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBd
CitmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0K
K2Zhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsg
U2tpcCBdCitmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRlLXZpZXdw
b3J0Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1h
Z2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2Uu
aHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxs
LWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5h
bWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL3Nwcml0ZS1z
aGVldC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI2Mjc1
NjI+Ci1bIE1vamF2ZSsgXSBtZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1hdXRvcGxh
eS1ub3QtYWxsb3dlZC1zb3VyY2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gbWVkaWEvdmlk
ZW8tcmVzdHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQuaHRtbCBbIFNraXAg
XQorbWVkaWEvdmlkZW8tcmVzdHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQt
c291cmNlLmh0bWwgWyBTa2lwIF0KK21lZGlhL3ZpZGVvLXJlc3RyaWN0ZWQtaW52aXNpYmxlLWF1
dG9wbGF5LW5vdC1hbGxvd2VkLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI3
MzYyMTM+Ci1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC5odG1s
IFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNo
YWRvdy5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWlu
Y2x1ZGVzLXRyYW5zZm9ybXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZGlzcGxheWxp
c3RzL2xheWVyLWRpc3BheS1saXN0Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGRpc3Bs
YXlsaXN0cy9yZXBsYXktc2tpcC1jbGlwcGVkLXJlY3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxh
eWxpc3RzL2NhbnZhcy1kaXNwbGF5LWxpc3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3Rz
L2V4dGVudC1pbmNsdWRlcy1zaGFkb3cuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2V4
dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLmh0bWwgWyBGYWlsdXJlIF0KK2Rpc3BsYXlsaXN0cy9s
YXllci1kaXNwYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCitkaXNwbGF5bGlzdHMvcmVwbGF5LXNr
aXAtY2xpcHBlZC1yZWN0Lmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDYxMSBj
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1vdmVybGFwLWV4dGVudC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI5MDQ3ODA+Ci1bIE1vamF2ZSsgUmVs
ZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2Rlcml2
ZV9iaXRzX2tleXMvaGtkZi5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQorWyBSZWxlYXNl
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2Jp
dHNfa2V5cy9oa2RmLmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8xODkwODcgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51bWVyaWMtcHJl
Y2lzaW9uLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC03NzIsNyArNzUyLDcgQEAgd2Via2l0
Lm9yZy9iLzE5MTM1NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12
aWV3L3Njcm9sbC1iZWhhdmkKIAogd2Via2l0Lm9yZy9iLzE4OTkwOCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Jlc291cmNlLXRpbWluZy9yZXNvdXJjZV90aW1pbmcud29ya2VyLmh0
bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE4OTc1NiBbIE1vamF2ZSsgXSBjb21wb3Np
dGluZy9maWx0ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2Vz
dG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4OTc1NiBj
b21wb3NpdGluZy9maWx0ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRv
LWFuY2VzdG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTg5NzIzIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXhzbC1yZWRpcmVjdC1CTE9D
S0VELmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC03ODIsNyArNzYyLDcgQEAgd2Via2l0Lm9y
Zy9iLzE5MDgzMiBbIERlYnVnIF0gZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0
ZWQtY29udHJvbHMuaHQKIAogd2Via2l0Lm9yZy9iLzE5MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5
L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLW11bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdp
bi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9q
YXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFtZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4NjQwNiBjb21wb3NpdGluZy9pZnJhbWVzL2Rp
c3BsYXktbm9uZS1zdWJmcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtbG9vcC1jb3VudC5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTAzODMgZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtcG5nLWxvb3AtY291bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC03OTAs
NyArNzcwLDcgQEAgd2Via2l0Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFn
ZS1kaWZmZXJlbnQtZGVzdC1zaXplLmh0bWwgWyBQYXNzIEkKIAogd2Via2l0Lm9yZy9iLzE5MTYz
OSBpbXBvcnRlZC9ibGluay9jb21wb3NpdGluZy9zcXVhc2hpbmcvc3F1YXNoaW5nLWludG8tYW5j
ZXN0b3ItcGFpbnRlZC1sYXllci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Vi
a2l0Lm9yZy9iLzE5MDYyNyBbIE1vamF2ZSsgXSBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGlu
Zy1jbGlwLXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzE5MDYyNyBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgt
Y2hhbmdlLW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTcyMzg0IGZhc3QvaGlkcGkvaGlkcGktbG9uZy1wYWdlLXdpdGgtaW5zZXQtZWxlbWVudC5odG1s
IFsgU2tpcCBdCiAKQEAgLTgyNiwxMCArODA2LDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvcmFuZ2Utc2V0
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS9kaXNwbGF5
LW5vbmUtaW5saW5lLWltZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9w
cm9ibGVtLzQyNjI1NjU3PiBSRUdSRVNTSU9OIChNb2phdmUpOiAxMiBmYXN0L2ltYWdlcyB0ZXN0
cyB0aW1pbmcgb3V0IG9uIFdLMQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVp
Y3MtZHJhdy5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hbmltYXRlZC1o
ZWljcy12ZXJpZnkuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJh
dy5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJpZnkuaHRtbCBb
IFNraXAgXQogCi13ZWJraXQub3JnL2IvMjAwMDAyIFsgTW9qYXZlKyBEZWJ1ZyBdIGltcG9ydGVk
L2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1l
b3V0IF0KK3dlYmtpdC5vcmcvYi8yMDAwMDIgWyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5rL3N0b3Jh
Z2UvaW5kZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0KIAogIyBT
a2lwIElzTG9nZ2VkSW4KIGh0dHAvdGVzdHMvaXMtbG9nZ2VkLWluLyBbIFNraXAgXQpAQCAtODQ5
LDcgKzgyOSw3IEBAIHdlYmtpdC5vcmcvYi8yMDM1MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNpemluZy9keW5hbWljLWF2YWlsCiAjIFN0YWxlLXdoaWxlLXJldmFs
aWRhdGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBbIFNraXAgXQogCi13ZWJraXQub3Jn
L2IvMjA1MzE0IFsgQ2F0YWxpbmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBlZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBdCiAKQEAg
LTk2Myw0ICs5NDMsNCBAQCB3ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1
cnNvci1uby1tb3VzZW1vdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8y
MDk1NjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11
cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3
YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dl
YmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2st
Zm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhY2IxZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1
YWVkZDcxMWFhZTlkLi45ODRhNGQwYzI1NTk1ZjljYjg2ZDA3ZmU4ZjRmYjY4ZGQ0ZDM0MThhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MywyNiArMzMsMTQgQEAgZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUt
aW4tc3ViZnJhbWVzLmh0bWwgWyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZl
LXVwZGF0ZS5odG1sIFsgUGFzcyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rp
b24tbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3MgXQogCi1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Nz
bC9hcHBsZXBheS8gWyBQYXNzIF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkv
QXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3Ns
L2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rl
c3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WMy5odG1sIFsgU2tpcCBdCi1bIFNpZXJy
YSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBTa2lw
IF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUu
aHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBh
eVJlcXVlc3RTaGlwcGluZ0NvbnRhY3RWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBd
IGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdBZGRyZXNzQ2hhbmdlRXZl
bnRFcnJvcnNWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGFjY2Vzc2liaWxpdHkv
bWFjL2FwcGxlLXBheS1sYWJlbHMuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0gaHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hT
aWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNC5odG1sIFsg
U2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb25WNS5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9h
cHBsZS1wYXktc2Vzc2lvbi12NC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3NzbC9hcHBsZXBh
eS8gWyBQYXNzIF0KIAogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9y
dC1yZWN0cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5n
LXZpZXdwb3J0LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0KIAotWyBTaWVycmEr
IF0gaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdCBbIFBhc3MgXQotWyBTaWVycmErIF0gaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJlcXVlc3QgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0IFsgUGFzcyBdCitodHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXlt
ZW50cmVxdWVzdCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXlt
ZW50LXJlcXVlc3QgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9hbGxv
d3BheW1lbnRyZXF1ZXN0LWF0dHJpYnV0ZS1jcm9zcy1vcmlnaW4tYmMtY29udGFpbmVycy5odHRw
cy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvbm8tYXR0cmli
dXRlLWNyb3NzLW9yaWdpbi1iYy1jb250YWluZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJl
cXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9yZW1vdmluZy1hbGxvd3BheW1lbnRyZXF1ZXN0Lmh0
dHBzLnN1Yi5odG1sIFsgU2tpcCBdCkBAIC03MCw3ICs1OCw3IEBAIGFwcGxpY2F0aW9ubWFuaWZl
c3QvIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODcxODMgaHR0cC90ZXN0cy9zZWN1cml0eS9w
YXN0ZWJvYXJkLWZpbGUtdXJsLmh0bWwgWyBQYXNzIF0KIAotWyBNb2phdmUrIF0gZmFzdC9jYW52
YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBQ
YXNzIF0KK2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmln
dXJhdGlvbi5odG1sIFsgUGFzcyBdCiAKIGZhc3QvbWlzYy92YWxpZC1wcmltYXJ5LXNjcmVlbi1k
aXNwbGF5SUQuaHRtbCBbIFBhc3MgXQogCkBAIC03OSwxMSArNjcsMTEgQEAgaHR0cC90ZXN0cy93
ZWJBUElTdGF0aXN0aWNzIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODQ1Njkgc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKLVsgTW9qYXZlKyBdIGZhc3QvZXZlbnRzL2RldGVjdC1jYXBzLWxvY2su
aHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2Nh
cHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1dG8tZmls
bC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3Qv
Zm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUt
dmlzaWJsZS13aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUu
aHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1h
ZnRlci1jYXBzLWxvY2stdG9nZ2xlZC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTk0MTcw
IFsgTW9qYXZlKyBSZWxlYXNlIF0gZmFzdC9yZXBhaW50L3BsYWNlaG9sZGVyLWFmdGVyLWNhcHMt
bG9jay1oaWRkZW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kZXRlY3QtY2Fw
cy1sb2NrLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxv
Y2staW5kaWNhdG9yLXNob3VsZC1iZS12aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZpbGwtc3Ry
b25nLXBhc3N3b3JkLWJ1dHRvbi5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2F1dG8tZmlsbC1i
dXR0b24vY2Fwcy1sb2NrLWluZGljYXRvci1zaG91bGQtbm90LWJlLXZpc2libGUtd2hlbi1hdXRv
LWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRvbi1pcy12aXNpYmxlLmh0bWwgWyBQYXNzIF0KK2Zh
c3QvZm9ybXMvcGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRvZ2dsZWQuaHRtbCBb
IFBhc3MgXQord2Via2l0Lm9yZy9iLzE5NDE3MCBbIFJlbGVhc2UgXSBmYXN0L3JlcGFpbnQvcGxh
Y2Vob2xkZXItYWZ0ZXItY2Fwcy1sb2NrLWhpZGRlbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAog
ZmFzdC9ldmVudHMvaW5hY3RpdmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQYXNzIF0K
IApAQCAtMjIzLDkgKzIxMSw5IEBAIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3Bl
bGxpbmcvbW92ZS1jdXJzb3ItdG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0CiB3ZWJraXQub3Jn
L2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1hZnRlci1h
Y2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtY2FuZGlk
YXRlLWFsbG93cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRp
ZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEw
NTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1oeXBoZW4uaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bWFya2VyLWluY2x1ZGVzLWh5cGhlbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92
ZXJsYXBwaW5nLWxpbmVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBp
bmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xMDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdpdGgtc3Bl
bGxpbmctbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2
MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2Vy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIApAQCAtNDkyLDEzICs0ODAsMTIgQEAgd2Via2l0
Lm9yZy9iLzE0MTA4NSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3MgXQoraHR0
cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zIFsgUGFzcyBdCiAKICMgVGhlIGZvbGxvd2lu
ZyB0ZXN0cyBhcmUgZmxha3kuCiB3ZWJraXQub3JnL2IvMTc5NTU3IGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMvdXBncmFkZS13b3JrZXIuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTY4MDgxIGh0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvYXN5bmMteGhyLW9uZXJyb3IuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3Jn
L2IvMTQ2NDAwIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY2hhcmFjdGVyLXNldC1iYXNp
Yy1zdXBwb3J0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2ODA4MiBbIFNp
ZXJyYSBdIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvaW52YWxpZC1zZWxlY3Rvci5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBXZWJLaXQxLW9ubHkgZmFpbHVyZS4KIHdl
YmtpdC5vcmcvYi8xMDM4NTcgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLWNoYW5nZS5odG1sIFsg
UGFzcyBdCkBAIC01MTAsNTYgKzQ5Nyw1NiBAQCBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3Bs
dWdpbnMvZ2V0LXVybC1ub3RpZnktb24tcmVtb3ZhbC5odG1sIFsgUGFzcyBUaW1lb3V0CiBpbXBv
cnRlZC9ibGluay9mYXN0L211bHRpY29sL25ld211bHRpY29sL211bHRpY29sLWJlY29tZXMtcmVn
dWxhci1ibG9jay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL2JsaW5r
L2Zhc3QvdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdXBkYXRlLWZyYW1lLW92ZXJmbG93Lmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTU1NzU3IFsgU2llcnJhKyBd
IG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTU1NzU3IG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTc1ODkgZmFzdC90ZXh0LWF1
dG9zaXppbmcvaW9zL3RleHQtYXV0b3NpemluZy1hZnRlci1iYWNrLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogCiAjIFBpUCB0ZXN0cyBhcmUgb25seSBlbmFibGVkIGZvciBTaWVycmEgV2ViS2l0Mi4K
ICMgcmRhcjovL3Byb2JsZW0vMjc1NzQzMDMKLVsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL3Bp
Y3R1cmUtaW4tcGljdHVyZS5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTcwNjIwIFsgU2ll
cnJhKyBdIG1lZGlhL2NvbnRyb2xzL3BpcC1wbGFjZWhvbGRlci13aXRob3V0LXZpZGVvLWNvbnRy
b2xzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotWyBTaWVycmErIF0gbWVkaWEvZWxlbWVudC1jb250
YWluaW5nLXBpcC12aWRlby1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgVGltZW91
dCBdCi13ZWJraXQub3JnL2IvMTcyOTk4IFsgU2llcnJhKyBdIG1lZGlhL2Z1bGxzY3JlZW4tYXBp
LWVuYWJsZWQtbWVkaWEtd2l0aC1wcmVzZW50YXRpb24tbW9kZS5odG1sIFsgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTczMTk5IFsgU2llcnJhKyBdIG1lZGlhL25hdmlnYXRlLXdpdGgtcGlwLXNo
b3VsZC1ub3QtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBtZWRpYS9w
aXAtdmlkZW8tZ29pbmctaW50by1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBd
IG1lZGlhL3BpY3R1cmUtaW4tcGljdHVyZSBbIFBhc3MgXQorbWVkaWEvY29udHJvbHMvcGljdHVy
ZS1pbi1waWN0dXJlLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzA2MjAgbWVkaWEvY29u
dHJvbHMvcGlwLXBsYWNlaG9sZGVyLXdpdGhvdXQtdmlkZW8tY29udHJvbHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCittZWRpYS9lbGVtZW50LWNvbnRhaW5pbmctcGlwLXZpZGVvLWdvaW5nLWludG8t
ZnVsbHNjcmVlbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xNzI5OTggbWVk
aWEvZnVsbHNjcmVlbi1hcGktZW5hYmxlZC1tZWRpYS13aXRoLXByZXNlbnRhdGlvbi1tb2RlLmh0
bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNzMxOTkgbWVkaWEvbmF2aWdhdGUtd2l0aC1w
aXAtc2hvdWxkLW5vdC1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK21lZGlhL3BpcC12aWRl
by1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgXQorbWVkaWEvcGljdHVyZS1pbi1w
aWN0dXJlIFsgUGFzcyBdCiAKICMgUlRMIFNjcm9sbGJhcnMgYXJlIGVuYWJsZWQgb24gU2llcnJh
IFdlYktpdDIuCi13ZWJraXQub3JnL2IvMTc5NDU1IFsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmEr
IF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtc2ltcGxlLmh0bWwgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWNvbnRlbnRz
Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LW92ZXJmbG93LWRpci1ydGwuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctcGFkZGluZy5odG1sIFsgUGFzcyBdCi1bIFNpZXJy
YSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1zaW1wbGUuaHRtbCBb
IFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZs
b3cuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtb3ZlcmZsb3ctZWxlbWVudEZyb21Qb2ludC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wb3NpdGlvbi1hYnNvbHV0ZS5o
dG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1v
dmVyZmxvdy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsg
XSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsg
UGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlv
bi1maXhlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsg
XSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi5odG1sIFsgUGFz
cyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1pZnJhbWUtb2Zm
c2V0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWVsZW1lbnRGcm9tUG9pbnQtc3RhdGljLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZh
c3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlmcmFtZS1zY3JvbGxlZC5odG1sIFsgUGFzcyBd
Ci1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmluZy5o
dG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1s
aXN0Ym94LXNjcm9sbC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9y
dGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJh
KyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0
bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxp
c3Rib3gtc2ltcGxlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0
bC1zY3JvbGxiYXJzLWxpc3Rib3guaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3Jv
bGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb25lZC1pbnRlcnNlY3Qtc2Nyb2xsYmFycy5odG1s
IFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRl
cm5hdGUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC5o
dG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1h
bHRlcm5hdGUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVu
dC0yLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNjI2MzggWyBTaWVycmErIF0gZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRv
ZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0
aW9uLXByb3BlcnR5Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzk0NTUgZmFzdC9zY3Jv
bGxpbmcvcnRsLXNjcm9sbGJhcnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1zaW1wbGUuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3Jv
bGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctY29udGVudHMuaHRtbCBbIFBhc3MgXQorZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctZGlyLXJ0bC5odG1sIFsgUGFzcyBd
CitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBsZS5odG1s
IFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy5odG1sIFsg
UGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1lbGVtZW50RnJv
bVBvaW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJm
bG93LXBvc2l0aW9uLWFic29sdXRlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLW92ZXJmbG93LXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRlLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWZpeGVkLmh0bWwg
WyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLXNj
cm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQt
c2VsZWN0aW9uLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlm
cmFtZS1vZmZzZXQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
ZWxlbWVudEZyb21Qb2ludC1zdGF0aWMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtaWZyYW1lLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbCBbIFBhc3MgXQorZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtcmlnaHQuaHRtbCBbIFBh
c3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUuaHRtbCBb
IFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sIFsgUGFz
cyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWludGVyc2VjdC1z
Y3JvbGxiYXJzLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFs
dGVybmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1i
b2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50LTIuaHRtbCBb
IFBhc3MgXQord2Via2l0Lm9yZy9iLzE2MjYzOCBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFy
cy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJh
ci1wbGFjZW1lbnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGlu
Zy9ydGwtc2Nyb2xsYmFycy1hbmltYXRpb24tcHJvcGVydHkuaHRtbCBbIFBhc3MgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8yNTA2MzEyOD4KLVsgU2llcnJhKyBdIG1lZGlhL21lZGlhLWNvbnRyb2xz
LWRyYWctdGltZWxpbmUtc2V0LWNvbnRyb2xzLXByb3BlcnR5Lmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQorbWVkaWEvbWVkaWEtY29udHJvbHMtZHJhZy10aW1lbGluZS1zZXQtY29udHJvbHMtcHJvcGVy
dHkuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgSGl0dGluZyAiVGhlIGNlcnRpZmljYXRlIGZv
ciB0aGlzIHNlcnZlciBpcyBpbnZhbGlkIiBsb2FkaW5nIGVycm9yIChub3QgaGFwcGVuaW5nIGlu
IFdLMSkKLXdlYmtpdC5vcmcvYi8xNjA0NDUgWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRl
LWluc2VjdXJlLWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MTYwNDQ1IFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1t
YWluLWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjA0NDUgaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0
cy91cGdyYWRlLWluc2VjdXJlLWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTYwNDQ1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1tYWlu
LWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NzYwNyBbIERlYnVnIF0g
aHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2Jsb2Itc2NyaXB0LXdpdGgtY3Jvc3MtZG9tYWlu
LWltcG9ydGVkLXNjcmlwdHMuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKQEAgLTU4Miw4ICs1Njks
NiBAQCB3ZWJraXQub3JnL2IvMTYyMDgxIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1s
aW5rLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2MDAxNyBqcy9yZWdyZXNzLTEz
OTU0OC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE2MjUyNCBbIFNpZXJy
YSBSZWxlYXNlIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVkaXJl
Y3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNjE5MjYgc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAKQEAgLTU5OSw4
ICs1ODQsNiBAQCB3ZWJraXQub3JnL2IvMTYyOTc1IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNo
ZS9tZW1vcnktY2FjaGUtcmV2YWxpZGF0aW9uLXVwZGF0ZQogCiB3ZWJraXQub3JnL2IvMTYxNjUz
IFsgRGVidWcgXSBzdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTYzNDUzIFsgU2llcnJhIFJlbGVhc2UgXSBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVl
c3RzL2Jhc2ljLXVwZ3JhZGUtY29ycy5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Vi
a2l0Lm9yZy9iLzE2MzcwMiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3RhdGUuaHRt
bCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTY0ODcwIFsgRGVidWcgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJjdXJzb3JfaXRlcmF0aW5nLmh0bSBb
IFBhc3MgRmFpbHVyZSBdCkBAIC02MTEsOCArNTk0LDYgQEAgd2Via2l0Lm9yZy9iLzE2NTM1MiBm
YXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1jb250ZW50cy5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KIAogd2Via2l0Lm9yZy9iLzE2NzY1MyBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Js
b2NrLWV2ZXJ5dGhpbmctdW5sZXNzLWRvbWFpbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Vi
a2l0Lm9yZy9iLzE2NzIwNiBbIFNpZXJyYSBSZWxlYXNlIF0gbWF0aG1sL29wZW50eXBlL2xhcmdl
LW9wZXJhdG9ycy1kaXNwbGF5c3R5bGUtZHluYW1pYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLQogd2Via2l0Lm9yZy9iLzE2ODA2NSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9oZWFwLXNu
YXBzaG90Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNjgy
MzUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvdGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLWEtZWxlbWVudC9hLWRvd25sb2FkLWNsaWNrLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtNjM4LDE2ICs2MTksMTAgQEAgd2Via2l0Lm9yZy9iLzE3
MTc2MyBjb21wb3NpdGluZy90aWxpbmcvbm9uLWFjdGl2ZS13aW5kb3ctdGlsZXMtc2l6ZS5odG1s
IFsgUGFzcwogCiB3ZWJraXQub3JnL2IvMTcxODM3IFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCi13ZWJraXQub3JnL2IvMTcxOTM5IFsgU2llcnJhIFJlbGVhc2UgXSBtZWRpYS90cmFjay90
cmFjay1jdWUtcmVuZGVyaW5nLW9uLXJlc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQotd2Vi
a2l0Lm9yZy9iLzE3MTk0NyBbIFNpZXJyYSBSZWxlYXNlIF0gdHJhbnNpdGlvbnMvZXh0cmEtdHJh
bnNpdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MDY5OSBbIFJl
bGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90
aW1lcnMvbmVnYXRpdmUtc2V0dGltZW91dC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE2ODkzNyAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtaWZyYW1l
LWxhdGNoZWQtbWFpbmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTcyMDU0IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUt
c2l6ZS1pZnJhbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNzI0NTQg
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8xNzMxODggZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtZ3JhbnQt
cGVyc2lzdGVuY3kzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtNjYxLDEwICs2MzYsMTAgQEAg
d2Via2l0Lm9yZy9iLzE4NzY0OSBlZGl0aW5nL3NlbGVjdGlvbi91cGRhdGUtc2VsZWN0aW9uLWJ5
LXN0eWxlLWNoYW5nZS5odG1sIFsgUGEKICMgVG91Y2ggZXZlbnRzIGFyZSBub3QgYXZhaWxhYmxl
IG9uIG9wZW4gc291cmNlIGJvdHMsIHRodXMgb25seSB0ZXN0ZWQgb24gTWFjLgogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24taW4tY3Jvc3Mtb3JpZ2lu
LXN1Yi1mcmFtZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzLyBb
IFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1jcm9zcy1zaXRlLXNob3VsZC1ub3QtaGF2
ZS1hY2Nlc3MtZGF0YWJhc2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi1bIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2Vy
dmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1kYXRh
YmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvIFsgUGFzcyBdCito
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRoZW4tbmF2
aWdhdGUtY3Jvc3Mtc2l0ZS1zaG91bGQtbm90LWhhdmUtYWNjZXNzLWRhdGFiYXNlLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQoraHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQt
ZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLWRhdGFi
YXNlLmh0bWwgWyBTa2lwIF0KIAogIyBFbmFibGUgYWdhaW4gd2hlbiBmaXhpbmcgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMC4KIGh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi10aGlyZC1wYXJ0eS1oYXMtY29va2ll
cy1lcGhlbWVyYWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQpAQCAtNjkzLDggKzY2OCw2IEBAIHdl
YmtpdC5vcmcvYi8xNzM2NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9o
dHRwLWNhY2hlL2ludmFsaWRhdGUuCiAKIHdlYmtpdC5vcmcvYi8xNzM1MDAgaHR0cC90ZXN0cy9s
b2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCi13ZWJraXQub3JnL2IvMTcyODI5IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9yZXBsYWNlc3RhdGUtc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9y
Zy9iLzE3NTc4MSBzdmcvaW4taHRtbC9ieS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xNzYwNTQgbWVkaWEvdmlkZW8tY29udHJvbHMtaW4tbWVkaWEtZG9j
dW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC03MTMsMzAgKzY4NiwzMCBAQCB3ZWJraXQu
b3JnL2IvMTg1OTk0IGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctZmFtaWx5
Lmh0bWwgWyBQYXNzIEltYQogd2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNlci1pbnN0
YWxsZWQtZm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQogCiAjIFJlZW5hYmxlZCB0ZXN0cyBmb3Igc3VwcG9ydGVkIHBsYXRmb3Jtcwot
WyBNb2phdmUrIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJh
Y3Rlci5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQt
Zm9udHMvZXh0ZW5kZWQtY2hhcmFjdGVyLXdpdGgtdXNlci1mb250Lmh0bWwgWyBQYXNzIF0KK2Zh
c3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9leHRlbmRlZC1jaGFyYWN0ZXIuaHRtbCBbIFBh
c3MgXQorZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci13
aXRoLXVzZXItZm9udC5odG1sIFsgUGFzcyBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1MDEwMzA3
PgotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3Iu
aHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvblYzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMvc3Ns
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0
dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY1Lmh0bWwgWyBQYXNzIF0KLVsg
SGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RTaGlw
cGluZ0NvbnRhY3RWMy5odHRwcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVudEVycm9y
c1YzLmh0dHBzLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBhY2Nlc3NpYmlsaXR5L21h
Yy9hcHBsZS1wYXktbGFiZWxzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGFjY2Vzc2liaWxp
dHkvbWFjL2FwcGxlLXBheS1zZXNzaW9uLXY0Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvc3Ns
L2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uVjMuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uVjQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlSZXF1ZXN0U2hpcHBpbmdDb250YWN0VjMuaHR0cHMuaHRtbCBbIFBhc3Mg
XQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VF
dmVudEVycm9yc1YzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2FwcGxl
LXBheS1sYWJlbHMuaHRtbCBbIFBhc3MgXQorYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LXNl
c3Npb24tdjQuaHRtbCBbIFBhc3MgXQogIyA8cmRhcjovL3Byb2JsZW0vMzE2MzQ0NTE+Ci1bIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0
aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJy
YSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0
bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhp
cmQtcGFydHktY29udGV4dC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsg
UGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2RvLW5vdC1yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFBhc3MgXQotWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1v
cnktYW5kLXBlcnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNp
c3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgUGFzcyBd
Ci1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlw
LXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwgWyBQYXNz
IF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3Ry
aXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nh
cC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2ll
cy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2lu
Zy1pbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0bWwgWyBQYXNzIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBl
cnNpc3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJk
LXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0
cy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNh
Y2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAKICMgVGhl
IFNhbWVTaXRlIGNvb2tpZSBBUEkgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQ2F0YWxpbmEg
YW5kIGFib3ZlLgogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFBhc3MgXQpAQCAt
NzQ0LDkgKzcxNyw2IEBAIHdlYmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXItaW5zdGFs
bGVkLWZvbnRzL3NoYWRvdy1wb3N0c2NyaXB0LWZhbWlseS5odG1sCiAjIFNraXBwZWQgaW4gZ2Vu
ZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhleSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdL
Mi4KIG1lZGlhL2RlYWN0aXZhdGUtYXVkaW8tc2Vzc2lvbi5odG1sIFsgUGFzcyBdCiAKLSMgTGlu
ayBwcmVjb25uZWN0IGlzIGRpc2FibGVkIG9uIHByZS1IaWdoIFNpZXJyYSBiZWNhdXNlIHRoZSBD
Rk5ldHdvcmsgU1BJIGlzIG1pc3NpbmcuCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvcHJlY29ubmVj
dCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTc3Njg3IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2Utc2l6ZXMtbWVtb3J5LWNhY2hlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTc4NDcyIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtcmVzb3VyY2UtaGFuZGxlZC1rZXlkb3duLmh0bWwgWyBTa2lwIF0KQEAgLTc1NCwx
MCArNzI0LDYgQEAgd2Via2l0Lm9yZy9iLzE3ODQ3MiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXMKIAogd2Via2l0Lm9yZy9iLzE3Njg4
MSBwbHVnaW5zL2pzLWZyb20tZGVzdHJveS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzE3ODU1MyBbIEhpZ2hTaWVycmEgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9kb20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhl
LWlucHV0LXN0cmVhbS8wMTEuaHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTY1NjIwIFsg
U2llcnJhIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVxdWVzdC1o
ZWFkZXJzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTc5NzczIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L3NlcnZpY2V3b3JrZXIt
aW50ZXJjZXB0ZWQuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NzYwNzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5l
Y3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTc5Miw5
ICs3NTgsNyBAQCB3ZWJraXQub3JnL2IvMTgwOTgyIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZQogCiB3ZWJraXQub3JnL2IvMTgyMTc2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2FwcGNhY2hlLW9yZGVyaW5nLW1haW4uaHR0cHMuaHRtbCBbIFNraXAgXQogCi13ZWJr
aXQub3JnL2IvMTgzODY5IFsgSGlnaFNpZXJyYSsgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2Vlay1iYWNrd2FyZC1zdXBwb3J0L3NlZWstYmFja3dhcmQtc3VwcG9ydC5odG1sIFsgUGFz
cyBGYWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzE4Mzg2MCBbIFNpZXJyYSBSZWxlYXNl
IF0gaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3RoaXJkLXBhcnR5LXJlZ2lzdHJhdGlvbi5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xODM4NjkgbWVkaWEvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL3NlZWstYmFja3dhcmQtc3VwcG9ydC9zZWVrLWJhY2t3YXJkLXN1cHBvcnQuaHRt
bCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xODQyNDUgaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY2FjaGUtYXBpLmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCkBAIC04NDUsMTcgKzgwOSwxNSBAQCBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAg
XQogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxv
Y2FsLXNpbGVudC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogCi0j
IE5GQyBzdXBwb3J0IHJlcXVpcmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBI
aWdoU2llcnJhIGFuZCBNb2phdmUuCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2Vi
YXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEg
TW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5o
dHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tp
cCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCisjIE5GQyBzdXBw
b3J0IHJlcXVpcmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBNb2phdmUuCitb
IE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbCBb
IFNraXAgXQorWyBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIF0gaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5o
dHRwcy5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQorWyBNb2ph
dmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
bmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE4Mzg3OCBtZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC11cC1jbGljay1vdmVy
LW1lZGlhLWRvZXMtbm90LWRpbWlzcy1tZWRpYS1jb250cm9scy13aGVuLW1lZGlhLWlzLXBsYXlp
bmcuaHRtbCBbIFBhc3MgVGltZW91dCBdIAogCi13ZWJraXQub3JnL2IvMTkxNjU4IFsgU2llcnJh
IFJlbGVhc2UgXSBmYXN0L2xheWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4tYWRkZWQt
YWZ0ZXItdHJhbnNmb3JtLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQu
b3JnL2IvMTk0ODI2IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtYmxv
Y2stdG9wLWxldmVsLW5hdmlnYXRpb24tcmVkaXJlY3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
IHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1l
bGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtODkwLDE2ICs4NTIsMTYgQEAgd2Via2l0
Lm9yZy9iLzE5ODY2MyBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQt
YWNjZXNzLXRoZW4tbmF2aWcKIAogd2Via2l0Lm9yZy9iLzE3NjAzMCBbIERlYnVnIF0gaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9iamVjdC10b3N0cmluZy1jaGVjay5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5ODkyMSBbIE1vamF2ZSsgXSB3ZWJn
cHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJp
cC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5OTY1MSBb
IE1vamF2ZSBEZWJ1ZyBdIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xv
dyBdCiAKLXdlYmtpdC5vcmcvYi8xOTkwODkgWyBNb2phdmUrIERlYnVnIF0gcGx1Z2lucy93aW5k
b3ctb3Blbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTk5MDg5IFsgRGVidWcgXSBwbHVn
aW5zL3dpbmRvdy1vcGVuLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNTY1MDYw
NjM+IExheW91dCBUZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIGlzIGEgZmxha3kg
ZmFpbHVyZSAoMjAzMjU2KQogd2Via2l0Lm9yZy9iLzIwMzI1NiBbIERlYnVnIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVj
dGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1
MzAxIFsgTW9qYXZlKyBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJn
cHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1MzAxIGluc3BlY3Rvci9j
YW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8yMDU4MDggZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdW5pY29kZS1iaWRp
LW90aGVyLW5ldXRyYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC0xMDc0LDQgKzEwMzYs
NCBAQCB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5NjcyIGh0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4OCBtZWRpYS9t
b2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBwb3J0LWNs
aWNrLmh0bWwgWyBQYXNzIENyYXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJr
aXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci1zdXBw
b3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTEwMTExMTMyYzhlYWRlYjgx
MGMwMDA2YWZjYjcxYmFjNmU1ZGQ0Li40MDgwNWUxNGQwODM5ODkzMWRjNjk3NDExYWVlMWI0ODli
NTM3ZDliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MzQsOCArMzQsNyBAQCBmYXN0L2V2ZW50cy9kby1ub3QtZHJhZy1hbmQtZHJvcC1kYXRhLWRldGVj
dG9ycy1saW5rLmh0bWwgWyBQYXNzIF0KIAogaHR0cC90ZXN0cy9nemlwLWNvbnRlbnQtZW5jb2Rp
bmcgWyBQYXNzIF0KIAotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvZ3ppcC1jb250ZW50LXR5cGUtbm8tY29udGVudC1lbmNvZGluZy5odG1sIFsgRmFpbHVy
ZSBdCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2d6aXAtY29udGVudC10
eXBlLW5vLWNvbnRlbnQtZW5jb2RpbmcuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9nemlwLWNvbnRlbnQtdHlwZS1uby1jb250ZW50LWVuY29kaW5nLmh0bWwgWyBQYXNz
IF0KIAogZmFzdC90ZXh0L21hYyBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MTk2NCBmYXN0L3Rl
eHQvbWFjL3NlbGVjdC1jaGFyYWN0ZXItYmVmb3JlLXplcm8td2lkdGgtam9pbmVyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0OCw5ICsxNDcsNiBAQCBmYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWljZS5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLW1lZGlhLXNldHVwLWNhbGxiYWNrcy1zaW5nbGUtZGlhbG9nLmh0bWwgWyBT
a2lwIF0KIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMuaHRtbCBbIFNr
aXAgXQogCi1bIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctSUNF
Q2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBp
bnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5o
dG1sIFsgU2tpcCBdCi0KICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVidWcgXSBmYXN0L2ltYWdl
cy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIApAQCAtNzY2LDcgKzc2Miw3
IEBAIHdlYmtpdC5vcmcvYi8xMzE4NTUgbWVkaWEvZXZlbnQtYXR0cmlidXRlcy5odG1sIFsgUGFz
cyBGYWlsdXJlIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzEzMzM2MyBtZWRpYS92aWRlby1ydGwu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTMzNjg2IG1lZGlh
L3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xMzUwNzEgbWVkaWEvdmlkZW8tc2Vlay13aXRoLW5lZ2F0aXZl
LXBsYXliYWNrLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzEzNTE2MCBbIFNp
ZXJyYSsgXSBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN1YnRpdGxlcy10b28tbGFyZ2UuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEzNTE2MCBtZWRpYS90cmFjay90cmFjay1pbi1i
YW5kLXN1YnRpdGxlcy10b28tbGFyZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEz
NTE2MCBtZWRpYS90cmFjay90cmFjay1sb25nLXdvcmQtY29udGFpbmVyLXNpemluZy5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTM3MzExIG1lZGlhL3ZpZGVvLWZ1bGxzY3JlZW4tb25s
eS1wbGF5YmFjay5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KIHdlYmtpdC5vcmcvYi8xMzk3
ODkgbWVkaWEvbWVkaWEtY29udHJvbHMtdGltZWxpbmUtdXBkYXRlcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KQEAgLTg1NCw3ICs4NTAsNyBAQCB3ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xMTYyNjYgbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmcuaHRt
bCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTYzMjMxIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRy
b2xzL2FpcnBsYXktcGlja2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE2
MzIzMSBtZWRpYS9jb250cm9scy9haXJwbGF5LXBpY2tlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAogIyAtLS0gRW5kIG1lZGlhIHRlc3RzIC0tLQogd2Via2l0Lm9yZy9iLzEzNjk5NCBodHRwL3Rl
c3RzL21lZGlhL2hscy92aWRlby1jb29raWUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTAxMyw3ICsx
MDA5LDYgQEAgd2Via2l0Lm9yZy9iLzE0ODYzNiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9yLWR5bmFt
aWMtc3BlY2lmaWNpdHkuaHRtbCBbIFBhc3MgVGltZW8KIHdlYmtpdC5vcmcvYi8xNDg2MzYgaW5z
cGVjdG9yL2Nzcy9zZWxlY3Rvci1zcGVjaWZpY2l0eS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdl
YmtpdC5vcmcvYi8xNTg3NDIgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1pbi1j
b25zdHJ1Y3Rvci1iZWZvcmUtc3VwZXIuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3Jn
L2IvMTYzNjA0IGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE2ODMzOCBbIFNpZXJyYSBdIGluc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1kZXRhY2guaHRtbCBbIFBhc3MgVGltZW91dCBd
CiB3ZWJraXQub3JnL2IvMTY1NzcyIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlv
bi1sb2cuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTYxMzg3IGluc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi13aXRoLWV4Y2VwdGlvbi5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjQyOTMgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LXNjb3BlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTA1OSw3ICsxMDU0
LDcgQEAgd2Via2l0Lm9yZy9iLzE0OTEyOCBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAjIFRvdWNoIGV2ZW50cyBhcmUgbm90IGVuYWJsZWQgb24gTWFj
CiB3ZWJraXQub3JnL2IvMTQ5NTkyIGZhc3Qvc2hhZG93LWRvbS90b3VjaC1ldmVudC1pb3MuaHRt
bCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTQ5ODE5IFsgRGVidWcgU2llcnJhKyBdIGNvbXBv
c2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBDcmFzaCBdCit3ZWJraXQub3Jn
L2IvMTQ5ODE5IFsgRGVidWcgXSBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbCBb
IFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMTY4OTUzIFsgUmVsZWFzZSBdIGNvbXBvc2l0
aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTA5Niwy
MSArMTA5MSwyMSBAQCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3Rpb24tZWxlbWVudC10YWJiaW5n
LXRvLWxpbmsuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTI1MDYgd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTU0NzA5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9j
cmFzaC1jb21wbGV4LXRleHQtc3Vycm9nYXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzE1NDcwOSBmYXN0L3RleHQvY3Jhc2gtY29tcGxleC10ZXh0LXN1cnJvZ2F0ZS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NTA5MiBqcy9hcnJheWJ1ZmZlci13
cmFwcGVycy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE1NTE0MCBqcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xODcxMDMganMvZXJyb3Itc2hvdWxkLW5vdC1zdHJvbmctcmVmZXJlbmNl
LWdsb2JhbC1vYmplY3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9y
Zy9iLzE1NTUwNSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzE1NTUwNSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQogCiB3ZWJraXQu
b3JnL2IvMTU0Njg4IGluc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUtY29udHJvbGxlci5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE1NjExMiBbIFNpZXJyYSsgXSBtZWRp
YS9hdWRpby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTU2MTEyIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTYxMTIgWyBTaWVycmErIF0gbWVkaWEvY29udHJv
bHMtd2l0aG91dC1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1
NjExMiBtZWRpYS9hdWRpby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTU2MTEyIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTYxMTIgbWVkaWEvY29udHJvbHMtd2l0aG91dC1wcmVs
b2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU2MzUxIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0LXByaXZhdGUuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCiAKQEAgLTExMjYsNDQgKzExMjEsNDQgQEAgd2Via2l0Lm9yZy9iLzE1ODEwMSBp
bXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMvZ2V0LXVybC1ub3RpZnktb24tcmVtb3Zh
bC4KIHdlYmtpdC5vcmcvYi8xNTg1MzQgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2R5bmFtaWMtYmFj
a2Ryb3AtZmlsdGVyLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBU
aGVzZSB0ZXN0cyBoYXJkY29kZSBwbGF0Zm9ybS1zcGVjaWZpYyBmb250IGFsaWFzZXMuCi13ZWJr
aXQub3JnL2IvMTU4NjQ5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9jaGluZXNlLWZvbnQtbmFtZS1h
bGlhc2VzLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1ODY0OSBm
YXN0L3RleHQvY2hpbmVzZS1mb250LW5hbWUtYWxpYXNlcy0yLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1ODg4OSBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9u
LWtiLW9yLWF4LWV2ZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKLVsgU2llcnJh
KyBdIGZhc3QvY3NzL2FwcGVhcmFuY2UtYXBwbGUtcGF5LWJ1dHRvbi5odG1sIFsgUGFzcyBdCitm
YXN0L2Nzcy9hcHBlYXJhbmNlLWFwcGxlLXBheS1idXR0b24uaHRtbCBbIFBhc3MgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8yMzUwMDMyNz4gc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJs
ZS5odG1sCi1bIFNpZXJyYSsgXSBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQorc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjM1MDQ3NDk+IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gZmFpbGlu
ZwotWyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvcmVzcG9u
c2UtbWV0aG9kLmh0bSBbIFBhc3MgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9yZXNwb25zZS1tZXRob2QuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRh
cjovL3Byb2JsZW0vMjM1MDU1ODI+IEZhaWxzIG9uIGlNYWMxMCwxIGFuZCBpTWFjMTEsMQotWyBT
aWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5n
RW5hYmxlZC1yZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFNpZXJyYSBzdXBwb3J0
cyB0cnVlIGZvbnQgZmVhdHVyZSBjb3ZlcmFnZSBxdWVyaWVzLiBXZSB1c2UgdGhlIC1jb3ZlcmFn
ZSB2ZXJzaW9ucyBvZiB0aGVzZSB0ZXN0cyBpbnN0ZWFkLgotWyBTaWVycmErIF0gY3NzMy9mb250
LXZhcmlhbnQtc21hbGwtY2Fwcy1zeW50aGVzaXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
WyBTaWVycmErIF0gY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhl
c2lzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBldGl0ZS1j
YXBzLXN5bnRoZXNpcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzI1Mjc5MTg5PiBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBpcyBmbGFreQotWyBTaWVy
cmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlk
ZW8taW4tbWFpbi1mcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvc2VjdXJp
dHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1NzgwMDM1PiBDU1AgZG9lcyBu
b3QgaWdub3JlIHBhdGhzIGZvciBtZWRpYSByZWRpcmVjdHMKLVsgU2llcnJhKyBdIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQy
Lmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93
ZWQyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KIAogIyByZGFyOi8vcHJv
YmxlbS8yNjk1MjYyNwotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9w
LWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tYWRkLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2Jh
Y2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24uaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmls
dGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdp
dGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNzE0MTI5MQotWyBTaWVycmErIF0gZWRpdGluZy9z
ZWxlY3Rpb24vdHJpcGxlLWNsaWNrLWluLXByZS5odG1sIFsgRmFpbHVyZSBdCitlZGl0aW5nL3Nl
bGVjdGlvbi90cmlwbGUtY2xpY2staW4tcHJlLmh0bWwgWyBGYWlsdXJlIF0KIAogIyByZGFyOi8v
cHJvYmxlbS8zMTI0MzgyNAogd2Via2l0Lm9yZy9iLzE1ODc0NyBtZWRpYS9yZXN0b3JlLWZyb20t
cGFnZS1jYWNoZS5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAogIyBTZWUgYWxzbyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDk0Ci13ZWJraXQub3JnL2Iv
MTUxMjg3IFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL2lubGluZS1lbGVtZW50cy1kcm9wb2Zm
LW9yZGVyLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTEyODcgbWVkaWEvY29udHJv
bHMvaW5saW5lLWVsZW1lbnRzLWRyb3BvZmYtb3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTU4NTAwIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLXByaXZhdGUu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTExNzIsMjUgKzExNjcsMjUgQEAgd2Via2l0Lm9y
Zy9iLzE2MzEyMiBpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWFm
dGVyLWRlbGV0aW9uLmgKIHdlYmtpdC5vcmcvYi8xMjgzMTIgbWVkaWEvdmlkZW8tbG9hZC1wcmVs
b2FkLW1ldGFkYXRhLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9ibGVtLzI3
NDc1MTYyCi1bIFNpZXJyYSsgXSBjb21wb3NpdGluZy92aWRlby9wb3N0ZXIuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFz
dC90ZXh0L2Vtb2ppLW51bS1nbHlwaHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1
NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItMy5odG1sIFsgUGFzcyBdCi13
ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi00
Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0
L2Vtb2ppLWdlbmRlci0yLTUuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNp
ZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNi5odG1sIFsgUGFzcyBdCi13ZWJraXQu
b3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi03Lmh0bWwg
WyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2pp
LWdlbmRlci0yLTguaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsg
XSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOS5odG1sIFsgUGFzcyBdCi0KLXdlYmtpdC5vcmcv
Yi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTMuaHRtbCBb
IFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamkt
Z2VuZGVyLWZlMGYtNC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJh
KyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi01Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5v
cmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTYuaHRt
bCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1v
amktZ2VuZGVyLWZlMGYtNy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2ll
cnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi04Lmh0bWwgWyBQYXNzIF0KLXdlYmtp
dC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTku
aHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQv
ZW1vamktZ2VuZGVyLmh0bWwgWyBQYXNzIF0KK2NvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3Rl
eHQvZW1vamktbnVtLWdseXBocy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZh
c3QvdGV4dC9lbW9qaS1nZW5kZXItMi0zLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3
NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9i
LzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNS5odG1sIFsgUGFzcyBdCit3ZWJraXQu
b3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi02Lmh0bWwgWyBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTcuaHRtbCBbIFBhc3Mg
XQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOC5odG1sIFsg
UGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi05Lmh0
bWwgWyBQYXNzIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVy
LWZlMGYtMy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItZmUwZi00Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90
ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1
NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtNi5odG1sIFsgUGFzcyBdCit3ZWJraXQub3Jn
L2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi03Lmh0bWwgWyBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTguaHRtbCBbIFBh
c3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtOS5o
dG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIu
aHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTYxMTQ0IGh0dHAvdGVzdHMvbWVkaWEvaGxz
L2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLW1lbnUuaHRtbCBbIFNraXAgXQogCkBA
IC0xMTk4LDE4ICsxMTkzLDE0IEBAIHdlYmtpdC5vcmcvYi8xNjE4ODMgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUHJvY2Vzc2luZ0luc3RydWN0CiAKIHdlYmtpdC5v
cmcvYi8xNjIzMDggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtZHVyYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcv
Yi8xNjI1MjMgWyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xNjI1MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9y
Zy9iLzE2MjYyNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1saXZlc2Vla2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8xNjI2NDcgWyBTaWVycmErIF0gaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmFib3J0
LXJlc3BvbnNlLWdldHRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYy
NjQ3IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25hYm9ydC1yZXNwb25zZS1nZXR0ZXJzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYyODMwIFsgRGVidWcgXSBmYXN0
L2V2ZW50cy90YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAot
IyBWYXJpYXRpb24gZm9udHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBlYXJsaWVyIHRoYW4gSGlnaCBT
aWVycmEuCi1bIFNpZXJyYSBdIGZhc3QvdGV4dC92YXJpYXRpb25zIFsgUGFzcyBGYWlsdXJlIElt
YWdlT25seUZhaWx1cmUgXQotWyBTaWVycmEgXSBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucyBb
IFBhc3MgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIFRpbWVvdXQgXQotCiBbIERlYnVnIF0gZmFz
dC9zZWxlY3RvcnMvc2xvdy1zdHlsZS1zaGFyaW5nLXdpdGgtbG9uZy1jb3VzaW4tbGlzdC5odG1s
IFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNjE3MjAgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhl
ZGRiL2tleS10eXBlLWFycmF5Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTMwMSw4ICsxMjky
LDYgQEAgd2Via2l0Lm9yZy9iLzE3MDgzMSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5n
LXJ0bC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE2NTU1MyBtZWRpYS9t
ZWRpYS1jb250cm9scy10aW1lbGluZS11cGRhdGVzLXdoZW4taG92ZXJlZC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3MTI3MiBbIFNpZXJyYSBdIGZhc3QvdGV4dC9rYWl0
aGkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcxNDY1IG1lZGlh
L3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtp
dC5vcmcvYi8xNzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTMzNyw5ICsxMzI2LDYgQEAgd2Via2l0Lm9y
Zy9iLzE2OTE1OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXN1cHBvcnQvdHJh
Y2tzLXN1cHBvcnQtc2gKIAogd2Via2l0Lm9yZy9iLzE3MDkwNyBbIERlYnVnIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cy9oa2Rm
Lmh0dHBzLndvcmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13ZWJraXQub3Jn
L2IvMTczMzI4IFsgU2llcnJhIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNrLWVtb2pp
Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzMzMjggWyBTaWVycmEgXSBmYXN0L3Rl
eHQvc3lzdGVtLWZvbnQtZmFsbGJhY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJr
aXQub3JnL2IvMTc4MDgzIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGFpbnQtdG8t
Y2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MzA2OCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9nZXRLZXkuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xMzg3LDEyNiArMTM3MywxMjYgQEAgd2Via2l0Lm9yZy9i
LzE2MTQ5MSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1zY3JvbGwuaHRtbCBb
IFBhc3MgRmFpbHUKIHdlYmtpdC5vcmcvYi8xNzIwNTIgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmctc2V0aW50
ZXJ2YWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5
PiBSRUdSRVNTSU9OPyAoRm9udFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxl
bS0qIGFuZCBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGln
aFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMS10LnN2ZyBbIEZhaWx1cmUg
XQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDMt
Yi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMt
ZWxlbS0wNy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEu
MS90ZXh0LWludHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1cz
Qy1TVkctMS4xL3RleHQtaW50cm8tMDItYi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsg
XSBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0wMy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDMuc3ZnIFsgRmFpbHVy
ZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dFBvc2l0aW9uMi5zdmcgWyBG
YWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvY3VzdG9tL2FjaWQzLXRlc3QtNzcuaHRtbCBb
IEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNr
LnhodG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL3dpY2QvdGVzdC1yaWdodHNp
emluZy1iLnhodG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jc3MtZ2VuZXJh
dGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSAgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDEtdC5zdmcgWyBG
YWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFpbHVyZSBd
CitzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMy1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1cz
Qy1TVkctMS4xL2ZvbnRzLWVsZW0tMDctYi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEu
MS90ZXh0LWludHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEvdGV4dC1p
bnRyby0wMi1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDMt
Yi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsg
RmFpbHVyZSBdCitzdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My5zdmcgWyBGYWlsdXJlIF0KK3N2
Zy9iYXRpay90ZXh0L3RleHRQb3NpdGlvbjIuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL2Fj
aWQzLXRlc3QtNzcuaHRtbCBbIEZhaWx1cmUgXQorc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJh
Y2sueGh0bWwgWyBGYWlsdXJlIF0KK3N2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54aHRtbCBb
IEZhaWx1cmUgXQorZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0ZXItZmly
c3QtbGluZS13cmFwcGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQogCiAjIDxyZGFyOi8v
cHJvYmxlbS8zMDQ5MzkxMD4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0L3dyaXRpbmctbW9k
ZS9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmEr
IF0gZmFzdC93cml0aW5nLW1vZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0bWwgWyBG
YWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQorZmFzdC93cml0aW5nLW1vZGUvYnJva2VuLWlkZW9n
cmFwaC1zbWFsbC1jYXBzLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8zMDE4MjQwMT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLWFib3J0LXJlc2V0cy1wYXJzZXIuaHRtbCBmYWlsaW5nCi1b
IEhpZ2hTaWVycmErIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hYm9ydC1yZXNl
dHMtcGFyc2VyLmh0bWwgWyBGYWlsdXJlIF0KK21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtYWJvcnQtcmVzZXRzLXBhcnNlci5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzMwNTE3MjgzPiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBzZWN1cml0eS9ibG9jay10ZXN0
Lmh0bWwgYW5kIHNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sIGZhaWxpbmcKLVsgSGln
aFNpZXJyYSsgXSBzZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwKLVsgSGlnaFNpZXJyYSsgXSBzZWN1
cml0eS9ibG9jay10ZXN0LW5vLXBvcnQuaHRtbAorc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCitz
ZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQuaHRtbAogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMTE3
Nzk5MD4gUkVHUkVTU0lPTjogY2FudmFzLzJkLmdyYWRpZW50LiogTGF5b3V0VGVzdHMgZmFpbGlu
ZwogIyBUaGVzZSBhcmUgaW1wb3J0ZWQgdGVzdHMsIHNvIHdlJ2xsIGhhdmUgdG8gcHVzaCBjaGFu
Z2VzIGJhY2sgdG8gVzNDLgotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQu
Z3JhZGllbnQubGluZWFyLnRyYW5zZm9ybS4xLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJy
YSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMi5o
dG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5n
cmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJh
KyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuYm90dG9tLmh0
bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdy
YWRpZW50LnJhZGlhbC5jb25lLmN5bGluZGVyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJy
YSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0
bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdy
YWRpZW50LnJhZGlhbC5jb25lLnNoYXBlMS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmEr
IF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCBb
IEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGll
bnQucmFkaWFsLmluc2lkZTEuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9y
dGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTIuaHRtbCBbIEZhaWx1cmUg
XQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFs
Lmluc2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGln
aFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5vdXRzaWRl
Mi5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8y
ZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJh
KyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5odG1sIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWJsZW5kaW5nLWZp
bGwtc3R5bGUuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL2Nh
bnZhcy1jdXJyZW50Q29sb3IuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3Qv
Y2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8y
ZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjEuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQv
dzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjIuaHRtbCBbIEZhaWx1cmUg
XQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjMuaHRt
bCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29u
ZS5ib3R0b20uaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVu
dC5yYWRpYWwuY29uZS5jeWxpbmRlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2Fu
dmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9y
dGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuc2hhcGUxLmh0bWwgWyBGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUudG9wLmh0
bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmlu
c2lkZTEuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5y
YWRpYWwuaW5zaWRlMi5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdy
YWRpZW50LnJhZGlhbC5pbnNpZGUzLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUyLmh0bWwgWyBGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUzLmh0bWwgWyBG
YWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5o
dG1sIFsgRmFpbHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZmlsbC1zdHlsZS5o
dG1sIFsgRmFpbHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwgWyBG
YWlsdXJlIF0KK2Zhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8zMTMyMjQyNT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS92aWRl
by1vcmllbnRhdGlvbi5odG1sIGlzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBtZWRpYS92aWRl
by1vcmllbnRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCittZWRpYS92aWRlby1vcmllbnRhdGlvbi5o
dG1sIFsgRmFpbHVyZSBdCiAKICMgV2ViQ3J5cHRvQVBJIGZlYXR1cmVzIHRoYXQgZW5hYmxlZCBv
bmx5IGZvciBIaWdoIFNpZXJyYS9pT1MgMTEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5
X3Vud3JhcEtleS5odHRwcy53b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIEhpZ2hTaWVy
cmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvd3JhcEtl
eV91bndyYXBLZXkvdGVzdF93cmFwS2V5X3Vud3JhcEtleS5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhw
b3J0LWtleS1qd2stc2hhMS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1
YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1sIFsgUGFzcyBd
Ci1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1r
ZXktandrLXNoYTI1Ni5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCi1b
IEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXkt
andrLXNoYTUxMi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9y
c2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktcGtjczguaHRtbCBbIFBhc3MgXQotWyBIaWdoU2ll
cnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRt
bCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0
ZS1rZXkuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQtandrLXByaXZhdGUta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBj
cnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVzYWdlcy5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1qd2stcHVibGljLWtleS1zaGExLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlw
dG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTIyNC5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVi
bGljLWtleS1zaGEyNTYuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0
bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBQYXNzIF0KLVsg
SGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5
LXNoYTUxMi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2Et
cHNzLWltcG9ydC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJy
YSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0K
LVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS12ZXJpZnku
aHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQtcGtjczgta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxl
L3JzYS1wc3MtaW1wb3J0LXNwa2kta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCi1bIEhp
Z2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1zcGtpLWtleS5odG1sIFsg
UGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3MtaW1w
b3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vd29ya2Vy
cy9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5LXZlcmlmeS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hT
aWVycmErIF0gaHR0cC93cHQvY3J5cHRvL3JzYS1wc3MtY3Jhc2guYW55Lmh0bWwgWyBQYXNzIF0K
LVsgSGlnaFNpZXJyYSsgXSBodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkud29ya2Vy
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRv
QVBJL3dyYXBLZXlfdW53cmFwS2V5L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtlci5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5
cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3Rlc3Rfd3JhcEtleV91bndyYXBLZXkuaHR0cHMuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0
LWtleS1qd2stc2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJh
dGUtZXhwb3J0LWtleS1qd2stc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNh
LXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRv
L3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhNTEy
Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5
LXBrY3M4Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBv
cnQta2V5LXNwa2kuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRl
LWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wcml2
YXRlLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1w
dWJsaWMta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1w
c3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyNTYuaHRtbCBbIFBh
c3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQu
aHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtl
eS1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXkt
c2lnbi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1r
ZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtcGtj
czgta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1r
ZXktZW1wdHktdXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQtc3BraS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3Mt
aW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KK2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2Et
cHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KK2h0dHAvd3B0L2NyeXB0by9yc2Et
cHNzLWNyYXNoLmFueS5odG1sIFsgUGFzcyBdCitodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFz
aC5hbnkud29ya2VyLmh0bWwgWyBQYXNzIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzIzNTI3MDI+
IFJFR1JFU1NJT046IGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMg
TGF5b3V0VGVzdHMgZmFpbGluZwotWyBIaWdoU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVs
ZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHkuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0
aW5nLXJlbGV2YW5jeS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50
L21ldGVyLWFwcGVhcmFuY2VzLWNhcGFjaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hU
TUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5odG1sIFsg
RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNjIwMDI0PiBSRUdSRVNTSU9OOiBMYXlv
dXRUZXN0cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFu
ZCBpbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFyZSBmYWls
aW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXRoLnN0cm9rZS5z
Y2FsZTIuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52
YXMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2NhbnZhcy9waGlsaXAv
dGVzdHMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy9jYW52YXMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRh
cjovL3Byb2JsZW0vMzI3OTk1NzM+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L2lw
YS10b25lLWxldHRlcnMuaHRtbCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0
L2lwYS10b25lLWxldHRlcnMuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC90ZXh0L2lwYS10b25lLWxl
dHRlcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMjc5OTYyND4gUkVH
UkVTU0lPTjogTGF5b3V0VGVzdHMgY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhl
c2lzLWNvdmVyYWdlLmh0bWwgYW5kIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhl
c2lzLWNvdmVyYWdlLmh0bWwgYXJlIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjc3MzL2ZvbnQt
dmFyaWFudC1wZXRpdGUtY2Fwcy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3lu
dGhlc2lzLWNvdmVyYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJp
YW50LXBldGl0ZS1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCitjc3MzL2ZvbnQtdmFyaWFudC1zbWFsbC1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNzk5NTk2PiBSRUdS
RVNTSU9OOiBMYXlvdXRUZXN0cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVy
cG9sYXRlLnNvbGlkLmh0bWwgYW5kIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQuaW50
ZXJwb2xhdGUuc29saWQuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCi1b
IEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0
ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCitjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50
LmludGVycG9sYXRlLnNvbGlkLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMv
MmQuZ3JhZGllbnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFy
Oi8vcHJvYmxlbS8zMjgwMDA5NT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBpbXBvcnRlZC9ibGlu
ay9mYXN0L2dyYWRpZW50cy9ncmFkaWVudC10cmFuc3BhcmVuY3kuaHRtbCBpcyBmYWlsaW5nCi1b
IEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtdHJh
bnNwYXJlbmN5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3Qv
Z3JhZGllbnRzL2dyYWRpZW50LXRyYW5zcGFyZW5jeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyODI2MzkxPiBMYXlvdXRUZXN0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL3NldHJlcXVlc3RoZWFkZXItY29udGVudC10eXBlLmh0bSBp
cyBmYWlsaW5nIG9uIEhpZ2ggU2llcnJhCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRlci1jb250ZW50LXR5cGUuaHRtIFsg
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZXRyZXF1ZXN0
aGVhZGVyLWNvbnRlbnQtdHlwZS5odG0gWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
MzI4NjQzMDY+IFVuc2tpcCBhZnRlciBib3RzIGhhdmUgQ1RGb250Q29weVBoeXNpY2FsRm9udCgp
Ci1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWphcGFuZXNlLXN5bnRoZXRp
Yy1pdGFsaWMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvc3lzdGVt
LWZvbnQtamFwYW5lc2Utc3ludGhldGljLWl0YWxpYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogIyBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHZhcmlhdGlvbiBmb250cyBhcmUg
ZGlzYWJsZWQgb24gT1NlcyB3aGljaCBkb24ndCBzdXBwb3J0IHRoZW0uIFNvLAogIyB0aGUgdGVz
dCBzaG91bGQgYmUgc2tpcHBlZCBvbiBPU2VzIHdoaWNoIGRvIHN1cHBvcnQgdGhlbS4gQXMgc29v
biBhcyBhbGwgT1NlcyBzdXBwb3J0IHRoZW0sCiAjIHdlIHNob3VsZCBkZWxldGUgdGhlIHRlc3Qu
Ci1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L2ZvbnQtdmFyaWF0aW9ucy1mZWF0dXJlLWRldGVj
dGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvZm9udC12YXJpYXRpb25z
LWZlYXR1cmUtZGV0ZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjov
L3Byb2JsZW0vMzM0Mzc1OTc+IE11bHRpcGxlIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2ggYXJlIGZhaWxpbmcgb24gSGlnaCBTaWVycmEKLVsgSGlnaFNpZXJyYSsgXSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRl
cnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmFu
eS5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhl
YWRlcnMuYW55Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM3MzEwODY+
Ci1bIEhpZ2hTaWVycmErIF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RpbWUtbGFiZWxz
LXN1cHBvcnQvZWxhcHNlZC10aW1lLmh0bWwgWyBTa2lwIF0KK21lZGlhL21vZGVybi1tZWRpYS1j
b250cm9scy90aW1lLWxhYmVscy1zdXBwb3J0L2VsYXBzZWQtdGltZS5odG1sIFsgU2tpcCBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzMzODUwMTg5PgotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbCBbIEZhaWx1
cmUgXQoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFt
ZXRlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzczMTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZm9ybS1lbGVtZW50
L2Zvcm0tZWxlbWVudHMtZmlsdGVyLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtMTUyMCwxOSArMTUw
Niw5IEBAIHdlYmtpdC5vcmcvYi8xNzc4MjYgaW5zcGVjdG9yL2RvbS9jc3AtYmlnNS1oYXNoLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTc1OTk4IGh0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNzcy13aXRoLXNlY3VyZS1jb29raWVzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCi0jIEFWQ29udGVudEtleVNlc3Npb24gbm90IGF2YWlsYWJsZSBw
cmUtSGlnaCBTaWVycmEKLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9mcHMtY3JlYXRlTWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZv
cm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNj
ZXNzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9mcHMtY3JlYXRlU2Vzc2lvbi5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIHBsYXRm
b3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsg
U2tpcCBdCi1bIFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBz
LWVuY3J5cHRlZC1ldmVudC5odG1sIFsgU2tpcCBdCi0KICMgVXNlci1pbnN0YWxsZWQgZm9udCBp
bmZyYXN0cnVjdHVyZSBpcyBvbnkgcHJlc2VudCBvbiBjZXJ0YWluIE9TZXMuCi13ZWJraXQub3Jn
L2IvMTgwMDYyIFsgU2llcnJhIEhpZ2hTaWVycmEgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQt
Zm9udHMvZGlzYWJsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgw
MDYyIGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3QvdGV4dC91c2Vy
LWluc3RhbGxlZC1mb250cy9zaGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzE4NzIyOCBbIFNpZXJyYSBIaWdoU2llcnJhIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFs
bGVkLWZvbnRzL2xvY2FsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogCiB3ZWJraXQub3Jn
L2IvMTgwNTYwIGFjY2Vzc2liaWxpdHkvbWFjL2h0bWw1LWlucHV0LW51bWJlci5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIApAQCAtMTU0NiwxMCArMTUyMiw2IEBAIHdlYmtpdC5vcmcvYi8xODE0Nzkg
aHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsgUGFzcyBJ
bWFnCiAKIHdlYmtpdC5vcmcvYi8xODE0OTQgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tdWx0aXBs
ZS1saXZlcmVnaW9ucy1ub3RpZmljYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgQSBs
b3Qgb2YgR1BVIGhhcmR3YXJlIHNpbXBseSBjcmFzaGVzIHdpdGggdGhlc2UgdGVzdHMsIHNpbmNl
IHRoZXkgYWxsb2NhdGUgYSBsb3Qgb2YgbWVtb3J5LgotIyBUaGV5IGFyZSBlbmFibGVkIG9uIHN5
c3RlbXMgdGhhdCBpbnN0ZWFkIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZLgotWyBTaWVycmEgXSBm
YXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXdpdGgtc3Vic2VxdWVudC1kcmF3cy5o
dG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8xODAyNjAgaHR0cC93cHQvcmVzb3VyY2UtdGlt
aW5nL3J0LXJlc291cmNlcy1wZXItd29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTgxODMwIFsgRGVidWcgXSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ct
dGhlbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtMTU2Miw3ICsxNTM0LDcgQEAgd2Vi
a2l0Lm9yZy9iLzE4MTU2NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jb24KIAogd2Via2l0Lm9yZy9iLzE4MTk2OSBmYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTgxODMxIFsgSGlnaFNp
ZXJyYSsgXSBmYXN0L2Zvcm1zL3NlYXJjaGZpZWxkLWhlaWdodHMuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTgxODMxIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVpZ2h0cy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3Mzk0NiBbIERlYnVnIF0gbWVk
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2Z1bGxzY3JlZW4tc3VwcG9ydC9mdWxsc2NyZWVuLXN1
cHBvcnQtcHJlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTE1NzksMTUgKzE1NTEsMTIg
QEAgd2Via2l0Lm9yZy9iLzE4Mzc2NCBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0tY29udHJvbC1jb2xv
cnMuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTg0MTE2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4Ny1ldmVu
dF9vcmRlci5odG0gWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc3NjE2IFsgSGln
aFNpZXJyYSsgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5z
LWN1cnJlbnRUaW1lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE3NzYxNiBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRUaW1l
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTg0NjEwIG1lZGlhL3ZpZGVv
LXZvbHVtZS1zbGlkZXItZHJhZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9i
LzE4NDYxMiBtZWRpYS9hdWRpby1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAotIyBGb250IGNvbGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGV2ZXJ5IE9T
Lgotd2Via2l0Lm9yZy9iLzE4NDYyNCBbIFNpZXJyYSBdIGZhc3QvdGV4dC9mb250LWNvbGxlY3Rp
b24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg0NDU3IG1lZGlh
L3ZpZGVvLWFzcGVjdC1yYXRpby5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzE4NDYwOSBwbGF0Zm9ybS9tYWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS12aWRlby10
cmFjay1jaGFuZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xNTk5LDEzICsxNTY4LDYgQEAg
d2Via2l0Lm9yZy9iLzE4NTY1OSBbIERlYnVnIF0gYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHUKICMgbWFjT1MgZG9lc24ndCBoYXZlIElDVSB2NTkKIHdl
YmtpdC5vcmcvYi8xODUzNzUganMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmh0
bWwgWyBGYWlsdXJlIF0KIAotIyA8PSBIaWdoIFNpZXJyYSBkb2Vzbid0IHN1cHBvcnQgTW9kZXJu
IEVNRQotWyBIaWdoU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9m
cHMtY3JlYXRlTWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3Jt
L21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWNyZWF0ZVNlc3Npb24uaHRtbCBbIFNraXAg
XQotWyBIaWdoU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMt
ZW5jcnlwdGVkLWV2ZW50Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21h
Yy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBd
Ci1bIEhpZ2hTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Zwcy1y
ZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQotCiAjIEltcG9ydGVkIGNz
cy10ZXh0IHRlc3Qgc3VpdGUgZnJvbSBXUFQKIHdlYmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQtbGluZS1i
cmVhay1vcGNsbnMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
ODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9j
c3MzLXRleHQtbGluZS1icmVhay1vcGNsbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
QEAgLTE2MjksNTYgKzE1OTEsNTAgQEAgZmFzdC9jc3MvcHNldWRvLXZpc2l0ZWQtYmFja2dyb3Vu
ZC1jb2xvci1vbi1pbnB1dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8xODczOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvaW1hZ2Vi
aXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtb3JpZ2luLnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotWyBNb2phdmUrIF0gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQoraHR0
cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBh
c3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNDcxNjU5Mzk+IGlzIGZpeGVkLgotWyBNb2phdmUrIF0g
aHR0cC90ZXN0cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tp
ZXMuaHRtbCBbIFNraXAgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSB0aGUgZml4IGZv
ciA8cmRhcjovL3Byb2JsZW0vNDIyNTUyNTE+IGlzIHNoaXBwZWQuCi1bIE1vamF2ZSsgXSBodHRw
L3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1jcm9zcy1zaXRlLWNvb2tp
ZXMucGhwIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRl
L3NldC1maXJzdC1wYXJ0eS1zYW1lLXNpdGUtY29va2llcy5waHAgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LWNyb3NzLXNpdGUtY29va2llcy5w
aHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5
LXNhbWUtc2l0ZS1jb29raWVzLnBocCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zNjYz
OTExNz4gUkVHUkVTU0lPTiAoTW9qYXZlKTogTGF5b3V0VGVzdCBzdmcvY3VzdG9tL3N1YnBhdGhz
LW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgaXMgZmFpbGluZwotWyBNb2phdmUrIF0gc3ZnL2N1
c3RvbS9zdWJwYXRocy1tb3ZldG8tb25seS1yZW5kZXJpbmcuc3ZnIFsgRmFpbHVyZSBdCitzdmcv
Y3VzdG9tL3N1YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBGYWlsdXJlIF0KIAog
IyA8cmRhcjovL3Byb2JsZW0vNDA0OTgyOTA+IFJFR1JFU1NJT04gKE1vamF2ZSk6IEhUTUxNZXRl
ckVsZW1lbnQgTGF5b3V0VGVzdHMgZmFpbGluZwotWyBNb2phdmUrIF0gZmFzdC9kb20vSFRNTE1l
dGVyRWxlbWVudC9tZXRlci1ib3VuZGFyeS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2ph
dmUrIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXJlcGFpbnQtb24t
dXBkYXRlLXZhbHVlLmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGZhc3QvZG9tL0hUTUxN
ZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBm
YXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwgWyBGYWlsdXJlIF0K
LVsgTW9qYXZlKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0bWwg
WyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYm91bmRhcnktdmFs
dWVzLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxl
bWVudC1yZXBhaW50LW9uLXVwZGF0ZS12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9I
VE1MTWV0ZXJFbGVtZW50L21ldGVyLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9kb20v
SFRNTE1ldGVyRWxlbWVudC9tZXRlci1vcHRpbXVtcy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2Rv
bS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXN0eWxlcy5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJk
YXI6Ly9wcm9ibGVtLzQxMTAzMjYwPiBSRUdSRVNTSU9OIChNb2phdmUpOiBUaHJlZSB0ZXh0IHRl
c3RzIGZhaWxpbmcgd2l0aCBzbWFsbCBhbnRpYWxpYXNpbmcoPykgZGlmZnMKLVsgTW9qYXZlKyBd
IGZhc3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1bIE1vamF2ZSsgXSBpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0
LXNoYXBpbmctYXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGlt
cG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5n
LXdpdGgtY29tYmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyA8IE1v
amF2ZSB1c2VzIGZvbnQgc21vb3RoaW5nLgotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNvbXBvc2l0
aW5nL2NvbnRlbnRzLWZvcm1hdC9zdWJwaXhlbC1hbnRpYWxpYXNlZC10ZXh0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK2Zhc3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90
ZXh0LXNoYXBpbmctYXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2Js
aW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29t
YmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8IE1vamF2ZSBkb2Vz
bid0IHN1cHBvcnQgdGhlIENHIG5lZWRlZCBmb3IgQ29uaWMgR3JhZGllbnRzCi1bIE1vamF2ZSsg
XSBodHRwL3dwdC9jc3MvY3NzLWltYWdlcy00L2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbCBb
IFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLmh0bWwg
WyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQYXNzIF0K
LVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLW9mZi1jZW50ZXIuaHRtbCBbIFBhc3Mg
XQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtY2VudGVyLW91dHNpZGUtYm94Lmh0
bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWV4dGVuZGVkLXN0
b3BzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWZyb20t
YW5nbGUuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVw
ZWF0aW5nLWxhc3Qtc3RvcC5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50
cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBdCi1bIE1v
amF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFzcyBdCi1bIE1v
amF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3MgXQoraHR0
cC93cHQvY3NzL2Nzcy1pbWFnZXMtNC9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwgWyBQYXNz
IF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy5odG1sIFsgUGFzcyBdCitmYXN0L2dy
YWRpZW50cy9jb25pYy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1vZmYtY2Vu
dGVyLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLWNlbnRlci1vdXRzaWRlLWJv
eC5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1leHRlbmRlZC1zdG9wcy5odG1s
IFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1mcm9tLWFuZ2xlLmh0bWwgWyBQYXNzIF0K
K2Zhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy1sYXN0LXN0b3AuaHRtbCBbIFBhc3MgXQor
ZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFBhc3MgXQorZmFzdC9n
cmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3MgXQorZmFz
dC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMv
Y29uaWMtdHdvLWhpbnRzLmh0bWwgWyBQYXNzIF0KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9tdWx0aXBsZS1wb3NpdGlvbi1jb2xvci1z
dG9wLWNvbmljLmh0bWwgWyBQYXNzIF0KIAogIyBEYXJrIE1vZGUgaXMgTW9qYXZlIGFuZCBsYXRl
ci4KLVsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGNzcy1k
YXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQotWyBNb2phdmUrIF0gaW5zcGVjdG9yL2Nz
cy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBd
Ci0KLSMgVGVzdCBEYXJrIE1vZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24gb2xkZXIg
c3lzdGVtcy4KLVsgU2llcnJhIEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3Rl
bXMgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUvb2xkZXIt
c3lzdGVtcyBbIFNraXAgXQoraW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRt
bCBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0
ZXJlZC5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODk2ODYgd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFy
cmF5LWJ1ZmZlci12aWV3Lmh0bWwgWyBTbG93IF0KIApAQCAtMTY5NCwxNCArMTY1MCw2IEBAIHdl
YmtpdC5vcmcvYi8xOTA4OTIgWyBEZWJ1ZyBdIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0
dXJlcy9taXNjL3RleC11bnBhY2stCiAKIHdlYmtpdC5vcmcvYi8xOTA5NzYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1w
bGF5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNp
ZXJyYSBdIHdlYmdwdSBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEg
XSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13
ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVz
dENsaWVudE5vZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsg
SGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUu
aHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBpbnNwZWN0
b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1h
ZGQtcmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGln
aFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tp
cCBdCi0KIHdlYmtpdC5vcmcvYi8xODk2ODAgcGxhdGZvcm0vbWFjL21lZGlhL2F1ZGlvLXNlc3Np
b24tY2F0ZWdvcnktdmlkZW8tcGF1c2VkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQu
b3JnL2IvMTk1NDY2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXku
aHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCkBAIC0xNzI5LDcgKzE2NzcsNyBAQCB3ZWJraXQu
b3JnL2IvMTk2MTEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0
aW9ucy9jc3Mtc3R5bGluZwogIyBGbGFreSBmb3Igbm9uIE1hdGhNTCBjb3JlLgogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9zY3JpcHRz
L2NyYW1wZWQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk2NTAg
WyBIaWdoU2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL3ByZXNzLW5vdC13b3JrLWZvci1kaXNh
YmxlZC1tZW51LWxpc3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2NTAg
YWNjZXNzaWJpbGl0eS9tYWMvcHJlc3Mtbm90LXdvcmstZm9yLWRpc2FibGVkLW1lbnUtbGlzdC5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBTa2lwIGlPUy1zcGVjaWZpYyBQb2ludGVyIEV2ZW50
cyBXUFQgdGVzdHMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJldmVu
dHMvcG9pbnRlcmV2ZW50X2NoYW5nZS10b3VjaC1hY3Rpb24tb25wb2ludGVyZG93bl90b3VjaC5o
dG1sIFsgU2tpcCBdCkBAIC0xNzQ0LDE2ICsxNjkyLDE2IEBAIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyZXZlbnRfcG9pbnRlcm91dF9wZW4uaHRt
bCBbCiAKIHdlYmtpdC5vcmcvYi8xOTc0NzMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9yZXNvdXJjZS10aW1pbmcvcmVzb3VyY2UtdGltaW5nLWxldmVsMS5zdWIuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xMzY2MjcgWyBNb2phdmUrIF0gbWVkaWEvdHJhY2sv
dHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMTM2NjI3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBb
IEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80NzA4ODkzOT4KLVsgTW9qYXZlKyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUt
bWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9tZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZVRvU2NyaXB0UHJvY2Vzc29yVGVzdC5odG1sICBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0g
d2ViYXVkaW8vcmVhbHRpbWVhbmFseXNlci1mZnQtc2NhbGluZy5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KLVsgTW9qYXZlKyBdIHdlYmF1ZGlvL29zY2lsbGF0b3Itc2luZS5odG1sIFsgU2tpcCBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LW1lZGlhZWxlbWVudGF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VUb1NjcmlwdFByb2Nlc3NvclRlc3QuaHRtbCAgWyBGYWlsdXJlIF0KK3dlYmF1ZGlvL3Jl
YWx0aW1lYW5hbHlzZXItZmZ0LXNjYWxpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJhdWRp
by9vc2NpbGxhdG9yLXNpbmUuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTk5MDEzIFsg
RGVidWcgTW9qYXZlKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy9DcmVhdGUtU2VjdXJlLXZlcmlmeS11cmwtc2V0LW5vbi1kZWZhdWx0LXBvcnQuYW55Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5OTAxMyBbIERlYnVnIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL0NyZWF0ZS1TZWN1cmUtdmVyaWZ5LXVy
bC1zZXQtbm9uLWRlZmF1bHQtcG9ydC5hbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8xOTA4ODIgWyBNb2phdmUrIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFuaW0uaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTkwODgyIGFuaW1hdGlvbnMvY2hhbmdl
LW9uZS1hbmltLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80ODc4
MTA5OD4KIFsgQ2F0YWxpbmErIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1s
IFsgUGFzcyBdCkBAIC0xODQ3LDE0ICsxNzk1LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDI1MjMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvcGF0aC1vYmplY3RzLzJkLnBh
CiAKIHdlYmtpdC5vcmcvYi8yMDI1OTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8y
ZGNvbnRleHQvbGluZS1zdHlsZXMvMmQubGluZS5jYXAucm91bmQuaHRtbCBbIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMTk4ODY3IFsgTW9qYXZlKyBdIHdlYmdsL21hbnktY29udGV4dHMuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE5ODg2NyB3ZWJnbC9tYW55LWNvbnRleHRzLmh0bWwg
WyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzIwMzE3MSBpbnNwZWN0b3IvbGF5ZXJzL2xheWVycy1m
b3Itbm9kZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzQxNiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvYmVmb3JlLWxv
YWQtMDAxLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwMzMwNSBbIEhpZ2hTaWVy
cmEgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNp
dGlvbnMvcHJvcGVydGllcy12YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjAzMzA1IFsgSGlnaFNpZXJyYSBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVyaXQtMDAx
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NyBbIERlYnVnIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL2V2ZW50LWRp
c3BhdGNoLnRlbnRhdGl2ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMz
NTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAt
MTg3MCw3ICsxODE2LDcgQEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3Qv
dGV4dC9lbW9qaS1nZW5kZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8y
MDQ4MjAgWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4
dC9lbW9qaS1nZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcv
Yi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUt
c2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQyNDYg
WyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVk
aXRhYmlsaXR5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0MjQ3IFsg
Q2F0YWxpbmEgXSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBGYWlsdXJl
IF0KIApAQCAtMTg4NSwyMCArMTgzMSwyMCBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdlYmF1ZGlv
L3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNzCiB3ZWJr
aXQub3JnL2IvMjA1NzU3IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUt
dXBsb2FkLXNpemUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjA1NzU2IHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9nbHNsMy9uby1hdHRyaWJ1dGUtdmVydGV4LXNoYWRlci5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNTg2MiBbIE1vamF2ZSsgXSB3
ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMDU4NjUgWyBNb2phdmUrIF0gd2ViZ3B1L3dobHNsL2Vuc3VyZS1w
cm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMDU4NjcgWyBNb2phdmUrIF0gd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlh
bmdsZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1ODYy
IHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJp
YWJsZS1saWZldGltZS0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzIwNTg2NyB3ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5NzIwNCB3ZWJleHBvc2VkL2Nzcy1wcm9w
ZXJ0aWVzLWJlaGluZC1mbGFncy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUgbmF2aWdh
dG9yLmxhbmd1YWdlIHRlc3RzIHJlbHkgb24gZnVuY3Rpb25hbGl0eSBvbmx5IGF2YWlsYWJsZSBp
biByZWNlbnQgcmVsZWFzZXMgb2YgbWFjT1MgQ2F0YWxpbmEgYW5kIG9ud2FyZC4KLXdlYmtpdC5v
cmcvYi8yMDAwNDMgWyBTaWVycmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsgUGFz
cyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDAwNDMgWyBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsg
UGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcgWyBGYWls
dXJlIFBhc3MgXQogCiAjIExvY2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5hYmxlZCBv
biBjZXJ0YWluIE9TZXMuCi13ZWJraXQub3JnL2IvNzc1NjggWyBTaWVycmEgSGlnaFNpZXJyYSBN
b2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzc3NTY4IFsgU2llcnJhIEhpZ2hTaWVycmEgTW9qYXZl
IENhdGFsaW5hIF0gZmFzdC90ZXh0L2xvY2FsZS1zaGFwaW5nLWNvbXBsZXguaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzc3NTY4IFsgTW9qYXZlIENhdGFsaW5hIF0gZmFz
dC90ZXh0L2xvY2FsZS1zaGFwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi83NzU2OCBbIE1vamF2ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy1j
b21wbGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzIyMiBz
dmcvd2ljZC9yaWdodHNpemluZy1ncmlkLnhodG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMjAx
OSw4ICsxOTY1LDggQEAgd2Via2l0Lm9yZy9iLzIwOTA4NCBjc3MzL3NlbGVjdG9yczMveG1sL2Nz
czMtbW9kc2VsLWQ0LnhtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA3MTUwIHBs
YXRmb3JtL21hYy93ZWJydGMvY2FwdHVyZUNhbnZhcy13ZWJydGMtc29mdHdhcmUtZW5jb2Rlci5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUgbGluZSBicmVha2luZyBydWxlcyBjaGFuZ2Vk
IGluIElDVSA2Ni4gV2UndmUgdXBkYXRlZCB0aGUgdGVzdHMgdG8gbWF0Y2gsIGJ1dCBvbGQgcGxh
dGZvcm1zIHdvbid0IGdldCB1cGRhdGVkIGxpbmUgYnJlYWtpbmcgcnVsZXMuCi13ZWJraXQub3Jn
L2IvMjA5MjUwIFsgU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1icmVhay1ub3JtYWwtMDE1LnhodCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwOTI1MCBbIFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJlYWstc3Ry
aWN0LTAxNS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDkyNTAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1icmVhay9saW5l
LWJyZWFrLW5vcm1hbC0wMTUueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjA5MjUwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUt
YnJlYWsvbGluZS1icmVhay1zdHJpY3QtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMjA3ODU4IGZhc3QvY2FudmFzL3dlYmdsL3NpbXVsYXRlZC12ZXJ0ZXhBdHRy
aWIwLWludmFsaWQtaW5kaWNpZXMuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRj
YzI2ZDRiMmQyNjRjMmVlNWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJz
dHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMjQgKzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMyBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LTEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAs
MTgKLTEwLDU3Miw4LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0x
MCw1NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAs
MCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0w
MDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRy
aWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2Uw
NzQwMTAxMDYwZWNjYzQ5MjA1NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRm
NWMzZDMyYzQxMjFlMDQyNzQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3Rp
bmcgdGV4dCB3aXRoIGJyIGVsZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwg
MTAwKTogaGVsbG8KICg2LCAxKToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAs
IDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRy
aWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAz
OWYxNTMxM2Y0ZGM0MmExNDRlZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3
OGYzMmJkZjVlZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3Rl
eHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFu
Z2UtMDAxLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6
IDAgfQogICAgICAgICAgICAgbG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIu
YXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAg
ICAgIGxvZygiKDYsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDYsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAi
ICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEp
LnN0cmluZygpKTsgLy8gc2hvdWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEw
MCwgMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEw
MCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2Uo
MTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAw
LCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5n
ZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEw
MCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2Uo
MTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0
ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUz
ZjllNTZlMTdlYTE3MzU4ZWExYzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNl
MTIxZTQ2ODNiZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3Rl
eHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAo
MTI8Yj4zPGk+NDU2PC9pPjwvYj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAy
KTogNgotKDEwMCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAw
KTogCisoMTAwLCAxMDApOiAKIAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMu
X19fNF81KQogdG90YWwgbGVuZ3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UuaHRtbAppbmRleCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODli
MGMzLi5jZjZjOTExZDRiNTc1YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5n
LWZyb20tcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBi
b2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAs
IDEwMCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRD
b250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgbG9nKCIoNSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIo
MTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21S
YW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIo
MTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxv
ZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdG
cm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIo
MTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBsb2coIlxuVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81
KSIpOwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZu
YnNwOyZuYnNwOzMgJm5ic3A7Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394869</attachid>
            <date>2020-03-29 10:19:44 -0700</date>
            <delta_ts>2020-03-29 16:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200329101942.patch</filename>
            <type>text/plain</type>
            <size>263503</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUxM2EyNjljNDZhZmMz
OTgyMDIwYzIwM2VjNzliYmUxYzU5YmFiOC4uNWVhNjQ0NGRiNDA0ZGFkY2IwNzc2OTViODIxZDgx
MzgyMjI3ODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBQdXQgQ2hhcmFjdGVyUmFu
Z2UgYW5kIENoYXJhY3Rlck9mZnNldCBpbnRvIGEgaGVhZGVyLCBDaGFyYWN0ZXJSYW5nZS5oLgor
ICAgICAgICAtIFVzZSB0aGVtIGZvciBjYXNlcyBvZiBjaGFyYWN0ZXIgb2Zmc2V0cy4gQmVjYXVz
ZSB0aGlzIGNhbiBiZSBhIHNpbmdsZQorICAgICAgICAgIG9mZnNldCBpbnRvIGFuIGVudGlyZSBk
b2N1bWVudCwgdXNlIGEgNjQtYml0IGludGVnZXIgc28gd2UgZG9uJ3QgbGltaXQKKyAgICAgICAg
ICBhbiBlbnRpcmUgZG9jdW1lbnQgdG8gMl4zMiBjaGFyYWN0ZXJzOyBpbiB0aGVvcnkgdGhpcyBt
YWtlcyBpdCBzbyB3ZQorICAgICAgICAgIGNhbiBzdXBwb3J0IGEgZG9jdW1lbnQgd2l0aCB0b25z
IG9mIHRleHQgbm9kZXMgdGhhdCBhZGQgdXAgdG8gbW9yZQorICAgICAgICAgIHRoYW4gMl4zMi4K
KyAgICAgICAgLSBCZWNhdXNlIENoYXJhY3RlclJhbmdlIHVzZXMgNjQtYml0IGludGVnZXJzIHdl
IGNhbiBub3cgY29udmVydCBtb3JlCisgICAgICAgICAgZWFzaWx5IHRvIGFuZCBmcm9tIE5TUmFu
Z2UgYW5kIENGUmFuZ2Ugb24gQ29jb2EgcGxhdGZvcm1zLiBPbmUgZGlmZmVyZW5jZQorICAgICAg
ICAgIGlzIHRoYXQgQ2hhcmFjdGVyUmFuZ2UgZG9lc24ndCB1c2UgYSAibm90IGZvdW5kIiB2YWx1
ZTsgaW5zdGVhZCB3ZQorICAgICAgICAgIHVzZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gd2hl
biB3ZSBuZWVkIGEgbnVsbCB2YWx1ZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6IEFkZGVk
IENoYXJhY3RlclJhbmdlLmguCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfY29udmVydFRvRE9NUmFuZ2U6XSk6CisgICAgICAgIFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdGV4dE1hcmtlckZvckluZGV4Ol0pOiBEaXR0
by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6
IFRha2UgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OmFkZE1hcmtlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIpOiBEaXR0by4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5n
ZXMuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDogRXhwb3J0IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbiBzbyBpdCBjYW4gYmUgdXNlZAorICAgICAgICBvdXRzaWRlIG9mIFdlYkNvcmUu
CisKKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmFz
dElzQ2hhcmFjdGVyRGF0YSk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0aGUgTm9kZSBjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aCk6IEFkZGVkLiBDb3VsZCBiZSBtb3ZlZCB0byB0
aGUgTm9kZSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyk6IEFkZGVkLiBBbmFsb2dvdXMgdG8gdGhlCisgICAgICAgIFJhbmdlOjpzZWxlY3RO
b2RlQ29udGVudHMgZnVuY3Rpb24uCisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICBVc2UgQ2hhcmFjdGVyQ291
bnQvUmFuZ2UsIHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKiBlZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb3Jy
ZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVy
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2lu
Z1Jlc3VsdCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHcmFtbWF0aWNhbEVycm9ycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1pc3NwZWxsaW5ncyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VW
YWx1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6
cmFuZ2VMZW5ndGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1BhcmFncmFwaDo6c3VicmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCBjb25zdCk6IERpdHRvLiBBbHNvIHVz
ZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjpj
aGVja2luZ1N0YXJ0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kIGNvbnN0KTogRGl0dG8uIEFsc28gY29tcHV0ZQorICAg
ICAgICB0aGlzIGJ5IGFkZGluZyBzdGFydCBhbmQgbGVuZ3RoLCBhbmQgZG9uJ3QgY2FjaGUgaXQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3Ro
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
OmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZp
cnN0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RCYWRHcmFtbWFyIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNh
bFJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxNaXNzcGVsbGluZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLiBBbHNvIGdvdCByaWQgb2YK
KyAgICAgICAgbV9jaGVja2luZ0VuZCBzaW5jZSBpdCdzIHN1ZmZpY2llbnQgdG8gY2FjaGUgdGhl
IHN0YXJ0IGFuZCB0aGUgbGVuZ3RoLgorICAgICAgICBTaG91bGQgY29tZSBiYWNrIGxhdGVyIGFu
ZCB1c2UgQ2hhcmFjdGVyUmFuZ2UgaW5zdGVhZCBvZiAyeCBDaGFyYWN0ZXJDb3VudC4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjbGFtcGVkQWRkKTogQWRkZWQuIEhlbHBzIGltcGxlbWVudCByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UgaW4gYSB3YXkKKyAgICAgICAgdGhhdCBjYW4gd29yayB3aXRoIGFueSBjaGFyYWN0ZXIg
Y291bnQgd2l0aG91dCBjb25jZXJuIGFib3V0IG92ZXJmbG93LgorICAgICAgICAoV2ViQ29yZTo6
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKTogQWRkZWQuIFJlcGxhY2VzIGJvdGggc3VicmFuZ2UgYW5k
CisgICAgICAgIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLCB1c2luZyBhbiBhbGdvcml0aG0g
Y2xvc2UgdG8gdGhlIG9uZSBmcm9tCisgICAgICAgIHRoZSBsYXR0ZXIgZnVuY3Rpb24sIGluY2x1
ZGluZyB3b3JrYXJvdW5kcyBpdCBoYWQuIFJlcGxhY2VkIHRoZSBib29sZWFuCisgICAgICAgICJm
b3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24iIHdpdGggdGhlIFRleHRJdGVyYXRvckJlaGF2aW9yIG9w
dGlvbnMsIHdoaWNoIHNlZW1zCisgICAgICAgIHRvIG1ha2UgZ29vZCBzZW5zZSBhdCBhbGwgdGhl
IGNhbGwgc2l0ZXMuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24p
OiBBZGRlZC4gTGlrZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UsIGJ1dAorICAgICAgICBpbnN0ZWFk
IG9mIHJlc29sdmluZyBDaGFyYWN0ZXJSYW5nZSB0byBTaW1wbGVSYW5nZSwgcmVzb2x2ZXMgQ2hh
cmFjdGVyQ291bnQKKyAgICAgICAgdG8gYSBCb3VuZGFyeVBvaW50LiBNYWRlIGEgc2VwYXJhdGUg
ZnVuY3Rpb24gZm9yIHRoaXMgaW4gY2FzZSB3ZSBsYXRlciByZWZhY3RvcgorICAgICAgICBmb3Ig
ZWZmaWNpZW5jeSwgYnV0IGZvciBub3cgc2ltcGx5IGNhbGxzIHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZSB3aXRoIGEgemVybworICAgICAgICBsZW5ndGggcmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5oOiBNb3ZlZCBDaGFyYWN0ZXJDb3VudCBhbmQgQ2hhcmFnZXJSYW5nZSBp
bnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLiBSZXBsYWNlZCBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZAorICAgICAgICBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlIHdpdGggcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uIGFuZCByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAg
IChXZWJDb3JlOjpkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVzZSBDaGFyYWN0ZXJD
b3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOiBEaXR0by4K
KyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQpOiBEaXR0
by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJh
bmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhU
ZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDogRGl0
dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzdWJyYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSk6IERpdHRvLgorCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDogTWFkZSBsb2NhdGlvbiBhbmQgbGVuZ3RoIHVuc2lnbmVkIHJh
dGhlciB0aGFuIHNpZ25lZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRv
LgorCiAyMDIwLTAzLTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ10gTGF5b3V0OjpCb3g6OnBhcmVudCgpIHNob3VsZCByZXR1cm4gY29uc3QgQ29udGFp
bmVyQm94JgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyYTc3MjlmYjVmNzM4ZWNjMzNhODJiNzQ3YmY0ZWMxYzY2YjJl
YWZlLi5iNGNhMTExYmVhNjFiOGY1NjE2NGNkZWZlOGI3MWMxNmI5ODZmZTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUwIEBACisyMDIwLTAzLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UpOiBVc2UgQ2hhcmFjdGVyQ291bnQvUmFuZ2UsCisgICAg
ICAgIHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9F
ZGl0aW5nUmFuZ2UuaDogQWRkZWQgYSBGSVhNRSBhYm91dCByZXBsYWNpbmcgd2l0aCBDaGFyYWN0
ZXJSYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKTogQWRk
ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUp
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZW5j
b2RlKTogVXBkYXRlZCB0byB1c2UgQ2hhcmFjdGVyUmFuZ2UuCisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmVuY29kZSk6IERpdHRvLgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZSk6IERpdHRv
LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDogQWRkZWQgQ2hhcmFj
dGVyUmFuZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OnRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3Vs
dCk6IFVzZSBDaGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3Rlckxv
Y2F0aW9uL1JhbmdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbCk6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6OmxvY2F0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6Omxlbmd0aCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tl
cjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1RleHRDaGVja2VyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OnVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyk6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmFuZ2VBbmRPZmZzZXRS
ZWxhdGl2ZVRvU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24pOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJz
dHJpbmdCZXR3ZWVuUG9zaXRpb25zKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxldGVTdXJyb3Vu
ZGluZyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRh
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRp
bmdDb250ZXh0KTogRGl0dG8uCisKIDIwMjAtMDMtMjkgIGRka2lsemVyQGFwcGxlLmNvbSAgPGRk
a2lsemVyQGFwcGxlLmNvbUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+CiAK
ICAgICAgICAgQnVpbGQgZml4IGZvcjogW2lPU10gRGVsYXkgcHJvY2VzcyBzdXNwZW5zaW9uIGZv
ciBhIHdoaWxlIGFmdGVyIGxvYWRpbmcgYW4gYXBwIGxpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCBiYmQ5ZGJjYWRkNmExYWNlNGFkODNlNDM0ZGY4ZGY1NGM3OTAxNzdmLi5lMjIw
YjVlZjg2OWZlZmZlNjNkM2U3OGFiYzRiNTlkYzQ1NGNlZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMjkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6IFVz
ZSBDaGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9u
L1JhbmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
IERpdHRvLgorICAgICAgICAoY29yZSk6IERpdHRvLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6IERp
dHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1l
IF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZUlzUmVsYXRpdmVUbzpdKTogRGl0dG8uCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAodGV4dENoZWNraW5nUmVzdWx0RnJvbU5T
VGV4dENoZWNraW5nUmVzdWx0KTogRGl0dG8uCisKIDIwMjAtMDMtMjcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRHJhZ0RhdGE6OmNvbnRhaW5zVVJM
KCkgc2hvdWxkIGF2b2lkIHJlYWRpbmcgVVJMIHN0cmluZ3MgZnJvbSB0aGUgcGFzdGVib2FyZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDI3NDE5NGVhYTA3MjJiZTdlYjFhZmJmYWIx
Y2UzMWYzMTAyNDc3MmIuLjhjOGEyNmUxODM2MDIxYTQ5ZDAzNDA2NzBiNmVkNzQ1NTZiYjc2Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0y
OSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVj
a0dyYW1tYXJPZlN0cmluZyk6IFVzZSBDaGFyYWN0ZXJDb3VudC9SYW5nZSwKKyAgICAgICAgcmVz
b2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9y
VGVzdGluZyk6IERpdHRvLgorCiAyMDIwLTAzLTE4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgYSBwcmVmbGlnaHQgZmFpbHMgaWYgcmVzcG9u
c2UgaGVhZGVycyBhcmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWFkNTM3ODUzMjRi
YjM0YzBkZGI5ZGNjMTE3MGM4Y2RkNGEzNjZhOC4uNzk3ZDNjMTM5NDgzM2FkODhiNzUzNGRkMjRl
M2RmZTY3NjE5ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00ODcsNiArNDg3LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9tZXNzYWdlcG9ydHMv
TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAogICAgIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMuaAogCisgICAgZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCiAgICAg
ZWRpdGluZy9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaAogICAgIGVkaXRpbmcvQ29tcG9zaXRpb25VbmRlcmxpbmUuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhM2M0
YjRkZjE5NDI5Mzk0YWYzODNmZjI1MGY2MDI1OTk2Nzk0MmIuLmM1OTBlMTVlYjBmZjBkNzFjMzk2
ODM0NmM3ZTU3YjY0ZDcwNTcyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MzQsNiArMjczNCw3IEBACiAJCTkzRjE5QjE3
MDgyNDVFNTkwMDFFOUFCQyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8q
IGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBX
ZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0YxRDVCODEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oICov
OyB9OwogCQk5M0YxRDVDMTEyRDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRDVCRjEy
RDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi87IH07CisJCTkzRjJDQzkz
MjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENo
YXJhY3RlclJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2RjFFQjEy
N0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJOTNGOTI1NDMw
RjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyog
UmFkaW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBG
QjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggKi87IH07CkBAIC0xMDkzNCw2ICsxMDkzNSw3IEBA
CiAJCTkzRjFENUI5MTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHTExvc2VDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkUxMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29u
dGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMTG9z
ZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0YxRDVCRjEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV2ViR0xMb3NlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdM
Q29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNkYxRUIx
MjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjZGMUVDMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb250ZXh0RXZlbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NTksNiArMjE3NjEsNyBAQAogCQkJCTkzMzA5RDhD
MDk5RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi8sCiAJCQkJRjRE
OTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8sCiAJ
CQkJRjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICov
LAorCQkJCTkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5oICovLAog
CQkJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAq
LywKIAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwICovLAogCQkJCTkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29t
bWFuZC5oICovLApAQCAtMjk2NDIsNiArMjk2NDUsNyBAQAogCQkJCUZEMzE2MDAyMTJCMDI2NzYw
MEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUw
QjZBMDA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzU1OTJGNzgxQTkyQUEyODAwMUY4ODYyIC8qIENoYXJhY3RlclByb3BlcnRpZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5n
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJh
Y3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIy
MTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRl
eCBkODMxMDc1Y2QzMTFkOTUyYzJiMTg2NTliZmUzNDg1NGVhMTdjNzViLi5kNTYyOTA5ZmZkMjFk
NTg0NmEzNzQ4YTQ3NGQ2ZTM5Y2VhOGE0OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQpAQCAtMjMzOCwxMSArMjMzOCwxMCBAQCAtIChOU1JhbmdlKV9jb252ZXJ0
VG9OU1JhbmdlOihSYW5nZSAqKWxpdmVSYW5nZQogCiAtIChSZWZQdHI8UmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24g
PiBJTlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7
CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFu
Z2UubGVuZ3RoID4gSU5UX01BWCB8fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGgg
PiBJTlRfTUFYKQotICAgICAgICBuc3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxv
Y2F0aW9uOwotICAgICAgICAKKwogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRo
YXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNl
bnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KICAgICAvLyBX
ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBU
aGUgRE9NIGZvciB0aG9zZSBpcyBub3QKQEAgLTIzNTIsNyArMjM1MSw5IEBAIC0gKFJlZlB0cjxS
YW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKICAgICBFbGVtZW50
KiBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlv
blJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgaWYgKCFzY29wZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSksICpyYW5n
ZSkpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJr
ZXIgcmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4
Mjc5NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBi
ZmJmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4
LDkgKzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXpl
ID0gcmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0g
cmVzdWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01h
a2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkp
OworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJl
c3VsdC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3Ro
KSk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRO
dW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRy
aWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9u
LCByZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0
ZSwgQFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRp
b24sIHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDoo
TlNJbnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsK
KyAgICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRy
PFJhbmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAo
IXRleHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBh
dXRvKiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmpl
Y3RDYWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7
Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRP
ckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07
Ci0gICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24o
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5k
ZXgpOworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0
ZXJPZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSks
IHRydWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNo
YXJhY3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRl
eHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBm
NGU1MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5lMTNlMzNjOGZhNmQ4MmI2
ZjhiNmEyMzg0ZDk1YThiZjQ4MTgwYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJU
eXBlcyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0
ZXh0UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRl
eHRJdGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4
LDEzIEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNv
bGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0K
IAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2Us
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24pCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRl
eHRSYW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRh
aW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRl
eHRQaWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtl
cihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5
cGUpCiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdl
KSkKICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1l
bnRNYXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9m
ZnNldCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAg
ICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1
bHRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3Zv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsK
ICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAg
ICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtl
cihEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0
KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBt
ZXRhZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oCmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQuLjM2MmQ3
NDc0MzQ5ZTRiY2Y4YjM2MzljZGY0MTJjYTc5YTNjOGIwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3Mg
Tm9kZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsKIAorc3Ry
dWN0IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAg
ICB+RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2Vy
KGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBEb2N1bWVu
dE1hcmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRNYXRjaE1h
cmtlcihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlu
dGVycHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAgIHZvaWQg
YWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0aW9uUmVz
dWx0TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOworICAgIHZv
aWQgYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgUmV0
YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2VkQ29udGVu
dE1hcmtlcihSYW5nZSYpOwogCkBAIC0xMDcsNyArMTA5LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgYWRkTWFya2VyKE5vZGUmLCBjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBSYW5nZSYpOwor
ICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBjb2xsZWN0VGV4dFJhbmdlcyhjb25zdCBTaW1wbGVS
YW5nZSYpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcj4gTWFy
a2VyTGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBzdGQ6OnVuaXF1ZV9w
dHI8TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOTkzZTk1
MWYxYTUwYTRkYmE5ZjkzYzFlODFmZTVlMmIxN2FlN2Y5OC4uYzI4ZTcwNmIxMDU2ZjZlYTVlOTA0
OWQwMGE0NjJjZDNhNWExMjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIyNiw3ICsyMjYs
NyBAQCBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwog
CiAvLyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0byAibWFrZSIgaW5zdGVhZCBvZiAi
Y3JlYXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0
IGFsbG9jYXRlIGhlYXAgb2JqZWN0cy4KIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKLVBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CitXRUJDT1JFX0VYUE9SVCBQb3NpdGlv
biBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChj
b25zdCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBiNGZl
MmI4NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhLi5hNDMzOGFiMjBmYzUyZjJmZjI3
ZGNiNWI3MDIwOGE3ZjdiMzA2MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
cGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAg
LTUzLDQgKzUzLDIzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29u
c3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVu
ZCA9PSBiLmVuZDsKIH0KIAorLy8gRklYTUU6IE5vZGU6OmlzQ2hhcmFjdGVyRGF0YSBzaG91bGQg
dXNlIGFuIGFsZ29yaXRobSBsaWtlIHRoaXMsIHNpbmNlIEknbSBhc3N1bWluZyBpdCdzIGZhc3Rl
ciB0aGFuIHRoZSBpc0NoYXJhY3RlckRhdGFOb2RlIHZpcnR1YWwgY2FsbCBpbiBtb3N0IGNhc2Vz
Lgorc3RhdGljIGJvb2wgZmFzdElzQ2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKQorewor
ICAgIHJldHVybiAhbm9kZS5pc0NvbnRhaW5lck5vZGUoKSAmJiAobm9kZS5pc1RleHROb2RlKCkg
fHwgbm9kZS5pc0NoYXJhY3RlckRhdGFOb2RlKCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgTm9kZTo6bGVuZ3RoIHNpbmNlIHRoZSBET00gc3BlY2lmaWNhdGlvbiBjYWxscyB0aGlz
IGEgbm9kZSdzIGxlbmd0aC4KK3N0YXRpYyB1bnNpZ25lZCBsZW5ndGgoY29uc3QgTm9kZSYgbm9k
ZSkKK3sKKyAgICBpZiAoZmFzdElzQ2hhcmFjdGVyRGF0YShub2RlKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PENoYXJhY3RlckRhdGE+KG5vZGUpLmxlbmd0aCgpOworICAgIHJldHVybiBub2Rl
LmNvdW50Q2hpbGROb2RlcygpOworfQorCitTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4geyB7IG5vZGUsIDAgfSwgeyBu
b2RlLCBsZW5ndGgobm9kZSkgfSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmlu
ZGV4IGFjZDk4NTVhODkxOWMzNzZlMTU3ZDFjZWQ5YzVkZWVkN2ExOTU3MjQuLjk1ODJkZjhjMzMy
NmM4OTg1NWJiOGRlYTExNDYzMzVjNDY3MTNhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5o
CkBAIC01MSw2ICs1MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgU2ltcGxlUmFuZ2Uo
Y29uc3QgUmVmPFJhbmdlPiYpOwogfTsKIAorV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmKTsKKwogYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogaW5saW5lIFNpbXBsZVJh
bmdlOjpTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGVi
ZDRjYWIzMjZmMmMwOTc1NTQwY2IxZDZmOWU3YTEyMjc5YjI5ODguLjEyNjgxM2M2ZGQwYjNiNzhk
ZGJkMzIyYzMxMzM0ZTY4ODA2Zjk4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTk5LDE3ICs1OTksMTggQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFu
Z2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmNy
ZWF0ZShyYW5nZS5jbG9uZVJhbmdlKCksIGFsdGVybmF0aXZlKS0+YXBwbHkoKTsKIAogICAgIC8v
IFJlY2FsY3VsYXRlIHByYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiwgc2luY2UgU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtb2RpZmllZCB0aGUgRE9NLCBzdWNoIHRoYXQgdGhlIG9y
aWdpbmFsIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24gaXMgbm8gbG9uZ2VyIHZh
bGlkLiBSYWRhcjogMTAzMDUzMTUgQnVnemlsbGE6IDg5NTI2Ci0gICAgYXV0byB1cGRhdGVkUGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgodHJlZVNjb3BlUm9vdC5wdHIoKSwgcGFyYWdyYXBoT2Zmc2V0SW5U
cmVlU2NvcGUsIGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCArIGFsdGVybmF0aXZlLmxlbmd0
aCgpKTsKLSAgICBpZiAoIXVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
KQorICAgIGF1dG8gdXBkYXRlZFBhcmFncmFwaFN0YXJ0Q29udGFpbmluZ0NvcnJlY3Rpb24gPSBy
ZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHRy
ZWVTY29wZVJvb3QpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSk7CisgICAgYXV0byB1cGRh
dGVkUGFyYWdyYXBoRW5kQ29udGFpbmluZ0NvcnJlY3Rpb24gPSBtYWtlQm91bmRhcnlQb2ludCht
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGlmICghdXBkYXRl
ZFBhcmFncmFwaEVuZENvbnRhaW5pbmdDb3JyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAg
c2V0RW5kKHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLmdldCgpLCBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgIGF1dG8gcmVwbGFj
ZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKnVwZGF0ZWRQYXJhZ3JhcGhSYW5n
ZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBjb3JyZWN0aW9uT2Zmc2V0SW5QYXJhZ3JhcGgsIGFsdGVy
bmF0aXZlLmxlbmd0aCgpKTsKKyAgICBDaGFyYWN0ZXJDb3VudCBhbHRlcm5hdGl2ZUxlbmd0aEFz
Q2hhcmFjdGVyQ291bnQgPSBhbHRlcm5hdGl2ZS5sZW5ndGgoKTsKKyAgICBhdXRvIHJlcGxhY2Vt
ZW50UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyB1cGRhdGVkUGFyYWdyYXBoU3RhcnRD
b250YWluaW5nQ29ycmVjdGlvbiwgKnVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWluaW5nQ29ycmVj
dGlvbiB9LCB7IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmVMZW5ndGhB
c0NoYXJhY3RlckNvdW50IH0pOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHJlcGxhY2VtZW50
IHN1Y2NlZWRlZC4KLSAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpICE9
IGFsdGVybmF0aXZlKQorICAgIGlmIChwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZSkgIT0gYWx0
ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG1hcmtlcnMgPSByZXBsYWNl
bWVudFJhbmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpOworICAgIGF1dG8mIG1hcmtlcnMg
PSByZXBsYWNlbWVudFJhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGZvciAo
YXV0byBtYXJrZXJUeXBlIDogbWFya2VyVHlwZXNUb0FkZCkKICAgICAgICAgbWFya2Vycy5hZGRN
YXJrZXIocmVwbGFjZW1lbnRSYW5nZSwgbWFya2VyVHlwZSwgbWFya2VyRGVzY3JpcHRpb25Gb3JB
cHBsaWVkQWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVHlwZSwgbWFya2VyVHlwZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiYjky
YzAyMTIxYTNiN2IzOTJmNTI5ZjhhYjc2ZTViZTQ2MGIyMzQ5Li4wODRlYTcyYzhhZDI1MTI5NmI0
MzkyYjZhOWJjNjdmNWViMGQ4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcApAQCAtMjgzLDEyICsyODMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBh
cmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAg
ICB9CiAgICAgCi0gICAgewotICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBzdGFydEluZGV4LCAwLCB0
cnVlKTsKLSAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoc2NvcGUuZ2V0KCksIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAg
aWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCi0gICAgICAgICAgICB1cGRhdGVTdGFydEVuZChz
dGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwot
ICAgIH0KKyAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cygqc2NvcGUpLCBzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqc2NvcGUpLCBlbmRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICB1cGRhdGVTdGFydEVuZChz
dGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMq
IHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5n
ZS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU5MzZmZTJkNjEyYjdmMzNkZjFiMjk2MzdlYWQ0NGJiOTM2YWY2ZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYXJhY3RlclJhbmdlLmgKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBVU0UoQ0YpCisjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEZPVU5EQVRJT04pCit0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOworI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgQ2hhcmFjdGVyQ291bnQgPSBzdGQ6OnNpemVf
dDsKKworc3RydWN0IENoYXJhY3RlclJhbmdlIHsKKyAgICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlv
biB7IDAgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGggeyAwIH07CisKKyNpZiBVU0UoQ0Yp
CisgICAgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBvcGVyYXRvciBOU1JhbmdlKCkgY29uc3Q7CisjZW5kaWYKK307CisKKyNpZiBV
U0UoQ0YpCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJhY3RlclJhbmdlKENGUmFu
Z2UpOworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKK09wdGlvbmFsPENoYXJhY3RlclJh
bmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisjZW5kaWYKKworLy8gaW5saW5lcwor
CisjaWYgVVNFKENGKQorCitpbmxpbmUgQ2hhcmFjdGVyUmFuZ2U6Om9wZXJhdG9yIENGUmFuZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBDRlJhbmdlTWFrZShsb2NhdGlvbiwgbGVuZ3RoKTsKK30K
KworaW5saW5lIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBtYWtlQ2hhcmFjdGVyUmFuZ2UoQ0ZS
YW5nZSByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQg
fHwgcmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKHJhbmdlLmxlbmd0aCA+PSAwKTsK
KyAgICBpZiAocmFuZ2UubG9jYXRpb24gPCAwIHx8IHJhbmdlLmxlbmd0aCA8IDApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJhY3RlclJhbmdlIHsgc3RhdGlj
X2Nhc3Q8Q2hhcmFjdGVyQ291bnQ+KHJhbmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8Q2hhcmFj
dGVyQ291bnQ+KHJhbmdlLmxlbmd0aCkgfTsKK30KKworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRB
VElPTikgJiYgZGVmaW5lZChfX09CSkNfXykKKworaW5saW5lIENoYXJhY3RlclJhbmdlOjpvcGVy
YXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTlNNYWtlUmFuZ2UobG9jYXRpb24s
IGxlbmd0aCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gbWFrZUNoYXJh
Y3RlclJhbmdlKE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIENoYXJh
Y3RlclJhbmdlIHsgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCB9OworfQorCisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAxNTRiYjg3YzMzMWQ0MWQ5MTYxNjJlN2Q5MTEw
ZDQ3ODgyN2QxYzcwLi40NmMyNTE3MmViMmJlZGFmMjVlNzkzMjNmNWJmMzgyMzljYTEwYWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApA
QCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFn
cmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICBpZiAoc3Rh
cnRPZlBhcmFncmFwaFRvTW92ZSA9PSBkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgaW50IGVuZEluZGV4ID0gLTE7CisgICAg
T3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+IHN0YXJ0SW5kZXg7CisgICAgT3B0aW9uYWw8Q2hhcmFj
dGVyQ291bnQ+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5k
aW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlv
biAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwpAQCAt
MTUyOCwxNiArMTUyOCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlmIChzdHls
ZUluRW1wdHlQYXJhZ3JhcGggJiYgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCkKICAgICAgICAg
YXBwbHlTdHlsZShzdHlsZUluRW1wdHlQYXJhZ3JhcGguZ2V0KCkpOwogCi0gICAgaWYgKHByZXNl
cnZlU2VsZWN0aW9uICYmIHN0YXJ0SW5kZXggIT0gLTEpIHsKKyAgICBpZiAocHJlc2VydmVTZWxl
Y3Rpb24gJiYgc3RhcnRJbmRleCAmJiBlbmRJbmRleCkgewogICAgICAgICAvLyBGcmFnbWVudCBj
cmVhdGlvbiAodXNpbmcgY3JlYXRlTWFya3VwKSBpbmNvcnJlY3RseSB1c2VzIHJlZ3VsYXIKICAg
ICAgICAgLy8gc3BhY2VzIGluc3RlYWQgb2YgbmJzcHMgZm9yIHNvbWUgc3BhY2VzIHRoYXQgd2Vy
ZSByZW5kZXJlZCAoMTE0NzUpLCB3aGljaAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJl
IGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAg
ICAgIC8vIGluIGEgY2FsbCB0byByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9j
YXRpb24gcGFzdCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2ls
bCByZXR1cm4gbnVsbCkuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGlu
YXRpb25JbmRleCArIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+
IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVS
b290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgICAg
ICBpZiAoc3RhcnQgJiYgZW5kKQotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwgZW5kLT5zdGFydFBvc2l0aW9uKCks
IERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOworICAgICAgICBhdXRvIHN0YXJ0
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVkaXRhYmxlUm9vdCksIGRlc3RpbmF0aW9u
SW5kZXggKyAqc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFs
bFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICAgICAgYXV0byBlbmQgPSBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCArICplbmRJbmRleCwg
VGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsK
KyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHsgc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSwgb3Jp
Z2luYWxJc0RpcmVjdGlvbmFsIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAKaW5kZXggNjA0N2I5NDY0M2UzZDVlYTU3M2FmYmRjZjY3NmIyMDExYWM4NzVmNy4uZGZi
YTcyMWY1ZWFkM2EyMDNlZDZmNjRiOWJjMDVlYWQyMzllYzMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCkBAIC0xMTE0LDEyICsxMTE0LDEwIEBAIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpCiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgs
IENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1ZSk7Ci0gICAg
Ly8gQ2hlY2sgZm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBvcGVyYXRpb25z
IGludmFsaWRhdGUgaW5kaWNlcyBiZWNhdXNlIAotICAgIC8vIG9mIHByb2JsZW1zIHdpdGggVGV4
dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMuCi0gICAg
aWYgKCFyYW5nZSkKKyAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJl
dHVybiB7IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkgfTsKKyAgICBDaGFyYWN0ZXJDb3VudCBpbmRl
eEFzQ2hhcmFjdGVyQ291bnQgPSBpbmRleDsKKyAgICByZXR1cm4geyBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cygqc2NvcGUpLCBpbmRleEFzQ2hhcmFjdGVyQ291bnQsIFRleHRJdGVyYXRvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJs
ZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihO
b2RlJiBub2RlLCBpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDNh
YzBmYzAxMDk1MmJhYzRmMTA2ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uYjY5NDg5Zjc2NTc1ZDVmYTI4
M2JlY2FkMDRjOTEyZWVkOTBkYzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
MjIyMywxNSArMjIyMywxNSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFmdGVy
V3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBzZWFy
Y2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoKTsK
ICAgICAKLSAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50
IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7
Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAgIENoYXJhY3RlckNvdW50IGdy
YW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJh
bmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwogICAgIFN0cmluZyBtaXNzcGVsbGVk
V29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zmc2V0
ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBmb3VuZE9mZnNldCA9IDA7CiAgICAgU3RyaW5nIGZv
dW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKICAgICBp
ZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBAIC0yMzA3LDEwICsyMzA3LDEwIEBA
IHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBzbyB3ZSBkcmF3
IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAgCiAgICAgICAgIEFTU0VSVChiYWRH
cmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWls
LmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgICAgIEFT
U0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDApOwogICAgICAgICAKICAgICAgICAg
Ly8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5jdHVh
dGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAgICAgIGF1dG8gYmFkR3JhbW1hclJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCBncmFtbWFy
UGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5n
dGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5n
ZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0
YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAg
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihiYWRH
cmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIApAQCAtMjMyMiw3ICsyMzIyLDcg
QEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3Jl
U2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBidXQgbm90IGFu
eSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1cGRhdGUgdGhl
IHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJh
dyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAKLSAgICAgICAgYXV0byBtaXNzcGVs
bGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLCBt
aXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOworICAgICAgICBhdXRv
IG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc3BlbGxpbmdTZWFyY2hS
YW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgfSk7CiAg
ICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
bWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlv
bigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAgLTI3NzMsNyArMjc3Myw3IEBAIHZv
aWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNraW5nKFJhbmdlJiByYW5nZVRvUmVw
bGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3Jl
YXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFwcGx5KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaChU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFuZ2UmIHJhbmdlVG9SZXBsYWNlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRM
ZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIFJhbmdlJiBy
YW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgQ2hhcmFjdGVyQ291bnQg
cmVzdWx0TG9jYXRpb24sIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCkKIHsKICAgICBhdXRv
JiBzY29wZSA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KHBhcmFncmFwaC5wYXJhZ3JhcGhSYW5n
ZSgpLnN0YXJ0Q29udGFpbmVyKCkucm9vdE5vZGUoKSk7CiAKQEAgLTI3ODYsMTAgKzI3ODYsOSBA
QCBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYQogICAgIC8vIFRleHRDaGVja2luZ1BhcmFncmFwaCBt
YXkgYmUgb3JwaGFuZWQgYWZ0ZXIgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZCBtdXRhdGVkIERP
TS4KICAgICAvLyBTZWUgPHJkYXI6Ly8xMDMwNTMxNT4sIGh0dHA6Ly93ZWJraXQub3JnL2IvODk1
MjYuCiAKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1BhcmFncmFwaFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUsIHBhcmFncmFwaExvY2F0aW9uLCBw
YXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aCk7Ci0K
LSAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKm5l
d1BhcmFncmFwaFJhbmdlLCByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwot
ICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChzcGVsbENoZWNraW5nUmFuZ2Uu
Y29weVJlZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBuZXdQYXJhZ3JhcGhSYW5n
ZS5nZXQoKSk7CisgICAgYXV0byBuZXdQYXJhZ3JhcGhSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2NvcGUpLCB7IHBhcmFncmFwaExv
Y2F0aW9uLCBwYXJhZ3JhcGhMZW5ndGggKyByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExl
bmd0aCB9KTsKKyAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJS
YW5nZShuZXdQYXJhZ3JhcGhSYW5nZSwgeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVu
Z3RoKCkgfSk7CisgICAgcGFyYWdyYXBoID0gVGV4dENoZWNraW5nUGFyYWdyYXBoKGNyZWF0ZUxp
dmVSYW5nZShzcGVsbENoZWNraW5nUmFuZ2UpLCBjcmVhdGVMaXZlUmFuZ2Uoc3BlbGxDaGVja2lu
Z1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKG5ld1BhcmFncmFwaFJhbmdlKSk7CiB9CiAKIHZvaWQg
RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCkBAIC0yODExLDcg
KzI4MTAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVj
a1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogI2VuZGlmCiAKICAgICAvLyBFeHBh
bmQgdGhlIHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBj
aGVja2luZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KLSAgICBpbnQgc2VsZWN0aW9uT2Zmc2V0
ID0gMDsKKyAgICBDaGFyYWN0ZXJDb3VudCBzZWxlY3Rpb25PZmZzZXQgPSAwOwogICAgIGJvb2wg
dXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgPSBmYWxzZTsKICAgICBib29sIHNlbGVjdGlvbkNo
YW5nZWQgPSBmYWxzZTsKICAgICBib29sIHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IGZh
bHNlOwpAQCAtMjgyMyw5ICsyODIyLDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9y
KGNvbnN0IFNwZWxsQ2hlY2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAg
ICAgICAgIFBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLmVuZCgpOwogICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gcGFyYWdyYXBoLm9m
ZnNldFRvKGNhcmV0UG9zaXRpb24pLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgICAgICAgICAg
cmVzdG9yZVNlbGVjdGlvbkFmdGVyQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzZWxl
Y3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rpb25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dExlbmd0
aCgpIHx8IHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpID09IG5ld2xp
bmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNl
bGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0KCkubGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRl
eHQoKVtzZWxlY3Rpb25PZmZzZXQgLSAxXSA9PSBuZXdsaW5lQ2hhcmFjdGVyKSkKICAgICAgICAg
ICAgICAgICBhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBw
YXJhZ3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFy
YWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkpKQorICAgICAgICAgICAgaWYg
KHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IHBhcmFncmFwaC50ZXh0
KCkubGVuZ3RoKCkgJiYgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3RlcihwYXJhZ3JhcGgudGV4
dCgpW3NlbGVjdGlvbk9mZnNldCAtIDFdKSkKICAgICAgICAgICAgICAgICB1c2VBbWJpZ3VvdXNC
b3VuZGFyeU9mZnNldCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODMzLDE0ICsyODMy
LDE0IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgaW50IG9mZnNldER1ZVRvUmVwbGFj
ZW1lbnQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgY29uc3QgaW50IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBwYXJh
Z3JhcGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNv
bnN0IFRleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IHJlc3VsdHNbaV0udHlwZTsKLSAgICAg
ICAgY29uc3QgaW50IHJlc3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5sb2NhdGlvbiArIG9mZnNl
dER1ZVRvUmVwbGFjZW1lbnQ7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRMZW5ndGggPSByZXN1
bHRzW2ldLmxlbmd0aDsKLSAgICAgICAgY29uc3QgaW50IHJlc3VsdEVuZExvY2F0aW9uID0gcmVz
dWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCBhdXRvbWF0aWNS
ZXBsYWNlbWVudEVuZExvY2F0aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3Rh
cnQoKSArIHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgc3BlbGxpbmdSYW5nZUVuZE9m
ZnNldCA9IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsK
KyAgICAgICAgVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBlOwor
ICAgICAgICBDaGFyYWN0ZXJDb3VudCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ucmFuZ2Uu
bG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OworICAgICAgICBDaGFyYWN0ZXJDb3Vu
dCByZXN1bHRMZW5ndGggPSByZXN1bHRzW2ldLnJhbmdlLmxlbmd0aDsKKyAgICAgICAgQ2hhcmFj
dGVyQ291bnQgcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0
aDsKKyAgICAgICAgQ2hhcmFjdGVyQ291bnQgYXV0b21hdGljUmVwbGFjZW1lbnRFbmRMb2NhdGlv
biA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgKyBwYXJhZ3JhcGguYXV0
b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQgPSByZXN1bHRzW2ldLnJlcGxhY2VtZW50Owot
ICAgICAgICBjb25zdCBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0gdXNlQW1i
aWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1bHRFbmRM
b2NhdGlvbjsKKyAgICAgICAgYm9vbCByZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeSA9IHVz
ZUFtYmlndW91c0JvdW5kYXJ5T2Zmc2V0ICYmIHNlbGVjdGlvbk9mZnNldCAtIDEgPD0gcmVzdWx0
RW5kTG9jYXRpb247CiAKICAgICAgICAgLy8gT25seSBtYXJrIG1pc3NwZWxsaW5nIGlmOgogICAg
ICAgICAvLyAxLiBDdXJyZW50IHRleHQgY2hlY2tpbmcgaXNuJ3QgZG9uZSBmb3IgYXV0b2NvcnJl
Y3Rpb24sIGluIHdoaWNoIGNhc2Ugc2hvdWxkTWFya1NwZWxsaW5nIGlzIGZhbHNlLgpAQCAtMjg1
MCwxNiArMjg0OSwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3Bl
bGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICBpZiAoc2hv
dWxkTWFya1NwZWxsaW5nICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsICYmIHJlc3VsdFR5
cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcKICAgICAgICAgICAgICYmIHJlc3VsdExv
Y2F0aW9uID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkgJiYgcmVzdWx0RW5kTG9jYXRpb24g
PD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiAhcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRh
cnkpIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0
aW9uID49IDApOwotICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBo
LnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgYXV0
byBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcmVzdWx0TG9jYXRpb24s
IHJlc3VsdExlbmd0aCB9KTsKICAgICAgICAgICAgIGlmICghbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1JhbmdlKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgcmVwbGFjZW1lbnQpOwotICAgICAgICB9IGVs
c2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFy
ICYmIHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGgu
Y2hlY2tpbmdSYW5nZUNvdmVycyh7IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHRMZW5ndGggPiAwICYmIHJlc3VsdExvY2F0aW9uID49
IDApOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHRzW2ldLmRldGFpbHMp
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDAgJiYgZGV0YWlsLmxv
Y2F0aW9uID49IDApOwotICAgICAgICAgICAgICAgIGlmIChwYXJhZ3JhcGguY2hlY2tpbmdSYW5n
ZUNvdmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGgu
c3VicmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgp
OworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCAmJiBkZXRh
aWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5j
aGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24gKyBkZXRhaWwucmFuZ2UubG9jYXRp
b24sIGRldGFpbC5yYW5nZS5sZW5ndGggfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBi
YWRHcmFtbWFyUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlvbiArIGRl
dGFpbC5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KTsKICAgICAgICAgICAg
ICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFy
a2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFy
LCBkZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC0yODc3LDcgKzI4NzYsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3Io
Y29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAg
ICAgICAgLy8gMi4gVGhlIHJlc3VsdCBkb2Vzbid0IGVuZCBhdCBhbiBhbWJpZ3VvdXMgYm91bmRh
cnkuCiAgICAgICAgICAgICAvLyAgICAoRklYTUU6IHRoaXMgaXMgcmVxdWlyZWQgdW50aWwgNjg1
MzAyNyBpcyBmaXhlZCBhbmQgdGV4dCBjaGVja2luZyBjYW4gZG8gdGhpcyBmb3IgdXMKICAgICAg
ICAgICAgIGJvb2wgZG9SZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50Lmxlbmd0aCgpID4gMCAmJiAh
cmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnk7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlVG9S
ZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgp
OworICAgICAgICAgICAgYXV0byByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7
IHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGggfSk7CiAKICAgICAgICAgICAgIC8vIEFkZGlu
ZyBsaW5rcyBzaG91bGQgYmUgZG9uZSBvbmx5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZXkgYXJlIHR5
cGVkLgogICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6TGlu
ayAmJiBzZWxlY3Rpb25PZmZzZXQgIT0gcmVzdWx0RW5kTG9jYXRpb24gKyAxKQpAQCAtMjkyMiw3
ICsyOTIxLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hl
Y2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciByZXN1bHRzIGZvciB0aGUgcmVwbGFj
ZWQgdGV4dC4KLSAgICAgICAgICAgICAgICB3aGlsZSAoaSArIDEgPCByZXN1bHRzLnNpemUoKSAm
JiByZXN1bHRzW2kgKyAxXS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQgPD0gcmVz
dWx0TG9jYXRpb24pCisgICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0cy5zaXpl
KCkgJiYgcmVzdWx0c1tpICsgMV0ucmFuZ2UubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2Vt
ZW50IDw9IHJlc3VsdExvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBpKys7CiAKICAgICAg
ICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKQEAgLTI5MzEsNyArMjkzMCw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9m
ZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAogICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pIHsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJl
c3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSB9KTsKICAgICAgICAgICAgICAgICAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmluZywgcmVw
bGFjZW1lbnRSYW5nZS5wdHIoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFy
a2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJl
IHJlLWNvcnJlY3RlZC4KQEAgLTI5NDUsOCArMjk0NCw4IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5k
UmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9y
PFRlCiAgICAgICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBleHRlbmRlZFBhcmFncmFwaChXVEZN
b3ZlKHBhcmFncmFwaCkpOwogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYXJldCBwb3NpdGlvbiBp
ZiB3ZSBoYXZlIG1hZGUgYW55IHJlcGxhY2VtZW50cwogICAgICAgICBleHRlbmRlZFBhcmFncmFw
aC5leHBhbmRSYW5nZVRvTmV4dEVuZCgpOwotICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGlvbkFm
dGVyQ2hhbmdlICYmIHNlbGVjdGlvbk9mZnNldCA+PSAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBl
eHRlbmRlZFBhcmFncmFwaC5yYW5nZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNlbGVj
dGlvblJhbmdlID0gZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2UoMCwgc2VsZWN0aW9uT2Zmc2V0
KTsKKyAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25P
ZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgeworICAgICAgICAgICAg
YXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKHsgMCwgc2Vs
ZWN0aW9uT2Zmc2V0IH0pOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3ZlVG8o
c2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAg
aWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCiAgICAgICAgICAgICAg
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CkBAIC0yOTczLDcg
KzI5NzIsOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6UmV2
ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVja2lu
Z1BhcmFncmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7CiAgICAgcmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIFNtYXJ0UmVwbGFj
ZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7Ci0gICAgYXV0byBjaGFuZ2VkUmFuZ2UgPSBwYXJh
Z3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcu
bGVuZ3RoKCkpOworICAgIENoYXJhY3RlckNvdW50IHJlcGxhY2VkU3RyaW5nTGVuZ3RoQXNDaGFy
YWN0ZXJDb3VudCA9IHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8gY2hhbmdlZFJh
bmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHsgcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVw
bGFjZWRTdHJpbmdMZW5ndGhBc0NoYXJhY3RlckNvdW50IH0pOwogICAgIGNoYW5nZWRSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJh
bmdlLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vsc2UK
QEAgLTM3NzcsMTIgKzM3NzcsMTIgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9u
ZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKIAogICAgICAg
ICBBU1NFUlQoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8IGxlbmd0aCk7
CiAKLSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyBy
ZWxhdGl2ZVN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0g
cmVsYXRpdmVFbmRQb3NpdGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisgICAgICAg
IENoYXJhY3RlckNvdW50IHN1YnJhbmdlT2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRp
dmVTdGFydFBvc2l0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBzdWJyYW5nZUxlbmd0aCA9
IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxOwogCi0gICAg
ICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJyYW5n
ZU9mZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnJhbmdlID0gcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJhbmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCB9
KTsKIAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBwZW5kKHN1YnJhbmdlLnB0cigpKTsKKyAgICAg
ICAgbWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2Uoc3VicmFuZ2UpKTsKICAgICAg
ICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoc3VicmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQb3NpdGlv
biArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKQEAgLTM5OTIsMTQgKzM5OTIsMTQgQEAgUmVm
UHRyPFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25z
dAogCiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29u
c3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXN1bHQu
bGVuZ3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHRSYW5nZSA9IGNvbnRleHRSYW5nZUZv
ckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4
dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5y
YW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggYWQ4Mjc4
ODljYWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1ZTM3NC4uOTUwZTQ0NWY1YTNiMGIzNGUyOWM0
MDRkZWZkYjkzNDk3ZmUyNWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgdm9pZCBmaW5k
R3JhbW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0
ZXh0LCBWZQogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBiYWRHcmFtbWFyOwogICAgICAg
ICBiYWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOwotICAgICAgICBi
YWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbjsK
LSAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOworICAgICAgICBi
YWRHcmFtbWFyLnJhbmdlLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2Nh
dGlvbjsKKyAgICAgICAgYmFkR3JhbW1hci5yYW5nZS5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3Ro
OwogICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1tYXJEZXRhaWxz
KTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7CiAKQEAgLTk3LDkgKzk3LDkg
QEAgc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50
LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjwKIAogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IG1pc3NwZWxsaW5nOwogICAgICAgICAgICAgbWlzc3BlbGxpbmcudHlwZSA9IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcubG9jYXRpb24gPSB3
b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwotICAgICAgICAgICAgbWlzc3BlbGxpbmcu
bGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5yZXBs
YWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5sb2NhdGlvbiwgbWlzc3BlbGxpbmcubGVuZ3Ro
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAgICAgbWlzc3BlbGxpbmcucmFu
Z2UubG9jYXRpb24gPSB3b3JkU3RhcnQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAg
ICAgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAg
ICAgICBtaXNzcGVsbGluZy5yZXBsYWNlbWVudCA9IGNsaWVudC5nZXRBdXRvQ29ycmVjdFN1Z2dl
c3Rpb25Gb3JNaXNzcGVsbGVkV29yZCh0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZy5yYW5nZS5s
b2NhdGlvbiwgbWlzc3BlbGxpbmcucmFuZ2UubGVuZ3RoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobWlzc3BlbGxpbmcpOwogICAgICAgICB9
CiAKQEAgLTEzOSwxNCArMTM5LDEzIEBAIHZvaWQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpleHBh
bmRSYW5nZVRvTmV4dEVuZCgpCiB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6aW52YWxpZGF0
ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKIHsKICAgICBtX2NoZWNraW5nU3RhcnQucmVzZXQoKTsK
LSAgICBtX2NoZWNraW5nRW5kLnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0
YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgpOwog
ICAgIG1fb2Zmc2V0QXNSYW5nZSA9IG51bGxwdHI7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9
CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKK0NoYXJh
Y3RlckNvdW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFuZ2VMZW5ndGgoKSBjb25zdAogewog
ICAgIHJldHVybiBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSgpKTsKIH0KQEAgLTE1OCwx
MiArMTU3LDEyIEBAIFJhbmdlJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnBhcmFncmFwaFJhbmdl
KCkgY29uc3QKICAgICByZXR1cm4gKm1fcGFyYWdyYXBoUmFuZ2U7CiB9CiAKLVJlZjxSYW5nZT4g
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQg
Y2hhcmFjdGVyQ291bnQpIGNvbnN0CitSZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6
c3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgY2hhcmFjdGVyT2Zmc2V0LCBjaGFy
YWN0ZXJDb3VudCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UocGFyYWdyYXBoUmFuZ2UoKSwgcmFuZ2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8aW50PiBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKK0V4Y2VwdGlvbk9yPENoYXJhY3RlckNvdW50PiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6
Om9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIHN0
YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UoKS5zdGFydFBvc2l0aW9uKCkp
OwogICAgIGF1dG8gZW5kID0gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pOwpAQCAtMTg3LDM1
ICsxODYsMzMgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0QXNSYW5nZSgp
IGNvbnN0CiAgICAgcmV0dXJuICptX29mZnNldEFzUmFuZ2U7CiB9CiAKLWNvbnN0IFN0cmluZyYg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKK1N0cmluZ1ZpZXcgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjp0ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkK
KyAgICBpZiAobV90ZXh0LmlzTnVsbCgpKQogICAgICAgICBtX3RleHQgPSBwbGFpblRleHQoJnBh
cmFncmFwaFJhbmdlKCkpOwogICAgIHJldHVybiBtX3RleHQ7IAogfQogCi1pbnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKK0NoYXJhY3RlckNvdW50IFRleHRD
aGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdTdGFydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2No
ZWNraW5nU3RhcnQpCiAgICAgICAgIG1fY2hlY2tpbmdTdGFydCA9IGNoYXJhY3RlckNvdW50KG9m
ZnNldEFzUmFuZ2UoKSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5nU3RhcnQ7CiB9CiAKLWludCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5kKCkgY29uc3QKK0NoYXJhY3RlckNvdW50
IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBjb25zdAogewotICAgIGlmICgh
bV9jaGVja2luZ0VuZCkKLSAgICAgICAgbV9jaGVja2luZ0VuZCA9IGNoZWNraW5nU3RhcnQoKSAr
IGNoZWNraW5nTGVuZ3RoKCk7Ci0gICAgcmV0dXJuICptX2NoZWNraW5nRW5kOworICAgIHJldHVy
biBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwogfQogCi1pbnQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
Y2hlY2tpbmdMZW5ndGgpCiAgICAgICAgIG1fY2hlY2tpbmdMZW5ndGggPSBjaGFyYWN0ZXJDb3Vu
dChtX2NoZWNraW5nUmFuZ2UpOwogICAgIHJldHVybiAqbV9jaGVja2luZ0xlbmd0aDsKIH0KIAot
aW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNv
bnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3Rh
cnQpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0OwpAQCAtMjI5
LDcgKzIyNiw3IEBAIGludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2Vt
ZW50U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCgpIGNvbnN0CitDaGFyYWN0ZXJDb3VudCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9t
YXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvbWF0aWNSZXBs
YWNlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVu
Z3RoOwpAQCAtMjQ2LDEyICsyNDMsMTIgQEAgVGV4dENoZWNraW5nSGVscGVyOjpUZXh0Q2hlY2tp
bmdIZWxwZXIoRWRpdG9yQ2xpZW50JiBjbGllbnQsIFJhbmdlJiByYW5nZSkKIAogVGV4dENoZWNr
aW5nSGVscGVyOjp+VGV4dENoZWNraW5nSGVscGVyKCkgPSBkZWZhdWx0OwogCi1TdHJpbmcgVGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxp
bmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKQorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoQ2hh
cmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRy
PFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAgIGZpcnN0TWlzc3BlbGxpbmdP
ZmZzZXQgPSAwOwogCiAgICAgU3RyaW5nIGZpcnN0TWlzc3BlbGxpbmc7Ci0gICAgaW50IGN1cnJl
bnRDaHVua09mZnNldCA9IDA7CisgICAgQ2hhcmFjdGVyQ291bnQgY3VycmVudENodW5rT2Zmc2V0
ID0gMDsKIAogICAgIGZvciAoV29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZSk7ICFpdC5hdEVu
ZCgpOyBjdXJyZW50Q2h1bmtPZmZzZXQgKz0gaXQudGV4dCgpLmxlbmd0aCgpLCBpdC5hZHZhbmNl
KCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gaXQudGV4dCgpOwpAQCAtMjc3LDE3ICsy
NzQsMjAgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmco
aW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogICAgICAgICBpZiAobWlzc3BlbGxp
bmdMb2NhdGlvbiA+PSAwICYmIG1pc3NwZWxsaW5nTGVuZ3RoID4gMCAmJiBtaXNzcGVsbGluZ0xv
Y2F0aW9uIDwgdGV4dExlbmd0aCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoICYm
IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aCA8PSB0ZXh0TGVuZ3RoKSB7
CiAgICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdlIG9mIG1pc3NwZWxsZWQgd29yZAotICAgICAg
ICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShtX3Jh
bmdlLCBjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGlu
Z0xlbmd0aCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJSYW5nZSBtaXNwZWxsaW5nQ2hhcmFjdGVy
UmFuZ2U7CisgICAgICAgICAgICBtaXNwZWxsaW5nQ2hhcmFjdGVyUmFuZ2UubG9jYXRpb24gPSBj
dXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOworICAgICAgICAgICAgbWlz
cGVsbGluZ0NoYXJhY3RlclJhbmdlLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOworICAgICAg
ICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFu
Z2UsIG1pc3BlbGxpbmdDaGFyYWN0ZXJSYW5nZSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVtYmVy
IGZpcnN0LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAgICAg
ICAgaWYgKCFmaXJzdE1pc3NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVs
bGluZ09mZnNldCA9IGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CiAg
ICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxs
aW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAg
ICAgIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7CisgICAg
ICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1pc3Nw
ZWxsaW5nUmFuZ2UpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBtYXJr
ZXIgZm9yIG1pc3NwZWxsZWQgd29yZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5n
UmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVsbGlu
Z1JhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1Jh
bmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91
dCBpZiB3ZSdyZSBtYXJraW5nIG9ubHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFs
bCBpbnN0YW5jZXMuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjk4LDcg
QEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBm
aXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGluZzsK
IH0KIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0
Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJv
b2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBDaGFyYWN0ZXJDb3VudCYgb3V0
Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAg
ICBpZiAoIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CkBAIC0zMTMsOCArMzEzLDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAg
ICAvLyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYg
d2UgZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwog
ICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRp
b24gPSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1h
ckRldGFpbC5yYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgb3V0R3JhbW1hckRldGFpbC5yYW5nZS5s
ZW5ndGggPSAwOwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91
dEdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICAKQEAg
LTMzNCw4ICszMzQsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIHdoaWxlICh0b3Rh
bExlbmd0aFByb2Nlc3NlZCA8IHRvdGFsUmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0
ZSB0aHJvdWdoIHRoZSBzZWFyY2ggcmFuZ2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBv
bmUgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGgg
PSBjaGFyYWN0ZXJDb3VudChwYXJhZ3JhcGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3Rh
cnRPZmZzZXQgPSBmaXJzdEl0ZXJhdGlvbiA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAg
ICBpbnQgY3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIENoYXJhY3Rl
ckNvdW50IGN1cnJlbnRTdGFydE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9m
ZnNldCA6IDA7CisgICAgICAgIENoYXJhY3RlckNvdW50IGN1cnJlbnRFbmRPZmZzZXQgPSBjdXJy
ZW50TGVuZ3RoOwogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAv
LyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmln
aW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAg
ICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4K
QEAgLTM0Niw5ICszNDYsOSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RN
aXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAg
U3RyaW5nIHBhcmFncmFwaFN0cmluZyA9IHBsYWluVGV4dChwYXJhZ3JhcGhSYW5nZS5wdHIoKSk7
CiAgICAgICAgICAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpID4gMCkgewogICAgICAg
ICAgICAgICAgIGJvb2wgZm91bmRHcmFtbWFyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50
IHNwZWxsaW5nTG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNl
TG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBncmFtbWFyRGV0YWlsTG9jYXRpb24g
PSAwOworICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IHNwZWxsaW5nTG9jYXRpb24gPSAw
OworICAgICAgICAgICAgICAgIENoYXJhY3RlckNvdW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9
IDA7CisgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hckRldGFpbExvY2F0aW9u
ID0gMDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAwOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IHJlc3VsdHM7CkBAIC0zNjEsNDIgKzM2MSw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwg
YgogICAgICAgICAgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hl
Y2tlcigpLCBwYXJhZ3JhcGhTdHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJlbnRT
ZWxlY3Rpb24pOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZyAmJiByZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYm
IHJlc3VsdC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vi
c3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiByZXN1
bHQucmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiArIHJlc3VsdC5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJhbmdl
LmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJh
Z3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdl
Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQu
dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8IGN1
cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1cnJl
bnRTdGFydE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5s
ZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRp
b24gPj0gMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0
LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9jYXRp
b24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3VsdC5y
YW5nZS5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQs
IHNpbmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0
YWlsIGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJl
c3VsdC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVz
dWx0LmRldGFpbHNbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFp
bC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFp
bC0+bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJl
c3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBjdXJy
ZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRldGFp
bC0+bG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRl
dGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5n
ZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxlbmd0
aCA8PSBjdXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24p
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRleCA9
IGo7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlv
biA9IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kR3JhbW1hciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGZvdW5kR3JhbW1hcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJh
c2VMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxzW2dy
YW1tYXJEZXRhaWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1h
clBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1
bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNl
ID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJlc3Vs
dC5yYW5nZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRH
cmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlm
ICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1t
YXJQaHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExv
Y2F0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVs
bGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBD
aGFyYWN0ZXJDb3VudCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50
U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7
ICptYWtlQm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5k
YXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJv
b2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFy
UGhyYXNlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFz
ZU9mZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ291bnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdy
YW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1t
YXJQaHJhc2VPZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9y
YW5nZS0+c3RhcnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5n
ID0gZmFsc2U7CkBAIC00MjgsMTggKzQyOCwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFy
RGV0YWlscywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBp
bnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3Jh
bW1hckRldGFpbHMsIENoYXJhY3RlckNvdW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgQ2hh
cmFjdGVyQ291bnQgc3RhcnRPZmZzZXQsIENoYXJhY3RlckNvdW50IGVuZE9mZnNldCwgYm9vbCBt
YXJrQWxsKSBjb25zdAogewogICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhl
IGVhcmxpZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChp
ZiBhbnkpLgogICAgIC8vIE9wdGlvbmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2gg
ZGV0YWlsIGluIHRoZSByYW5nZS4KLSAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFy
ID0gLTE7CisgICAgQ2hhcmFjdGVyQ291bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0g
MDsKICAgICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9IC0xOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBncmFtbWFyRGV0YWlscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBH
cmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmZ3JhbW1hckRldGFpbHNbaV07Ci0gICAgICAgIEFTU0VS
VChkZXRhaWwtPmxlbmd0aCA+IDApOwotICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+
PSAwKTsKKyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAg
IEFTU0VSVChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAKLSAgICAgICAg
aW50IGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRp
b24gKyBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICBDaGFyYWN0ZXJDb3VudCBkZXRhaWxTdGFy
dE9mZnNldEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uICsgZGV0YWlsLT5y
YW5nZS5sb2NhdGlvbjsKICAgICAgICAgCiAgICAgICAgIC8vIFNraXAgdGhpcyBkZXRhaWwgaWYg
aXQgc3RhcnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlCiAgICAgICAgIGlmIChk
ZXRhaWxTdGFydE9mZnNldEluUGFyYWdyYXBoIDwgc3RhcnRPZmZzZXQpCkBAIC00NTAsMzAgKzQ1
MCwzMCBAQCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNv
bnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAgICAgICAgYXV0byBiYWRHcmFt
bWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5n
dGgpOwotICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UsIERvY3VtZW50TWFya2Vy
OjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBhdXRvIGJh
ZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLmdldCgpLCB7IGJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5yYW5nZS5sb2Nh
dGlvbiwgZGV0YWlsLT5yYW5nZS5sZW5ndGggfSk7CisgICAgICAgICAgICBiYWRHcmFtbWFyUmFu
Z2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwg
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBkZXRhaWwgb25seSBpZiBp
dCdzIGVhcmxpZXIgdGhhbiBvdXIgY3VycmVudCBjYW5kaWRhdGUgKHRoZSBkZXRhaWxzIGFyZW4n
dCBpbiBhIGd1YXJhbnRlZWQgb3JkZXIpCi0gICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4
IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPmxvY2F0aW9uKSB7
CisgICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExv
Y2F0aW9uU29GYXIgPiBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICBlYXJs
aWVzdERldGFpbEluZGV4ID0gaTsKLSAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25T
b0ZhciA9IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICBlYXJsaWVzdERldGFpbExvY2F0
aW9uU29GYXIgPSBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHJldHVybiBlYXJsaWVzdERldGFpbEluZGV4OwogfQogCi1TdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsIGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAor
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0
YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBDaGFyYWN0ZXJDb3VudCYgb3V0R3JhbW1hclBocmFzZU9m
ZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEluaXRpYWxpemUgb3V0IHBhcmFt
ZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1
cm4uCi0gICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwotICAgIG91dEdyYW1tYXJE
ZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uID0g
MDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA9IDA7CiAgICAgb3V0R3JhbW1h
ckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3Jp
cHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwog
ICAgIAotICAgIFN0cmluZyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBm
aXJzdEJhZEdyYW1tYXJQaHJhc2U7CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0
byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVl
ZHMgdGhhdCBtdWNoIGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zm
c2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBv
cmlnaW5hbCBzZWFyY2ggcmFuZ2UsCkBAIC00ODEsMTEgKzQ4MSwxMSBAQCBTdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1t
YXJEZXRhaWwsCiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNv
cHlSZWYoKSk7CiAgICAgCiAgICAgLy8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2Yg
cGFyYWdyYXBoLCBidXQgc2tpcCBwYXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0
YXJ0IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZz
ZXQgPSAwOyBzdGFydE9mZnNldCA8IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBm
b3IgKENoYXJhY3RlckNvdW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3Jh
cGguY2hlY2tpbmdFbmQoKTsgKSB7CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFt
bWFyRGV0YWlsczsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwog
ICAgICAgICBpbnQgYmFkR3JhbW1hclBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50
LnRleHRDaGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBo
LnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFt
bWFyUGhyYXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9j
bGllbnQudGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQo
KS5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAg
aWYgKCFiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3Jh
bW1hclBocmFzZUxvY2F0aW9uID09IC0xKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBTdHJpbmcgVGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdy
YW1tYXJEZXRhaWwsCiAgICAgICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwg
aW5zdGFuY2VzKS4KICAgICAgICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFk
R3JhbW1hclBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VP
ZmZzZXQgPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFy
dCgpOwotICAgICAgICAgICAgZmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRT
dWJzdHJpbmcoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3Ro
KTsKKyAgICAgICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCku
c3Vic3RyaW5nKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0
aCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBu
b3csIHVubGVzcyB3ZSdyZSBtYXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAo
IW1hcmtBbGwpCkBAIC01MTgsNyArNTE4LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAg
ICAgICBzdGFydE9mZnNldCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQ
aHJhc2VMZW5ndGg7CiAgICAgfQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJh
c2U7CisgICAgcmV0dXJuIGZpcnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBi
b29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3
ICs1MjksNyBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29u
c3QKICAgICAvLyBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkg
Y29ycmVzcG9uZHMgdG8gYSBiYWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9n
b3VzCiAgICAgLy8gdG8gaXNTZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3Vn
aCBmb3IgdGhlcmUgdG8gYmUgc29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdl
LAogICAgIC8vIG9yIG92ZXJsYXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0
bHkgbWF0Y2guCi0gICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291
bnQgZ3JhbW1hclBocmFzZU9mZnNldDsKICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJE
ZXRhaWw7CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFy
KGdyYW1tYXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSAr
NTQyLDE1IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25z
dAogICAgIGlmIChncmFtbWFyUGhyYXNlT2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJU
KGdyYW1tYXJEZXRhaWwubGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFu
Z2UubG9jYXRpb24gPj0gMCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3Ro
ID4gMCk7CiAKICAgICAvLyBCYWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1
bmdyYW1tYXRpY2FsIHdvcmQpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAo
Z3JhbW1hckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdy
YW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFu
Z2UsIGJ1dCBlbmQgb2YgYmFkIGdyYW1tYXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5n
ZQotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9
IGNoYXJhY3RlckNvdW50KG1fcmFuZ2UpKQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxl
bmd0aCAhPSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0
aGlzIGVycm9yICh3aGV0aGVyIG9yIG5vdCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVu
KS4KQEAgLTU5NCw4ICs1OTQsOCBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6
Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNr
VGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgp
LCBjaGVja2luZ1R5cGVzLCByZXN1bHRzLCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAo
YXV0byYgcmVzdWx0IDogcmVzdWx0cykgewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVz
KHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBt
aXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBp
ZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBo
LmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmlu
ZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5n
KCk7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgbV9jbGllbnQudGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxl
ZFdvcmQsIFN0cmluZygpLCBjdXJyZW50U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAg
IG1fY2xpZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdv
cmQpOwpAQCAtNjA4LDEyICs2MDgsMTIgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVs
cGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAg
ICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsK
LSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYg
cGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpKSB7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJh
bmdlKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykg
ewotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGRldGFpbC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAo
cGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5s
b2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJh
ZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24s
IHJlc3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVu
Z3RoID4gMCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+
PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVz
KHsgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwu
cmFuZ2UubGVuZ3RoIH0pKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFy
UGhyYXNlID0gcGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9u
LCByZXN1bHQucmFuZ2UubGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgZ3Vlc3MgOiBkZXRhaWwuZ3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAg
IGd1ZXNzZXMuYXBwZW5kKGd1ZXNzKTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFRleHRDaGVj
a2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZwogewogICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZp
cnN0TWlzc3BlbGxpbmcuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJh
bWV0ZXIiOwogICAgIC8vIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2Uu
Ci0gICAgaW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNl
dDsKICAgICBmaW5kRmlyc3RNaXNzcGVsbGluZyhpZ25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogfQogCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBUZXh0Q2hlY2tp
bmdIZWxwZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBm
ZWF0dXJlIG9mIG9maW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBh
bmQgIm91dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2
ZXJ5IGluc3RhbmNlLgogICAgIEdyYW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0g
ICAgaW50IGlnbm9yZWRPZmZzZXQ7CisgICAgQ2hhcmFjdGVyQ291bnQgaWdub3JlZE9mZnNldDsK
ICAgICBmaW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zm
c2V0LCB0cnVlKTsKIH0KICNlbmRpZgpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBP
cHRpb25TZXQ8CiAgICAgaWYgKGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcikpIHsKICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckNoZWNrTGVuZ3RoID0gdGV4
dC5sZW5ndGgoKTsKICAgICAgICAgZm9yIChhdXRvJiBtaXNwZWxsaW5nIDogbWlzcGVsbGluZ3Mp
Ci0gICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3Jh
bW1hckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGdyYW1t
YXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihncmFtbWFyQ2hlY2tMZW5ndGgsIG1p
c3BlbGxpbmcucmFuZ2UubG9jYXRpb24pOwogICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMo
Y2xpZW50LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNh
bEVycm9ycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaAppbmRleCAzZjM5ZTg2OGQ5OTQxZTViODgxYjA2MTZkZGZjMTZiMzQwMTUxMWQ0Li5i
Mjk5YTY2NjA0YWU3ZDEzNDY1ZTRlNGQ5ZWIyZDEzZWE2ZjMzYWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNiwzNCArMzYsMjgg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRDaGVja2luZ1BhcmFncmFwaChSZWY8UmFuZ2U+
JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKTsKICAgICBleHBsaWNpdCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNoZWNraW5nUmFuZ2UsIFJlZjxSYW5n
ZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWZQdHI8UmFuZ2U+JiYgcGFyYWdyYXBo
UmFuZ2UpOwogCi0gICAgaW50IHJhbmdlTGVuZ3RoKCkgY29uc3Q7Ci0gICAgUmVmPFJhbmdlPiBz
dWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpIGNvbnN0Owot
ICAgIEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKKyAg
ICBDaGFyYWN0ZXJDb3VudCByYW5nZUxlbmd0aCgpIGNvbnN0OworICAgIFJlZjxSYW5nZT4gc3Vi
cmFuZ2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPENoYXJhY3RlckNv
dW50PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgZXhwYW5kUmFu
Z2VUb05leHRFbmQoKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIHRv
IHJldHVybiBhIFN0cmluZ1ZpZXcuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7Ci0K
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3QgaGF2aW5nIHRo
ZSBjYWxsZXIgdXNlIHRleHQoKSBkaXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vic3RyaW5nKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0dXJuIHRleHQo
KS5zdWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQor
ICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CiAKLSAgICBpbnQgY2hlY2tpbmdTdGFydCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0VuZCgp
IGNvbnN0OwotICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0cmluZyBjaGVj
a2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hlY2tpbmdTdGFy
dCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQorICAgIENoYXJhY3RlckNvdW50IGNoZWNraW5nU3Rh
cnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJDb3VudCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAg
IENoYXJhY3RlckNvdW50IGNoZWNraW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBj
aGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tp
bmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUg
cmFuZ2UgaW4gd2hpY2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFu
IGF1dG9tYXRpYyByZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8v
IHRleHQgY2hlY2tpbmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVj
a2luZyByYW5nZS4KLSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0Owot
ICAgIGludCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIENoYXJhY3Rl
ckNvdW50IGF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBDaGFyYWN0ZXJD
b3VudCBhdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVj
a2luZ1JhbmdlTWF0Y2hlcyhpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uID09IGNoZWNraW5nU3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgo
KTsgfQotICAgIGJvb2wgaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50
IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxv
Y2F0aW9uICsgbGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0K
LSAgICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBj
b25zdCB7IHJldHVybiBsb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5n
dGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENo
YXJhY3RlclJhbmdlIHJhbmdlKSBjb25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVj
a2luZ1N0YXJ0KCkgJiYgcmFuZ2UubGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBi
b29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3Qg
eyByZXR1cm4gcmFuZ2UubG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0
aW9uICsgcmFuZ2UubGVuZ3RoID49IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7
IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNv
bnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCA+IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJh
Z3JhcGhSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZh
dGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0
YWJsZSBSZWZQdHI8UmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBt
X3RleHQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PGludD4gbV9jaGVja2luZ0xlbmd0aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRv
bWF0aWNSZXBsYWNlbWVudFN0YXJ0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9t
YXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291
bnQ+IG1fY2hlY2tpbmdTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJhY3RlckNvdW50
PiBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUgT3B0aW9uYWw8Q2hhcmFjdGVyQ291bnQ+
IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPENoYXJh
Y3RlckNvdW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOwogfTsKIAogY2xhc3MgVGV4
dENoZWNraW5nSGVscGVyIHsKQEAgLTg4LDExICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgVGV4dENo
ZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYsIFJhbmdlJik7CiAgICAgflRleHRDaGVja2luZ0hl
bHBlcigpOwogCi0gICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNz
cGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxs
aW5nUmFuZ2UpOwotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihi
b29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5k
T2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAgICBTdHJpbmcgZmlu
ZEZpcnN0TWlzc3BlbGxpbmcoQ2hhcmFjdGVyQ291bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQs
IGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAg
ICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1t
YXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIENoYXJhY3RlckNvdW50JiBvdXRGaXJzdEZvdW5kT2Zm
c2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxN
aXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBV
U0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFt
bWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQs
IGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgQ2hhcmFjdGVyQ291bnQmIG91dEdyYW1tYXJQ
aHJhc2VPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3Jh
bW1hcigpOwogICAgIGJvb2wgaXNVbmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEw
NCw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoKSBjb25zdDsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0
R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1h
clBocmFzZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFy
a0FsbCkgY29uc3Q7CisgICAgaW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9y
PEdyYW1tYXJEZXRhaWw+JiwgQ2hhcmFjdGVyQ291bnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9u
LCBDaGFyYWN0ZXJDb3VudCBzdGFydE9mZnNldCwgQ2hhcmFjdGVyQ291bnQgZW5kT2Zmc2V0LCBi
b29sIG1hcmtBbGwpIGNvbnN0OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKaW5kZXggYmExYjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQw
NjdiNS4uMTM3ZTU0YjFjYjcwNjI4OWU1MjU5MzUzODFlMjFhZDFkMDRjOTI4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjM1MSwxMiArMjM1MSw2IEBAIENo
YXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgYmVoCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdl
PiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rl
ck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVu
dGlyZVJhbmdlSXRlcmF0b3IoZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJy
YW5nZShlbnRpcmVSYW5nZS5vd25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNo
YXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBB
U1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwpAQCAtMjM2NSw4OCArMjM1OSw2NyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRv
cikKICAgICByZXR1cm4gbm9kZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJl
bmRlcmVyKCkpOwogfQogCi1SZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBp
bnQgcmFuZ2VMZW5ndGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorY29uc3RleHBy
IENoYXJhY3RlckNvdW50IGNsYW1wZWRBZGQoQ2hhcmFjdGVyQ291bnQgYSwgQ2hhcmFjdGVyQ291
bnQgYikKIHsKLSAgICBSZWY8UmFuZ2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCku
Y3JlYXRlUmFuZ2UoKTsKLQotICAgIGludCBkb2NUZXh0UG9zaXRpb24gPSAwOwotICAgIGludCBy
YW5nZUVuZCA9IHJhbmdlTG9jYXRpb24gKyByYW5nZUxlbmd0aDsKLSAgICBib29sIHN0YXJ0UmFu
Z2VGb3VuZCA9IGZhbHNlOwotCi0gICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9m
Q29udGVudHMoKnNjb3BlKTsKLQotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UsIGZv
clNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAg
ICAKLSAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2Fy
eSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyODk+LgotICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQuYXRF
bmQoKSkgewotICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7Ci0g
ICAgfQorICAgIGF1dG8gc3VtID0gYSArIGI7CisgICAgcmV0dXJuIHN1bSA+PSBhID8gc3VtIDog
c3RkOjpudW1lcmljX2xpbWl0czxDaGFyYWN0ZXJDb3VudD46Om1heCgpOworfQogCi0gICAgZm9y
ICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgaW50IGxlbmd0aCA9IGl0
LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdlID0gY3JlYXRlTGl2ZVJhbmdl
KGl0LnJhbmdlKCkpOworU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGJlaGF2aW9yKQoreworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBTaW1wbGVSYW5nZSB7IHJh
bmdlLmxvY2F0aW9uID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQsIChyYW5nZS5sb2NhdGlvbiB8
fCByYW5nZS5sZW5ndGgpID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQgfTsKKyAgICBhdXRvIHJh
bmdlRW5kID0gY2xhbXBlZEFkZChyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKKyAgICBD
aGFyYWN0ZXJDb3VudCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoc2Nv
cGUsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8gdGV4dFJ1blJh
bmdlID0gaXQucmFuZ2UoKTsKIAotICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0
aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3NpdGlv
biArIGxlbmd0aDsKLSAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1RleHRQ
b3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CisgICAgICAg
IGF1dG8gZm91bmQgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBib29s
IHsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA+PSBsb2NhdGlvbiAmJiB0YXJn
ZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGxlbmd0aDsKKyAgICAgICAgfTsKKyAgICAgICAgYm9v
bCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOworICAgICAgICBib29sIGZvdW5k
RW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChmb3VuZEVuZCkgewotICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IHRo
ZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0gICAgICAgICAgICAvLyBwb3Np
dGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQg
bm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRl
biBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJlbmRl
cmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50LgorICAgICAgICAg
ICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9uYWxseSB0byBoZWxwIHVzIGV2
ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAgICBpZiAobGVuZ3Ro
ID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVtZW50
KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBpdC5y
YW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChX
VEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVu
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVu
RW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9kZSgp
LCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5lbmQg
PSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRpb24o
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQoKS5k
ZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5l
bmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91bmQg
PSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKS5p
c1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2NhdGlv
biAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3Rh
cnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFuZ2Ut
PnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRl
eHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRDb250
YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91bmRh
cnkgPSBbJl0gKENoYXJhY3RlckNvdW50IHRhcmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50
IHsKKyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVy
KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9
IGRvd25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3Rh
cnQub2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2Nh
dGlvbiA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7
CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAgICAgICAgICByZXN1
bHRSYW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYgKGZv
dW5kRW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigp
LmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVuZCAt
IGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRl
eHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJh
bmdlRW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFu
Z2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+
c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRS
dW5SYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9jVGV4
dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5k
YXJ5KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
ZG9jVGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3RoOwog
ICAgIH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4dFBv
c2l0aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJhbmdl
LT5zZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRP
ZmZzZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCitCb3VuZGFyeVBv
aW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIENo
YXJhY3RlckNvdW50IGxvY2F0aW9uLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3sK
KyAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0s
IGJlaGF2aW9yKS5zdGFydDsKK30KKwogYm9vbCBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5k
TGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UsIHNpemVfdCYg
bG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0aW9uID0gbm90Rm91bmQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAwOTE0ZjdiY2E2MTUwOWZiNWMz
ZGVlYWM5ZDM4Y2U0ZDRjMzg5NjRiLi5mNGU0MDhhMjFhNTU2YTU4Yjg0MjM4YjhlMzJjMTAxYTcz
NmZkNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2lu
Y2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCkBAIC0xMDMsOSArMTA0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBj
b25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQog
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gU2ltcGxlUmFuZ2UsIENoYXJhY3RlclJhbmdl
LCBhbmQgQ2hhcmFjdGVyQ291bnQgYW5kIG1vdmUgb3V0IG9mIHRoaXMgY2xhc3MgdG8gdGhlIHRv
cCBsZXZlbCAoYm90dG9tIG9mIHRoaXMgZmlsZSkuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSog
c2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wgc3BhY2VzRm9y
UmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2Uq
LCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFj
dGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5p
dCgpOwpAQCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhl
YWQgeyB0cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90Owot
Ci1zdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsg
MCB9OwotICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAgfTsKLX07CiAKIFdFQkNPUkVfRVhQ
T1JUIENoYXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09S
RV9FWFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2lt
cGxlUmFuZ2UmLCBDaGFyYWN0ZXJDb3VudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgQ2hhcmFjdGVyUmFuZ2UsIFRleHRJ
dGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFmMzhjNWIxZmJhNGUwODRhYjdjYTYu
LmUyZjhmNTdiMzk1NTE3N2JjZGVmNzNhYTQyYjczNzhjOGFjOTMwMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTk3LDcgKzk3LDcgQEAg
c3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0
aFJhbmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250
ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAgICAgICBpZiAoaGl0TG9jYXRpb24g
Pj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0
UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7
CiAgICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OwotICAgICAgICAgICAgbWFpblJlc3Vs
dFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHRSYW5n
ZUluQ29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UoKmNvbnRleHRSYW5nZSwgKm1ha2VDaGFyYWN0ZXJSYW5nZShyZXN1bHRSYW5nZUluQ29u
dGV4dCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTA4LDkg
KzUwOCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShS
ZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRy
PFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4
IGZyYWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlm
IChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAg
ICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJh
bmdlLCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVl
cnlSYW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFn
bWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENo
YXJhY3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxv
Y2F0aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJh
bmdlLmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zm
c2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQp
CiAgICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAg
ICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rp
b25hcnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5MmMyNGU1MTc4OTA0N2NlZjYyNjNm
YTUwOS4uNmJjNWJlMWZlNzRlMDUxYTNhNmNiMGJjNjFmZjI4OGE0ZTEyNjllOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjg3
LDEwICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogCiAgICAgUmVmUHRyPFJhbmdl
PiBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFw
aEVuZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJh
bmdlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NS
Vkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFu
Z2VUb1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdo
bGlnaHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NS
Vkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFu
Z2VUb1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAotICAgIHJldHVybiB7IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRp
b24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKm1ha2VD
aGFyYWN0ZXJSYW5nZShoaWdobGlnaHRSYW5nZSkpKSwgbmlsIH07CiAKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogCkBAIC0zNTgsMTMgKzM1NywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0
cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVz
dFJlc3VsdAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNz
KCkgcmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmls
XTsKIAogICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFu
Z2UpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUlu
c3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJh
bmdlXSk7Ci0gICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0
UmFuZ2U7CisgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZShhZG9w
dE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0
ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCkuaGlnaGxpZ2h0UmFuZ2UpOwogCi0gICAgaWYg
KGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdl
Lmxlbmd0aCkKKyAgICBpZiAoIWhpZ2hsaWdodFJhbmdlIHx8ICFoaWdobGlnaHRSYW5nZS0+bGVu
Z3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBuaWwgfTsKICAgICAKLSAgICByZXR1cm4g
eyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJh
bmdlLmxvY2F0aW9uLCBoaWdobGlnaHRSYW5nZS5sZW5ndGgpLCBuaWwgfTsKKyAgICByZXR1cm4g
eyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFu
Z2UsICpoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RGljdGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcAppbmRleCBhMmI4MTgyODc3YjI4YWYyOWM4YTA2Mzk1NGQzNzRj
ZDVhYTVhNWRhLi5kM2NmMDZjOTNkMTlkODVlZTUxNDVkMDJhMTJkNTJiODNiYzdhMDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNw
cApAQCAtNzIsMTEgKzcyLDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkK
ICAgICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChyb290LCBlbmRPZmZzZXQgLSByZXN1bHRMZW5ndGgsIGVuZE9mZnNldCk7Ci0gICAgaWYg
KCFyZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnQoKS5tYXJrZXJz
KCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7Cisg
ICAgYXV0byByZXN1bHRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCB7IGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5k
T2Zmc2V0IH0pOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1h
cmtlcihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
TGVnYWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVlMThlMDE3NzllYzYxMTQ3NDMxYzc5NWUzOGE1OGUu
LjY1ZDVkZDU2MmU5MzcwY2ViZmNlNTNjMzIyNWUyNzM1YzU1YjVmM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAt
MTQyLDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkg
Kj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQKIAogICAgIE5TUmFuZ2Ug
cmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShjaGFyYWN0ZXJDb3VudCh7ICpmdWxsQ2hhcmFjdGVy
U3RhcnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0pLCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMgPSBuaWw7Ci0gICAgTlNSYW5nZSBleHRyYWN0ZWRSYW5nZSA9IHRva2VuUmFuZ2UocGxhaW5U
ZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucyk7Cisg
ICAgYXV0byBleHRyYWN0ZWRSYW5nZSA9IG1ha2VDaGFyYWN0ZXJSYW5nZSh0b2tlblJhbmdlKHBs
YWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlvbnMp
KTsKIAogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJldHVybnMge05TTm90Rm91bmQsIDB9
IGlmIGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcuCiAgICAgLy8gRklY
TUUgKDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvIGxlbmd0aCBo
ZXJlLgotICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8ICFl
eHRyYWN0ZWRSYW5nZS5sZW5ndGgpCisgICAgaWYgKCFleHRyYWN0ZWRSYW5nZSB8fCAhZXh0cmFj
dGVkUmFuZ2UtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAKLSAg
ICByZXR1cm4geyBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGV4
dHJhY3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5nZS5sZW5ndGgpLCBvcHRpb25zIH07
CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVs
bENoYXJhY3RlclJhbmdlLCAqZXh0cmFjdGVkUmFuZ2UpKSwgb3B0aW9ucyB9OwogfQogCiBzdGF0
aWMgdm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMoUERGU2VsZWN0aW9uICpzZWxlY3Rp
b24sIE5TSW50ZWdlciBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCwgTlNJbnRlZ2VyJiBjaGFy
YWN0ZXJzQWRkZWRCZWZvcmVTdGFydCwgTlNJbnRlZ2VyJiBjaGFyYWN0ZXJzQWRkZWRBZnRlckVu
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNiMzA3MWJjNDMyOGU0ZWUzZDQ1YzNmMmMzYWJkMmI1
YmYxYWMwOTcuLjlmMGE0MDZkZTQxNDkxODNmODUxMTYxMjRiM2VkNWMxOWIxZWYyZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtODAzLDggKzgwMyw3IEBAIHVuc2lnbmVkIFBhZ2U6OmNvdW50Rmlu
ZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
CiAKIHN0cnVjdCBGaW5kUmVwbGFjZW1lbnRSYW5nZSB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5v
ZGU+IHJvb3Q7Ci0gICAgc2l6ZV90IGxvY2F0aW9uIHsgbm90Rm91bmQgfTsKLSAgICBzaXplX3Qg
bGVuZ3RoIHsgMCB9OworICAgIENoYXJhY3RlclJhbmdlIHJhbmdlOwogfTsKIAogc3RhdGljIHZv
aWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50
UmFuZ2U+JiByYW5nZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQpAQCAtODE2LDEw
ICs4MTUsMTAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBW
ZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHJhbmdlcyBhcmUgc29ydGVkIGJ5IHRo
ZWlyIGVuZCBvZmZzZXRzLCBwZXIgZWRpdGluZyBjb250YWluZXIuCi0gICAgICAgIGF1dG8gZW5k
T2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aDsKKyAgICAgICAg
YXV0byBlbmRPZmZzZXRGb3JSYW5nZSA9IHJhbmdlLnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UucmFu
Z2UubGVuZ3RoOwogICAgICAgICBhdXRvIGluc2VydGlvbkluZGV4ID0gcmFuZ2VMaXN0LnNpemUo
KTsKICAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VMaXN0LnJiZWdpbigpOyBpdGVy
YXRvciAhPSByYW5nZUxpc3QucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRv
IGVuZE9mZnNldEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPmxvY2F0aW9uICsgaXRl
cmF0b3ItPmxlbmd0aDsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0QmVmb3JlSW5zZXJ0aW9u
SW5kZXggPSBpdGVyYXRvci0+cmFuZ2UubG9jYXRpb24gKyBpdGVyYXRvci0+cmFuZ2UubGVuZ3Ro
OwogICAgICAgICAgICAgaWYgKGVuZE9mZnNldEZvclJhbmdlID49IGVuZE9mZnNldEJlZm9yZUlu
c2VydGlvbkluZGV4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaW5zZXJ0
aW9uSW5kZXgtLTsKQEAgLTg2MiwxMSArODYxLDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5n
ZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2Vz
CiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggcmFuZ2VzIHdoZW4gcmVwbGFj
aW5nIHRleHQsIHN1Y2ggdGhhdCBlYXJsaWVyIHRleHQgcmVwbGFjZW1lbnRzIGRvbid0IGNsb2Ji
ZXIgcmVwbGFjZW1lbnQgcmFuZ2VzIGxhdGVyIG9uLgogICAgICAgICBhdXRvJiByYW5nZXMgPSBy
YW5nZXNCeUNvbnRhaW5lck5vZGUuZmluZChjb250YWluZXIpLT52YWx1ZTsKICAgICAgICAgZm9y
IChhdXRvIGl0ZXJhdG9yID0gcmFuZ2VzLnJiZWdpbigpOyBpdGVyYXRvciAhPSByYW5nZXMucmVu
ZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIuZ2V0KCksIGl0ZXJhdG9yLT5s
b2NhdGlvbiwgaXRlcmF0b3ItPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlIHx8IHJh
bmdlLT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpjb250YWluZXIpLCBpdGVy
YXRvci0+cmFuZ2UpOworICAgICAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKHJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwg
RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQsIEVk
aXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vLCBF
ZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC04OTgs
NyArODk3LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZl
Y3RvcjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgICAgICBpZiAocmVwbGFjZW1l
bnRMb2NhdGlvbiA9PSBub3RGb3VuZCB8fCAhcmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3Zl
KGhpZ2hlc3RSb290KSwgcmVwbGFjZW1lbnRMb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGggfSk7
CisgICAgICAgIHJlcGxhY2VtZW50UmFuZ2VzLmFwcGVuZCh7IFdURk1vdmUoaGlnaGVzdFJvb3Qp
LCB7IHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0gfSk7CiAgICAgfQog
CiAgICAgcmVwbGFjZVJhbmdlcygqdGhpcywgcmVwbGFjZW1lbnRSYW5nZXMsIHJlcGxhY2VtZW50
VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRl
eCBkMGQwMGM2YmQ1NzMyNzczYzBhMzdlOGJiNTM2NTdlYjM0NzdkZWIzLi5kMjQ1Y2NkOWVjOTEy
MDJlYzNkMGY0OWVkNTU0YzMwNTBlZTk3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChj
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEwICszMSw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ2hhcmFjdGVyUmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsMTYgKzYyLDE0IEBA
IGVudW0gVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgewogfTsKIAogc3RydWN0IEdyYW1tYXJEZXRh
aWwgewotICAgIGludCBsb2NhdGlvbjsKLSAgICBpbnQgbGVuZ3RoOworICAgIENoYXJhY3RlclJh
bmdlIHJhbmdlOwogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgU3RyaW5nIHVzZXJE
ZXNjcmlwdGlvbjsKIH07CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQgewogICAgIFRleHRD
aGVja2luZ1R5cGUgdHlwZTsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAg
ICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZGV0YWls
czsKICAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGFmMjdiOTlmMzg3YzEyOGFmZmI0MzY5YWI0ZWMzYTljMGJmZmMyOTguLjEz
NGVhMzFmY2U4Zjk4ODkxMTJjYzE0YzA3ZmQxNzRkYmU1YmNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTIwNDQsOSArMjA0NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEludGVybmFsczo6aW52YWxpZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVs
ZW1lbnQmIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmUHRy
PFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQmIHNj
b3BlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxlbmd0aCkKIHsKLSAg
ICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmc2NvcGUs
IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdl
KHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoc2Nv
cGUpLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsKIH0KIAogdW5zaWduZWQgSW50
ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFuZ2UmIHJh
bmdlKQpAQCAtMjA3NSw5ICsyMDc1LDkgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1RleHRV
c2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJu
IHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhyYW5nZSk7CiB9
CiAKLVJlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5nZSYgcmFuZ2UsIGludCByYW5n
ZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCitSZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFu
Z2UoUmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCByYW5nZUxl
bmd0aCkKIHsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgcmFuZ2VM
b2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2
ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoIH0pKTsK
IH0KIAogUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24o
Y29uc3QgUmFuZ2UmIHNlYXJjaFJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHRh
cmdldE9mZnNldCkKQEAgLTI0MzIsOCArMjQzMiw3IEBAIHZvaWQgSW50ZXJuYWxzOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgdW5zaWduZWQgbG9jYXRp
CiAKICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6Tm9uZTsKLSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAg
ICByZXN1bHQubGVuZ3RoID0gbGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9IHsgbG9jYXRpb24s
IGxlbmd0aCB9OwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IGNhbmRpZGF0ZTsKICAgICBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUo
cmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGUyMzUyMzQxZGI4
YzE1ZDQyOWY5Y2VmZDI4OWRmNTIyNzBlNWFjN2MuLmNmNzllNTBjN2I4NDczZjZmZTI1MmY4Y2M3
Njg1OWM2ZjkxNTcxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk1LDEy
ICsyOTUsMTIgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW52YWxpZGF0ZUNv
bnRyb2xUaW50cygpOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCk7
CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50JiBz
Y29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAg
IHVuc2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQmIHNjb3BlLCBjb25zdCBSYW5nZSYp
OwogICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29uc3QgUmFu
Z2UmKTsKICAgICBTdHJpbmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UmKTsKICAgICBTdHJpbmcg
cmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOwotICAg
IFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdl
TGVuZ3RoKTsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgdW5zaWduZWQgcmFuZ2VM
b2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5ndGgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxS
YW5nZT4+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsIGludCB5KTsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oY29uc3QgUmFuZ2Um
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCAxNjJmYWY0OTQ2ZWFhZGQ5ODBlNTc4OWExOGJiZGVjNTU4M2Y2MzIzLi4zNzU3
OTA3NzA0ZjkzMTNlNjg0MTRjMDA1NTkxNzQxZTQ2YTI1ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC0zMjUsMTIgKzMyNSwxMiBAQCBlbnVtIENvbXBvc2l0aW5nUG9s
aWN5IHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0
KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoKTsKIAotICAg
IFJhbmdlPyByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCBsb25nIHJh
bmdlTG9jYXRpb24sIGxvbmcgcmFuZ2VMZW5ndGgpOworICAgIFJhbmdlPyByYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChFbGVtZW50IHNjb3BlLCB1bnNpZ25lZCBsb25nIHJhbmdlTG9jYXRpb24s
IHVuc2lnbmVkIGxvbmcgcmFuZ2VMZW5ndGgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9jYXRpb25G
cm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAgIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJp
bmcgcmFuZ2VBc1RleHQoUmFuZ2UgcmFuZ2UpOwogICAgIERPTVN0cmluZyByYW5nZUFzVGV4dFVz
aW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yKFJhbmdlIHJhbmdlKTsKLSAgICBSYW5nZSBzdWJyYW5n
ZShSYW5nZSByYW5nZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAg
ICBSYW5nZSBzdWJyYW5nZShSYW5nZSByYW5nZSwgdW5zaWduZWQgbG9uZyByYW5nZUxvY2F0aW9u
LCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJh
bmdlPyByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsK
ICAgICBSYW5nZT8gcmFuZ2VPZlN0cmluZ05lYXJMb2NhdGlvbihSYW5nZSByYW5nZSwgRE9NU3Ry
aW5nIHRleHQsIGxvbmcgdGFyZ2V0T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdS
YW5nZS5jcHAKaW5kZXggYjg5OTMzZmZhMWJmMjg0M2MyNmZkYmQ2NmQyOTI2ZWQwMGM1ZjZhMS4u
NzZlZjQ3MjJkNzUxY2Y2ZTU5YWFiOWVkZmFiNjY1NmU3MDRmMTZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC0zMyw0MiArMzMsMzIgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKK1JlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29u
c3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBi
YXNlKQogewotICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgQVNT
RVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CisgICAgV2ViQ29yZTo6Q2hh
cmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5nZS5s
ZW5ndGggfTsKIAotICAgIC8vIFNhbml0aXplIHRoZSBpbnB1dCwgYmVjYXVzZSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHRha2VzIHNpZ25lZCBpbnRlZ2Vycy4KLSAg
ICBpZiAocmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpbnQgbGVuZ3RoOwotICAgIGlmIChyYW5nZS5sZW5ndGggPD0gSU5UX01BWCAmJiByYW5n
ZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA8PSBJTlRfTUFYKQotICAgICAgICBsZW5ndGggPSBz
dGF0aWNfY2FzdDxpbnQ+KHJhbmdlLmxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBsZW5ndGgg
PSBJTlRfTUFYIC0gcmFuZ2UubG9jYXRpb247Ci0KLSAgICBpZiAoZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7CisgICAg
aWYgKGJhc2UgPT0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsKICAg
ICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0aCBp
cyBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CiAgICAgICAgIC8vIGNvbmNlbnRyYXRlIG9u
IGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIC8vIFdlIGhh
dmUgdG8gZG8gdGhpcyBiZWNhdXNlIG9mIHRleHQgZmllbGRzIGFuZCB0ZXh0YXJlYXMuIFRoZSBE
T00gZm9yIHRob3NlIGlzIG5vdAogICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQg
RE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAg
ICAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlv
biBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0
aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgICAgIHJldHVybiBXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLnNlbGVj
dGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJhbmdlLmxvY2F0aW9uKSwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byogZWxlbWVudCA9
IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgp
OworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQoZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID09IEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbzo6UGFyYWdyYXBoKTsKLQotICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpOwotICAgIGlmICghc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChiYXNlID09IEVkaXRpbmdSYW5n
ZUlzUmVsYXRpdmVUbzo6UGFyYWdyYXBoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBt
YWtlQm91bmRhcnlQb2ludChzdGFydE9mUGFyYWdyYXBoKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQo
KSkpOworICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9m
UGFyYWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKSk7
CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
YXV0byYgcm9vdE5vZGUgPSBwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5y
b290Tm9kZSgpOwogCi0gICAgYXV0byBwYXJhZ3JhcGhTdGFydEluZGV4ID0gV2ViQ29yZTo6Y2hh
cmFjdGVyQ291bnQoeyB7IHJvb3ROb2RlLCAwIH0sICpwYXJhZ3JhcGhTdGFydCB9KTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgm
cm9vdE5vZGUsIHBhcmFncmFwaFN0YXJ0SW5kZXggKyByYW5nZS5sb2NhdGlvbiwgbGVuZ3RoKTsK
KyAgICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFn
cmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICBy
ZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdU
Rk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsKIH0K
IAogRWRpdGluZ1JhbmdlIEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiBm
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZl
VG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdGluZ1JhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2Uu
aAppbmRleCA5NDczOGI3Zjg4ZTllMDU4ZGEyZWQyNTRhMTYwNDRlYmM2YjkzMDY5Li5lMDQzZjk3
MjQwZTQyNWVjZDI1YTQyN2VkZDkyN2FjYjc0NWUzNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0
aW5nUmFuZ2UuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNzIEVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbyA6IHVpbnQ4X3QgewogICAgIFBhcmFncmFwaCwKIH07CiAKKy8vIEZJWE1FOiBSZXBs
YWNlIHRoaXMgd2l0aCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4uCiBzdHJ1Y3QgRWRpdGluZ1Jh
bmdlIHsKICAgICBFZGl0aW5nUmFuZ2UoKQogICAgICAgICA6IGxvY2F0aW9uKG5vdEZvdW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
YjMwN2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFhOTE4MC4uNDI1Nzc1NzlmZDdlNWIx
NDhkZjBkMjJiY2NkZDE1MWZlOGVkNDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE4LDYgKzExOCw4IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+CiAjZW5kaWYKIAorLy8gRklYTUU6IFNlZW1zIGxp
a2Ugd2UgY291bGQgdXNlIHN0ZDo6dHVwbGUgdG8gY3V0IGRvd24gdGhlIGNvZGUgYmVsb3cgYSBs
b3QhCisKIG5hbWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpAQCAtMjUwLDYgKzI1MiwyNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
Q2FjaGVRdWVyeU9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FjaGVRdWVyeU9w
dGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVy
UmFuZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZ2UmIHJh
bmdlKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxvY2F0
aW9uKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYW5nZS5sZW5ndGgp
OworfQorCitPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gQXJndW1lbnRDb2RlcjxDaGFyYWN0ZXJS
YW5nZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBsb2NhdGlvbjsKKyAgICBkZWNvZGVyID4+IGxvY2F0aW9uOworICAgIGlmICghbG9jYXRpb24p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4g
bGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAqbG9jYXRpb24sICpsZW5n
dGggfSB9OworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJ
bmZvJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwgaW5mby5pZGVudGlmaWVyOwpAQCAtMjA1Mywy
MiArMjA3NiwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQogCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFy
RGV0YWlsJiBkZXRhaWwpCiB7Ci0gICAgZW5jb2RlciA8PCBkZXRhaWwubG9jYXRpb247Ci0gICAg
ZW5jb2RlciA8PCBkZXRhaWwubGVuZ3RoOworICAgIGVuY29kZXIgPDwgZGV0YWlsLnJhbmdlOwog
ICAgIGVuY29kZXIgPDwgZGV0YWlsLmd1ZXNzZXM7CiAgICAgZW5jb2RlciA8PCBkZXRhaWwudXNl
ckRlc2NyaXB0aW9uOwogfQogCiBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVy
PEdyYW1tYXJEZXRhaWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxpbnQ+IGxvY2F0aW9uOwotICAgIGRlY29kZXIgPj4gbG9jYXRpb247Ci0gICAgaWYgKCFsb2Nh
dGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGludD4g
bGVuZ3RoOwotICAgIGRlY29kZXIgPj4gbGVuZ3RoOwotICAgIGlmICghbGVuZ3RoKQorICAgIE9w
dGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBkZWNvZGVyID4+IHJhbmdlOworICAg
IGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gZ3Vlc3NlczsKQEAgLTIwODEsNyArMjA5OCw3IEBAIE9wdGlvbmFs
PEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92
ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikg
fX07CisgICAgcmV0dXJuIHsgeyAqcmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1
c2VyRGVzY3JpcHRpb24pIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhJiByZXF1ZXN0KQpAQCAtMjExNyw4ICsyMTM0LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFRleHRDaGVja2kKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKLSAgICBlbmNvZGVyIDw8IHJl
c3VsdC5sb2NhdGlvbjsKLSAgICBlbmNvZGVyIDw8IHJlc3VsdC5sZW5ndGg7CisgICAgZW5jb2Rl
ciA8PCByZXN1bHQucmFuZ2U7CiAgICAgZW5jb2RlciA8PCByZXN1bHQuZGV0YWlsczsKICAgICBl
bmNvZGVyIDw8IHJlc3VsdC5yZXBsYWNlbWVudDsKIH0KQEAgLTIxMjksMTQgKzIxNDUsOSBAQCBP
cHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVz
dWx0Pjo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBs
b2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAgIGlmICghbG9jYXRpb24pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsK
LSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBPcHRpb25hbDxD
aGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiByYW5nZTsKKyAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9y
PEdyYW1tYXJEZXRhaWw+PiBkZXRhaWxzOwpAQCAtMjE0OSw3ICsyMTYwLDcgQEAgT3B0aW9uYWw8
VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRl
Y29kZShEZWNvZGVyJgogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZSgqbG9jYXRp
b24pLCBXVEZNb3ZlKCpsZW5ndGgpLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFj
ZW1lbnQpIH19OworICAgIHJldHVybiB7IHsgdHlwZSwgKnJhbmdlLCBXVEZNb3ZlKCpkZXRhaWxz
KSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFVz
ZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJTdHlsZVNo
ZWV0JiB1c2VyU3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAx
Ny4uMWFiYjQxNmMxNGJiZDRhZTViOWM5Nzg4YjdjMDFhMGI1YjYyN2QwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw2ICs2OSw3IEBA
IGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBj
bGFzcyBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHM7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTExNiw2ICsxMTcsNyBAQCBjbGFz
cyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwogCiBzdHJ1Y3Qg
Q2FjaGVRdWVyeU9wdGlvbnM7CitzdHJ1Y3QgQ2hhcmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgQ29tcG9z
aXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGlj
dGlvbmFyeVBvcHVwSW5mbzsKQEAgLTE0Miw3ICsxNDQsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRh
Owogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKICAg
ICAKLXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZs
b2F0PjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjE2LDYgKzIxOCwxMSBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFy
YWN0ZXJSYW5nZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hh
cmFjdGVyUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMGZkMmU1NjI4OTViMzE2M2VmNmU3OTZiODNk
YTBmZTU2MjQxOGMxZS4uMjliZDE4ZjdkYTMyMjBmMTkxNmMxYTc2NjhiNWEzZGVhNGMxNDhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTMz
NjYsMTIgKzMzNjYsOSBAQCBzdGF0aWMgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeQogCiBzdGF0aWMgV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2lu
Z1Jlc3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCAqbnNSZXN1bHQpCiB7Ci0gICAgTlNSYW5nZSBy
ZXN1bHRSYW5nZSA9IFtuc1Jlc3VsdCByYW5nZV07Ci0KICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC50eXBlID0gY29yZVRleHRDaGVja2luZ1R5cGUo
bnNSZXN1bHQucmVzdWx0VHlwZSk7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICBy
ZXN1bHQucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKG5zUmVzdWx0LnJhbmdlKTsKICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBuc1Jlc3VsdC5yZXBsYWNlbWVudFN0cmluZzsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3Jh
bW1hckRldGFpbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWls
LmNwcAppbmRleCA2ZWU0NDFiMTFhMjM5MDVlMzNjMzlkOGE5ZTAwZDM5N2Y5NmY1MmIxLi4wNmQ1
Y2VjYzRlODUwYTUyYjRjNzk0Y2UyMTYwNTY1NDBmOTUwZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcApAQCAtNDQsOCArNDQsOCBAQCBSZWY8V2Vi
R3JhbW1hckRldGFpbD4gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWwmIGdyYQogCiBXZWJHcmFtbWFyRGV0YWlsOjpXZWJHcmFtbWFyRGV0YWlsKGlu
dCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5n
JiB1c2VyRGVzY3JpcHRpb24pCiB7Ci0gICAgbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gbG9j
YXRpb247Ci0gICAgbV9ncmFtbWFyRGV0YWlsLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBtX2dyYW1t
YXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBtX2dyYW1tYXJEZXRhaWwu
cmFuZ2UubGVuZ3RoID0gbGVuZ3RoOwogCiAgICAgc2l6ZV90IG51bUd1ZXNzZXMgPSBndWVzc2Vz
LT5zaXplKCk7CiAgICAgbV9ncmFtbWFyRGV0YWlsLmd1ZXNzZXMucmVzZXJ2ZUNhcGFjaXR5KG51
bUd1ZXNzZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1h
ckRldGFpbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCmlu
ZGV4IGM5Yjc1NTNjZDdiMDhlZWFjN2Q4MjMzOGIxMTBmNGFlZGQ5ZWY2YWMuLjM5MGI0YTVmN2I5
ZWFjNjMxZmQ3MzI0MTY1N2UyMjFkYTVjMTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJHcmFtbWFyRGV0YWlsLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwg
QVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24pOwogICAg
IHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1t
YXJEZXRhaWwmKTsKIAotICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1h
ckRldGFpbC5sb2NhdGlvbjsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2dy
YW1tYXJEZXRhaWwubGVuZ3RoOyB9CisgICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5yYW5nZS5sZW5ndGg7IH0KICAgICBSZWY8QVBJOjpB
cnJheT4gZ3Vlc3NlcygpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAppbmRleCA0
MTA4ZmFkNmQyNjY1N2VhZGU5MDg2YzE2Y2ZkZjIxODEwN2NjYjI1Li4xZGE5MGVlYzRkYjcwYjUx
MGExM2VhYTdkZTNlNTA1YmZkNWY0MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKQEAgLTI2OSw4ICsyNjksOCBAQCBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1
bWVudFRhZyBzcAogCiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZ1Jlc3Vs
dDsKICAgICAgICAgbWlzc3BlbGxpbmdSZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNw
ZWxsaW5nOwotICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5sb2NhdGlvbiA9IG9mZnNldCArIG1p
c3NwZWxsaW5nTG9jYXRpb247Ci0gICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0Lmxlbmd0aCA9IG1p
c3NwZWxsaW5nTGVuZ3RoOworICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC5yYW5nZS5sb2NhdGlv
biA9IG9mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247CisgICAgICAgIG1pc3NwZWxsaW5nUmVz
dWx0LnJhbmdlLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICBwYXJhZ3JhcGhD
aGVja2luZ1Jlc3VsdC5hcHBlbmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQg
Kz0gbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBH
ZW5lcmFsbHksIHdlIGVuZCB1cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUg
dG8gdGhlIGFkamFjZW50IHdvcmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4
dENoZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4NjhkYzQ4ODMwYWZmZGM0
NzFmZS4uZjYwOGM4ZGI1YzYwNjUzMGNhYTU5NmVkNmFiNWU5NWQ2Y2VkZTU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpAQCAtMjEyLDggKzIx
Miw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRP
ZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9u
OwotICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgcmVzdWx0LnJhbmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShtaXNzcGVsbGVkUmFuZ2UpOwog
ICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJlc3VsdCkpOwogCiAgICAgICAgIG9mZnNl
dFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uICsgbWlzc3BlbGxlZFJhbmdlLmxlbmd0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRl
eCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRmZmI4NGVlNjM0Li5hYzNiZWUwMGIxNjU5
M2FjZjQ1NzFlYTk5YzExMDE2Y2MxNGY0NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQsMjIgKzMzNCwyMCBAQCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxE
b2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dyYXBoeTpOVUxMCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5n
UmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdl
ID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJl
c3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3Vs
dFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5y
YW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9ICptYWtlQ2hhcmFj
dGVyUmFuZ2UoaW5jb21pbmdSZXN1bHQucmFuZ2UpOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9
PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVz
dWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2Nh
dGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7Cisg
ICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1Rl
eHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1
bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1t
YXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0
aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAg
ICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwg
ZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRl
eHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAg
ICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVl
IHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1Jhbmdl
Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5T
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5T
UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9ICptYWtlQ2hhcmFj
dGVyUmFuZ2UoZGV0YWlsTlNSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNj
cmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2Ny
aXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0
YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAg
Zm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTM3MCwzNiArMzY3LDMxIEBAIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFw
aChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNr
aW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNU
ZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tp
bmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4
dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5y
YW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2lu
Y29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFj
ZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5y
ZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hl
Y2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0
UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2Uu
bGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAg
ICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJp
bmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAt
NDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAogdm9pZCBUZXh0Q2hl
Y2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcs
IGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3Jh
bW1hckRldGFpbCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNvcnJlY3Rpb25z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBb
Y29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBhdXRvIGNvcnJlY3Rpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvJiBndWVz
cyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0
cmluZyA9IGd1ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJp
bmddOwogICAgIH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3Jh
bW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5n
ICpncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247
Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZ3JhbW1hckRldGFpbERpY3QgPSBhZG9wdE5T
KFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZh
bHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRl
c2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLmdldCgpLCBO
U0dyYW1tYXJDb3JyZWN0aW9ucywgbmlsXSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNT
dHJpbmcgPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU0RpY3Rpb25hcnkg
KmRldGFpbCA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlw
dGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25z
IDogY29ycmVjdGlvbnMuZ2V0KCksCisgICAgfTsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFk
R3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3QuZ2V0KCldOworICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdy
YW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsKIH0KIAogdm9pZCBU
ZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3BlbGxEb2N1bWVudFRhZyBzcGVsbERvY3Vt
ZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJf
dCBpbnNlcnRpb25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENh
cGl0YWxpemF0aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5tbQppbmRleCBmMThjYWE3MmNiZDk2NTMxNzU1ZTkyZWNmYjIwZWY0ZGI4Y2E1M2FmLi43MGEz
OTAzNWQ1OGM4MTJjMmNiMDEzMTlmNWExNmM2ZmE1OWY1ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIE9wdGlvbmFsPFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eTo6UmFuZ2VBbmRPZmZzZXQ+IFRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94CiAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShyb290LCByYW5nZS5nZXQoKSwgc2VsZWN0aW9uTG9jYXRpb24sIHNlbGVjdGlvbkxlbmd0aCk7
CiAgICAgc2VsZWN0aW9uTG9jYXRpb24gKz0gb2Zmc2V0OwogCi0gICAgcmV0dXJuIHt7IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgc2VsZWN0aW9uTG9jYXRp
b24sIGxlbmd0aCksIHNlbGVjdGlvbkxvY2F0aW9uIH19OworICAgIHJldHVybiB7eyByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb24sIGxlbmd0aCksIHNlbGVjdGlv
bkxvY2F0aW9uIH19OwogfQogCiB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVw
bGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRTdHJpbmcs
IGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0
aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0
aCkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6
cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbgogCiAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID0gbG9jYXRpb25JblJv
b3QgLSBzZWxlY3Rpb25PZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVTZWxlY3Rp
b24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2NhdGlvbkluUm9vdCArIHJlbGF0
aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0
b3JlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uocm9vdCwgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUsIDAp
OwogICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9uVG9S
ZXN0b3JlLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxh
dGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAgICB9CiAKICAgICBbYW5ub3Rh
dGVkU3RyaW5nLnN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgw
LCBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdKSBvcHRpb25zOjAgdXNpbmdCbG9jazpe
KE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdLZXksIGlkPiAqYXR0cnMsIE5TUmFuZ2Ug
YXR0cmlidXRlUmFuZ2UsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVDb3Jl
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIGxv
Y2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0dHJpYnV0ZVJhbmdlLmxl
bmd0aCk7CisgICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKHJvb3QsIGxvY2F0aW9uSW5Sb290ICsgYXR0cmlidXRlUmFuZ2UubG9jYXRpb24sIGF0
dHJpYnV0ZVJhbmdlLmxlbmd0aCk7CiAgICAgICAgIGlmICghYXR0cmlidXRlQ29yZVJhbmdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTksNyArMTk5LDcgQEAgQXR0cmlidXRlZFN0cmlu
ZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Q
b3NpdGlvbnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYg
dGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRD
aGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gc3VicmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdl
KSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5z
dGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKGN1cnJlbnRUZXh0UmFuZ2UpLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpOwog
CiAgICAgICAgICAgICBzaXplX3Qgc3VicmFuZ2VMb2NhdGlvbjsKICAgICAgICAgICAgIHNpemVf
dCBzdWJyYW5nZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZDJiM2ExNGI1OWE0ZTc4ODQyN2NmOTE0YjdiMjMyZGExMGMyODA1YS4u
N2FiMTA2YTFiOTFkNjYzZDA2NjZjZTU2ZmRhMmQwNTRjYzk3M2FiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU0MjAsMjAgKzU0MjAsMjMg
QEAgdm9pZCBXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyhpbnQ2NF90IG9mZnNldCwgdW5zaWdu
ZWQgY2hhcmFjdGVyQ291bnQpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gdGFyZ2V0RnJhbWUt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGF1dG8mIHNlbGVjdGlvbiA9IHRhcmdldEZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9u
LnZpc2libGVTdGFydCgpOwogICAgIGF1dG8gc3Vycm91bmRpbmdSYW5nZSA9IG1ha2VSYW5nZShz
dGFydE9mRWRpdGFibGVDb250ZW50KHNlbGVjdGlvblN0YXJ0KSwgc2VsZWN0aW9uU3RhcnQpOwot
ICAgIGF1dG8gY3Vyc29yUG9zaXRpb24gPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCgqc3Vycm91
bmRpbmdSYW5nZSk7Ci0gICAgYXV0byYgcm9vdE5vZGUgPSBzdXJyb3VuZGluZ1JhbmdlLT5zdGFy
dENvbnRhaW5lcigpLnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7Ci0gICAgYXV0byBzZWxlY3Rpb25S
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoJnJvb3ROb2Rl
LCBjdXJzb3JQb3NpdGlvbiArIG9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwotICAgIGlmICghc2Vs
ZWN0aW9uUmFuZ2UpCisgICAgaWYgKCFzdXJyb3VuZGluZ1JhbmdlKQogICAgICAgICByZXR1cm47
CiAKKyAgICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBDaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJS
YW5nZTsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sb2NhdGlvbiA9IFdlYkNvcmU6OmNoYXJhY3RlckNv
dW50KCpzdXJyb3VuZGluZ1JhbmdlKSArIG9mZnNldDsKKyAgICBjaGFyYWN0ZXJSYW5nZS5sZW5n
dGggPSBjaGFyYWN0ZXJDb3VudDsKKyAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhyb290Tm9kZSksIGNo
YXJhY3RlclJhbmdlKTsKKwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxl
Y3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqc2VsZWN0aW9uUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklO
SVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoZmFsc2Up
OwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZh
bHNlKTsKICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYTg3ZGJlZjU0NzIw
NzE1MTc1Y2U3MjU2NGM2YThmNWFhYzE0MWM3Yi4uNWY0NTU2ZDM0Zjk3NTMxMjQyOWEyNWNjMzNi
MDg4YzM5Nzg4ZTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQwNzYsOCArNDA3NiwxMiBAQCB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3Qg
bGVuZ3RoRGVsdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVj
dGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkp
KQotICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQo
KSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5n
OjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIENoYXJhY3RlclJhbmdlIG5ld1NlbGVjdGlvblJh
bmdlOworICAgIG5ld1NlbGVjdGlvblJhbmdlLmxvY2F0aW9uID0gbmV3U2VsZWN0aW9uTG9jYXRp
b24udW5zYWZlR2V0KCk7CisgICAgbmV3U2VsZWN0aW9uUmFuZ2UubGVuZ3RoID0gbmV3U2VsZWN0
aW9uTGVuZ3RoLnVuc2FmZUdldCgpOworCisgICAgYXV0byByZXNvbHZlZFJhbmdlID0gcmVzb2x2
ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIG5l
d1NlbGVjdGlvblJhbmdlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZWRSYW5nZSkucHRyKCksIERPV05TVFJFQU0sIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVk
KTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBAIC00MTkyLDE2ICs0MTk2LDE1IEBA
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0
aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBy
b290Q29udGFpbmVyTm9kZSA9IHJvb3ROb2RlLT5pc0NvbnRhaW5lck5vZGUoKSA/IGRvd25jYXN0
PENvbnRhaW5lck5vZGU+KHJvb3ROb2RlLmdldCgpKSA6IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7
CiAgICAgICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9v
dENvbnRhaW5lck5vZGUuZ2V0KCksIHJhbmdlT2ZJbnRlcmVzdC5nZXQoKSwgcmFuZ2VPZkludGVy
ZXN0TG9jYXRpb24sIHJhbmdlT2ZJbnRlcmVzdExlbmd0aCk7CiAKLSAgICAgICAgQ2hlY2tlZFNp
emUgbWlkcG9pbnRMb2NhdGlvbiB7IHJhbmdlT2ZJbnRlcmVzdExvY2F0aW9uIH07CisgICAgICAg
IENoZWNrZWQ8Q2hhcmFjdGVyQ291bnQsIFJlY29yZE92ZXJmbG93PiBtaWRwb2ludExvY2F0aW9u
IHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKICAgICAgICAgbWlkcG9pbnRMb2NhdGlvbiAr
PSByYW5nZU9mSW50ZXJlc3RMZW5ndGggLyAyOwogICAgICAgICBpZiAobWlkcG9pbnRMb2NhdGlv
bi5oYXNPdmVyZmxvd2VkKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pZHBvaW50
UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3RDb250
YWluZXJOb2RlLmdldCgpLCBtaWRwb2ludExvY2F0aW9uLnVuc2FmZUdldCgpLCAwKTsKKyAgICAg
ICAgYXV0byBtaWRwb2ludCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyZXNvbHZlQ2hh
cmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290Q29udGFp
bmVyTm9kZSksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0KCkpKTsKIAotICAgICAgICBhdXRv
IG1pZHBvaW50ID0gbWlkcG9pbnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgICAgICBzdGFy
dE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBzdGFydE9mV29yZChtaWRwb2ludCk7CiAg
ICAgICAgIGlmIChzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPCByYW5nZU9mSW50
ZXJlc3RTdGFydCkgewogICAgICAgICAgICAgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0
aW9uID0gZW5kT2ZXb3JkKG1pZHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjYTQ3OTMx
MDU0YjgwMjYyNjg3M2UzZjUzZmI1ZWUzMDU0ZTk4NTEzLi4zYjk0NjMwNGRmYjc1MjExNDEzZTlm
OGQxMTA3ZjZmODc2NTk5ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC04NjUsMTIgKzg2NSwx
MSBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1
bHRzID0gW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIGNoZWNrU3BlbGxpbmdP
ZlN0cmluZzpzdHJpbmcuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKICAg
ICBmb3IgKE5TVmFsdWUgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAg
ICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlVmFsdWVdOwot
ICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiByZXN1
bHRSYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdl
VmFsdWUubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jl
c3VsdC5yYW5nZVZhbHVlLmxlbmd0aCA+IDApOwogICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
cmVzdWx0OwogICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OwotICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnJh
bmdlID0gKm1ha2VDaGFyYWN0ZXJSYW5nZShpbmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlKTsKICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICB9CiAKQEAgLTkzOSwxMSArOTM4LDkg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcg
dGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKICAgICAgICAgR3JhbW1hckRldGFpbCBncmFtbWFy
RGV0YWlsOwogICAgICAgICBOU1ZhbHVlICpkZXRhaWxSYW5nZUFzTlNWYWx1ZSA9IFtkZXRhaWwg
b2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclJhbmdlXTsKICAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdl
QXNOU1ZhbHVlKTsKLSAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdl
QXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwotICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sb2Nh
dGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKGRldGFpbE5TUmFuZ2UubGVuZ3Ro
ID4gMCk7Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSBkZXRhaWxOU1JhbmdlLmxv
Y2F0aW9uOwotICAgICAgICBncmFtbWFyRGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVu
Z3RoOworICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sb2Nh
dGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGRldGFpbFJhbmdlQXNOU1ZhbHVl
LnJhbmdlVmFsdWUubGVuZ3RoID4gMCk7CisgICAgICAgIGdyYW1tYXJEZXRhaWwucmFuZ2UgPSAq
bWFrZUNoYXJhY3RlclJhbmdlKGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWUpOwogICAg
ICAgICBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5
Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAgICAgIE5TQXJyYXkgKmd1ZXNzZXMgPSBb
ZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgIGZvciAo
TlNTdHJpbmcgKmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05NTcsMjIgKzk1NCwyMCBAQCBzdGF0aWMg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMs
IE9wdGlvblNldDxUZXh0QwogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CiAKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNv
bWluZ1Jlc3VsdHMpIHsKLSAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jl
c3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2lu
Y29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwotICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2UubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sZW5ndGgg
PiAwKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlLmxvY2F0aW9uICE9IE5T
Tm90Rm91bmQpOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubGVuZ3RoID4g
MCk7CisgICAgICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGluY29t
aW5nUmVzdWx0LnJhbmdlKTsKICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBl
OjpTcGVsbGluZykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAg
ICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hciAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAg
ICAgTlNBcnJheSAqZGV0YWlscyA9IFtpbmNvbWluZ1Jlc3VsdCBncmFtbWFyRGV0YWlsc107CiAg
ICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAg
ICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAg
ICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1
bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpp
bmNvbWluZ0RldGFpbCBpbiBkZXRhaWxzKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluY29t
aW5nRGV0YWlsKTsKICAgICAgICAgICAgICAgICBHcmFtbWFyRGV0YWlsIGRldGFpbDsKQEAgLTk4
MSw4ICs5NzYsNyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0Fy
cmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNldDxUZXh0QwogICAgICAgICAgICAgICAgIE5T
UmFuZ2UgZGV0YWlsTlNSYW5nZSA9IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZv
dW5kKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsK
LSAgICAgICAgICAgICAgICBkZXRhaWwubG9jYXRpb24gPSBkZXRhaWxOU1JhbmdlLmxvY2F0aW9u
OwotICAgICAgICAgICAgICAgIGRldGFpbC5sZW5ndGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0aDsK
KyAgICAgICAgICAgICAgICBkZXRhaWwucmFuZ2UgPSAqbWFrZUNoYXJhY3RlclJhbmdlKGRldGFp
bE5TUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBbaW5j
b21pbmdEZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbl07CiAgICAg
ICAgICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JL
ZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOwogICAgICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcg
Kmd1ZXNzIGluIGd1ZXNzZXMpCkBAIC05OTMsMzYgKzk4NywzMSBAQCBzdGF0aWMgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIE9wdGlvblNl
dDxUZXh0QwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdU
eXBlTGluayAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6Okxpbmsp
KSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rOwotICAgICAgICAgICAgcmVzdWx0
LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVu
Z3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVz
dWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbW2luY29taW5nUmVz
dWx0IFVSTF0gYWJzb2x1dGVTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVz
dWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlw
ZVF1b3RlICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUp
KSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZTsKLSAgICAgICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJl
c3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVz
dWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVE
YXNoICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6RGFzaCkpIHsK
ICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1
bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7Ci0gICAgICAgICAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRS
YW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCBy
ZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFj
ZW1lbnQgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNl
bWVudCkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OwotICAgICAg
ICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAg
ICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0
LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBb
aW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENo
ZWNraW5nVHlwZUNvcnJlY3Rpb24gJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tp
bmdUeXBlOjpDb3JyZWN0aW9uKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTEwNDksMTYgKzEwMzgs
MTggQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gV2ViRWRpdG9yQ2xpZW50OjpjaGVja1Rl
eHRPZlBhcmFncmFwaChTdHJpbmdWaWV3IHN0cmkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQ
aHJhc2UsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJEZXRhaWwpCiB7Ci0gICAgTlNNdXRh
YmxlQXJyYXkqIGNvcnJlY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3JhbW1hckRldGFpbC5ndWVzc2VzLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIE5TU3RyaW5nKiBndWVzcyA9IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nlc1tpXTsKLSAg
ICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CisgICAgTlNNdXRhYmxlQXJyYXkg
KmNvcnJlY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKGF1dG8mIGd1
ZXNzIDogZ3JhbW1hckRldGFpbC5ndWVzc2VzKSB7CisgICAgICAgIE5TU3RyaW5nICpndWVzc05T
U3RyaW5nID0gZ3Vlc3M7CisgICAgICAgIFtjb3JyZWN0aW9ucyBhZGRPYmplY3Q6Z3Vlc3NOU1N0
cmluZ107CiAgICAgfQotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3Jh
bW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5n
KiBncmFtbWFyVXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247
Ci0gICAgTlNEaWN0aW9uYXJ5KiBncmFtbWFyRGV0YWlsRGljdCA9IFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFy
UmFuZ2VdLCBOU0dyYW1tYXJSYW5nZSwgZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFy
VXNlckRlc2NyaXB0aW9uLCBjb3JyZWN0aW9ucywgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF07
Ci0gICAgCi0gICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNw
ZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFt
bWFyRGV0YWlsRGljdF07CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBncmFt
bWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkg
PSBAeworICAgICAgICBOU0dyYW1tYXJSYW5nZSA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdy
YW1tYXJEZXRhaWwucmFuZ2VdLAorICAgICAgICBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24gOiBk
ZXNjcmlwdGlvbk5TU3RyaW5nLAorICAgICAgICBOU0dyYW1tYXJDb3JyZWN0aW9ucyA6IGNvcnJl
Y3Rpb25zLAorICAgIH07CisgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRl
dGFpbDpkaWN0aW9uYXJ5XTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxs
aW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKQEAg
LTExOTQsNyArMTE4NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCBhCiAgICAgaWYgKFt2aWV3
IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKICAgICAgICAgdW5zaWduZWQg
cmVwbGFjZW1lbnRMZW5ndGggPSBhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5sZW5ndGgo
KTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50TGVuZ3RoID4gMCkgewotICAgICAgICAgICAgTlNS
YW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUubG9jYXRp
b24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKKyAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5n
ZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRlLnJhbmdlLmxvY2F0aW9uLCByZXBsYWNl
bWVudExlbmd0aCk7CiAgICAgICAgICAgICBOU1JhbmdlIHNvZnRTcGFjZVJhbmdlID0gTlNNYWtl
UmFuZ2UoTlNNYXhSYW5nZShyZXBsYWNlZFJhbmdlKSAtIDEsIDEpOwogICAgICAgICAgICAgaWYg
KGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LmVuZHNXaXRoKCIgIikpCiAgICAgICAgICAg
ICAgICAgWyhXZWJIVE1MVmlldyAqKXZpZXcgX3NldFNvZnRTcGFjZVJhbmdlOnNvZnRTcGFjZVJh
bmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IGVkNWVkMjA0MDI5NTU3OGViZTk5ZWI4MDc3NDJkN2UwNmIwNDllMzAuLmRkODdhZDQ5YTM1YTgy
ZTMyZGYyYmNlY2Y1ZGUyZmU3NWZiNjg0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODIxLDEwICs4MjEsOSBAQCAtIChSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiAKIC0gKFJlZlB0
cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFu
Z2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvCiB7
Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQorICAgIGF1dG8gcmFuZ2UgPSBX
ZWJDb3JlOjptYWtlQ2hhcmFjdGVyUmFuZ2UobnNyYW5nZSk7CisgICAgaWYgKCFyYW5nZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG5zcmFuZ2UubGVuZ3RoID4gSU5UX01BWCB8
fCBuc3JhbmdlLmxvY2F0aW9uICsgbnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYKQotICAgICAgICBu
c3JhbmdlLmxlbmd0aCA9IElOVF9NQVggLSBuc3JhbmdlLmxvY2F0aW9uOwogCiAgICAgaWYgKHJh
bmdlSXNSZWxhdGl2ZVRvID09IFdlYlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpIHsK
ICAgICAgICAgLy8gT3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIGNvZGUgcGF0
aCBpcyBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKQEAgLTgzNiw3ICs4MzUsNyBA
QCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlu
c3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOgogICAgICAgICBhdXRvKiBlbGVtZW50ID0gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChlbGVtZW50LCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7
CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksICpyYW5nZSkpOwogICAgIH0K
IAogICAgIEFTU0VSVChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6
UGFyYWdyYXBoKTsKQEAgLTg0NCwxMCArODQzLDkgQEAgLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoK
ICAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFn
cmFwaChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJl
ZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdl
YkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQg
fSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgbnNyYW5nZS5sb2NhdGlv
biwgbnNyYW5nZS5sZW5ndGgpOworICAgIGF1dG8gc2NvcGVFbmQgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9v
dE5vZGUoKSkuZW5kOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCAq
cmFuZ2UpKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilfY29udmVydE5TUmFuZ2VUb0RPTVJhbmdlOihO
U1JhbmdlKW5zcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCA1ZGRmMjNlY2YzY2JhNWI5YmM5ZWE5ZjI2ZWVkY2YwMzc5OTU2ODhjLi42ZjkxZWZi
OWE5MDFhZTFjY2JhZTU2YzliMmZkOTljMTQwOTk1MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC03Mjc4LDEyICs3Mjc4LDkgQEAgY29uc3RleHBy
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hl
Y2tpbmdUeXBlIHR5cGUKIAogc3RhdGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0
Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1
bHQgKm5zUmVzdWx0KQogewotICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBuc1Jlc3VsdC5yYW5n
ZTsKLQogICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0
LnR5cGUgPSBjb3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9ICpXZWJDb3JlOjptYWtl
Q2hhcmFjdGVyUmFuZ2UobnNSZXN1bHQucmFuZ2UpOwogICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9
IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCA4ZGYxYzcyMWJiNjhmNmUwMTAxN2U2NTUyNGM5M2MwZGZlZTI4
ODQ2Li40Njk3OWQ3MWFmZjc1MTlhZTBhNGFlZjkyMWY5ZGM5ZThhNTA0MWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTc5MCwxNCArNzkwLDE5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWls
CiAgICAgICAgIGlmIChlbnVtRGV0YWlsc09iai0+TmV4dCgxLCAmZGV0YWlsT2JqLCAmZmV0Y2hl
ZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEdyYW1tYXJEZXRhaWwg
ZGV0YWlsOwotICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+bGVuZ3RoKCZkZXRhaWwubGVu
Z3RoKSkpCisgICAgICAgIGludCBsZW5ndGg7CisgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2Jq
LT5sZW5ndGgoJmxlbmd0aCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChG
QUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmZGV0YWlsLmxvY2F0aW9uKSkpCisgICAgICAgIGlu
dCBsb2NhdGlvbjsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxvY2F0aW9uKCZsb2Nh
dGlvbikpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEJTdHJpbmcgdXNlckRlc2M7
CiAgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT51c2VyRGVzY3JpcHRpb24oJnVzZXJEZXNj
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHcmFtbWFyRGV0YWlsIGRldGFp
bDsKKyAgICAgICAgZGV0YWlsLnJhbmdlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGRl
dGFpbC5yYW5nZS5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRp
b24gPSBTdHJpbmcodXNlckRlc2MsIFN5c1N0cmluZ0xlbih1c2VyRGVzYykpOwogCiAgICAgICAg
IENPTVB0cjxJRW51bVNwZWxsaW5nR3Vlc3Nlcz4gZW51bUd1ZXNzZXNPYmo7CkBAIC04MjYsNyAr
ODMxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY28KICAgICAgICAgZ3Vlc3Nlc0JTVFJzLmFw
cGVuZChndWVzcy5yZWxlYXNlKCkpOwogICAgIH0KICAgICBCU3RyaW5nIHVzZXJEZXNjcmlwdGlv
bkJTVFIoZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7Ci0gICAgZWQtPnVwZGF0ZVNwZWxsaW5nVUlX
aXRoR3JhbW1hclN0cmluZyhCU3RyaW5nKHN0cmluZyksIGRldGFpbC5sb2NhdGlvbiwgZGV0YWls
Lmxlbmd0aCwgdXNlckRlc2NyaXB0aW9uQlNUUiwgZ3Vlc3Nlc0JTVFJzLmRhdGEoKSwgKGludCln
dWVzc2VzQlNUUnMuc2l6ZSgpKTsKKyAgICBlZC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFu
Z2UubGVuZ3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50
KWd1ZXNzZXNCU1RScy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBndWVz
c2VzQlNUUnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIFN5c0ZyZWVTdHJpbmcoZ3Vlc3Nlc0JTVFJz
W2ldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZDcwNTNlYzMyMDRj
YWFlZTBlNDlhODFlMTViZTExMjgzNDk4Y2RjNC4uMTdhZTViMGE1NjhjNjM3NTU3YTQ1MmM1NWFk
MzMyOGI5MzcxYmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTc3NjEs
MjMgKzc3NjEsMjEgQEAgSFJFU1VMVCBXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUZvclRlc3RpbmcoVUlOVCBsb2NhdGlvbiwgVUlOVCBsZW5ndGgKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEludFJlY3QgcmVzdWx0SW50UmVjdDsKLSAg
ICByZXN1bHRJbnRSZWN0LnNldExvY2F0aW9uKEludFBvaW50KDAsIDApKTsKLSAgICByZXN1bHRJ
bnRSZWN0LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7Ci0gICAgCi0gICAgaWYgKGxvY2F0aW9uID4g
SU5UX01BWCkKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCBs
b2NhdGlvbiArIGxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSBs
b2NhdGlvbjsKLSAgICAgICAgCi0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24o
KS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0
aCk7CisKKyAgICBDaGFyYWN0ZXJSYW5nZSBjaGFyYWN0ZXJSYW5nZTsKKyAgICBjaGFyYWN0ZXJS
YW5nZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgIGNoYXJhY3RlclJhbmdlLmxlbmd0aCA9IGxl
bmd0aDsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCBj
aGFyYWN0ZXJSYW5nZSkpOwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKLSAgICAgCisKICAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS5lZGl0b3IoKS5maXJzdFJlY3RG
b3JSYW5nZShyYW5nZS5nZXQoKSk7Ci0gICAgcmVzdWx0SW50UmVjdCA9IGZyYW1lLnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKKyAgICBJbnRSZWN0IHJlc3VsdEludFJlY3QgPSBmcmFt
ZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAKICAgICByZXN1bHRJbnRSZWN0LnNj
YWxlKGRldmljZVNjYWxlRmFjdG9yKCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDgxODAxNmNlNDc2ZDZlNzc4OWM2
YTBkZWNiMWRjNzMyZTM1NGQxMS4uNzc4NzBmYzc4NzM2Y2UzOTcxZmFmOTRlYjc5ZWI2NjAxYjBj
MTgzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAzLTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBGaXggTWFjLXNwZWNp
ZmljIGZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTMxNAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTc5OTA3MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRl
eC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWw6Cisg
ICAgICAgIFVwZGF0ZWQgdG8gZXhwZWN0IHRleHRNYXJrZXJGb3JJbmRleCB0byBjbGFtcCByYXRo
ZXIgdGhhbiByZXR1cm5pbmcgc29tZXRoaW5nIGludmFsaWQuCisKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
cGxhaW4uaHRtbDoKKyAgICAgICAgVXBkYXRlZCB0ZXN0IG91dHB1dCB0byBpbmNsdWRlIHdoYXQg
aXMgYmVpbmcgdGVzdGVkLCBub3QganVzdCB0aGUgdGVzdCByZXN1bHQuCisgICAgICAgIFVwZGF0
ZWQgdGVzdCByZXN1bHRzIHRvIGV4cGVjdCBjbGFtcGluZyByYXRoZXIgdGhhbiBhbiBlbXB0eSBy
ZWN0YW5nbGUsIGZvciB2YWx1ZXMKKyAgICAgICAgdGhhdCBhcmUgb3V0IG9mIGJvdW5kcy4gQWxz
byBnb3QgcmlkIG9mIGR1bXBpbmcgb2YgZWlkdGluZyBjYWxsYmFja3Mgc2luY2UgdGhlcmUgaXMK
KyAgICAgICAgbm8gcmVhc29uIHRvIGluY2x1ZGUgdGhlbSBpbiB0aGlzIHRlc3QuCisKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczogU2luY2Ugb3VyIG9sZGVzdCBzdXBwb3J0
ZWQgcmVsZWFzZSBpcyBNb2phdmUsIGRlbGV0ZWQKKyAgICAgICAgYWxsIHJ1bGVzIHdpdGggU2ll
cnJhIG9yIEhpZ2hTaWVycmEgY29uZGl0aW9uYWxzIHNpbmNlIHRob3NlIGNvbmRpdGlvbnMgYXJl
IGFsd2F5cyBmYWxzZSwKKyAgICAgICAgYW5kIHJlbW92ZWQgYW55IGNvbmRpdGlvbmFscyB0aGF0
IHNhaWQgU2llcnJhKywgSGlnaFNpZXJyYSssIG9yIE1vamF2ZSsgYmVjYXVzZSB0aG9zZQorICAg
ICAgICBjb25kaXRpb25zIGFyZSBhbHdheXMgdHJ1ZS4gT25lIHRlc3QsIGZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sLCBoYWQgcmVzdWx0cworICAgICAgICBjaGVja2VkIGlu
IHRoYXQgd2VyZSBjb3JyZWN0IGZvciBNb2phdmUgYnV0IGluY29ycmVjdCBmb3IgQ2F0YWxpbmEu
IEZvciB0aGF0IHRlc3QsIHRoZQorICAgICAgICByZXN1bHRzIGFyZSBub3cgY29ycmVjdCBmb3Ig
Q2F0YWxpbmEsIHNvIHVwZGF0ZWQgZXhwZWN0YXRpb25zIGZvciB0aGF0LgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4gQWxzbyBzb21lIHRlc3Rz
IHRoYXQgY2xhaW1lZCBJbWFnZU9ubHlGYWlsdXJlCisgICAgICAgIGFyZSBmbGFreSBhbmQgc29t
ZXRpbWVzIHBhc3NpbmcsIHNvIG1hcmtlZCB0aGVtIGZvciBlaXRoZXIgUGFzcyBvciBJbWFnZU9u
bHlGYWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IERp
dHRvLiBBbHNvIHNvbWUgdGVzdHMgbWFya2VkIEZhaWx1cmUgd2VyZSBmbGFreSBhbmQKKyAgICAg
ICAgc29tZXRpbWVzIHBhc3NpbmcsIHNvIG1hcmtlZCB0aGVtIGZvciBlaXRoZXIgUGFzcyBvciBG
YWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgIFRoaXMgaXMgYWxyZWFkeSBhIE1hYy1zcGVjaWZpYyB0ZXN0OyBpdCBkb2Vzbid0IG1ha2Ug
c2Vuc2UgdG8gaGF2ZSBhbiBhZGRpdGlvbmFsCisgICAgICAgIE1hYy1zcGVjaWZpYyBvdmVycmlk
ZGVuIHJlc3VsdCBzaW5jZSB0aGUgYmFzZSByZXN1bHQgaXMgYWxyZWFkeSBNYWMtc3BlY2lmaWMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5n
LWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWw6CisgICAgICAg
IFVwZGF0ZWQgdGhpcyB0ZXN0IHRvIGV4cGVjdCB0aGUgZW1wdHkgc3RyaW5nLCBub3QgInVuZGVm
aW5lZCIgZm9yIGFuIG91dCBvZiByYW5nZSwKKyAgICAgICAgc2luY2Ugd2Ugbm93IGNsYW1wIGlu
c3RlYWQgb2YgZmFpbGluZyBpbiBzdWNoIGNhc2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UuaHRtbDoKKyAgICAgICAgRGl0dG8uCisKIDIwMjAtMDMtMjggIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uOiBm
YXN0L2hpZHBpL2ltYWdlLXNyY3NldC1zdmctY2FudmFzLTJ4Lmh0bWwgaXMgZmFpbGluZyBjb25z
aXN0ZW50bHkgb24gaU9TIEVXUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1v
dXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCAwZjQwZWZkODNjYmE4MDAyZDE4
YTE2MDdiOWM1ODcyZWZlMWRlNzJjLi4yMzRkMzM5NjczYTIzNjhhM2U4NDI2MTc4ZTcxMjEzZjg0
MWEwZjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFy
a2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91
bmRzLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxMiBAQAogdGV4dAogdGV4dAogdGV4
dAotVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdo
ZW4gZ2l2ZW4gYW4gaW5kZXggb3V0IG9mIGJvdW5kcworVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRN
YXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggZ3JlYXRlciB0
aGFuIDJeMzEKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgaXRlbTEuaXNU
ZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkgaXMg
ZmFsc2UKK1BBU1MgaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvcklu
ZGV4KDk5OTk5OTk5OTk5KSkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91
bmRzLWNyYXNoLmh0bWwKaW5kZXggMGFiMmYxNzk1OThkYmEwNzVjMDZlZDcyOGFmMTEwNjk2ZDVl
NzJhMS4uNmFjN2Y5ZjY3MmNiNjg1MTVlMDdhM2M1MDEwZWU2ODAwYTMxYmJlZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0
LW9mLWJvdW5kcy1jcmFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2guaHRtbApAQCAtMTQsMTIg
KzE0LDEyIEBAIHRleHQKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlm
aWVzIHRoYXQgdGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBp
bmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdmVyaWZpZXMgdGhh
dCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdy
ZWF0ZXIgdGhhbiAyXjMxIik7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7
CiAgICAgICAgIHZhciBpdGVtMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OwotICAgICAgICBzaG91bGRCZUZhbHNlKCJpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVt
MS50ZXh0TWFya2VyRm9ySW5kZXgoOTk5OTk5OTk5OTkpKSIpOyAgICAgICAKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChpdGVtMS50ZXh0TWFya2VyRm9ySW5k
ZXgoOTk5OTk5OTk5OTkpKSIpOwogICAgIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFp
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rm
b3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQKaW5kZXggNmE0ODVhZWIyODI2NTU4
N2UzZDNjYzY0NDk3NDNiZGI1NmUwMzlhMi4uYmIwMmM3YmUxMjBlODA3MGYyMDQ1ZGEzNjVkMmQw
OWQzNDY2YjNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4
cGVjdGVkLnR4dApAQCAtMSwyMCArMSwxNyBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVn
aW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMiBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIDEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4
Ci01OCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotNTAs
NTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTAsNTcy
LDQ4LDE4Ci0xOCw1NzIsNDAsMTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAK
K2NhcmV0IGF0IHRoZSBiZWdpbm5pbmc6ICgwLDApLCAoMTAsNTcyLDAsMTgpCitjYXJldCBhZnRl
ciB0aGUgZmlyc3QgY2hhcmFjdGVyOiAoMSwwKSwgKDE4LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhl
IGVuZCBvZiBsaW5lOiAoNiwwKSwgKDU4LDU3MiwwLDE4KQorY2FyZXQgYXQgdGhlIGVuZCBvZiBs
aW5lOiAoNiwxMDApLCAoNTgsNTcyLDAsMTgpCitmaXJzdCBjaGFyYWN0ZXI6ICgwLDEpLCAoMTAs
NTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMSksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hh
cmFjdGVyOiAoNSwyKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEwMCksICg1
MCw1NzIsOCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDYpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGlu
ZTogKDAsNyksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw0Mjk0OTY3Mjk1KSwgKDEw
LDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyOiAoMSw0
Mjk0OTY3Mjk1KSwgKDE4LDU3Miw0MCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhl
IGVuZDogKDcsMCksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhl
IGVuZDogKDEwMDAsMCksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8g
dGhlIGVuZDogKDcsMSksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8g
dGhlIGVuZDogKDcsNDI5NDk2NzI5NSksICg1OCw1NzIsMCwxOCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWlu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0
ZXJyYW5nZS1wbGFpbi5odG1sCmluZGV4IDc5MjU4YjE5YWVmMWNmNmJhYmY5Y2E1Y2UzZGQ1ZDhk
MjI2ZDYwZGUuLjYyY2RjOWI4MjZmOTY1Zjg1NWQ3ZDVjODdhZTdlNTkwZDQ0NjI5ZGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXBsYWluLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmly
c3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbApAQCAtMSwxMCArMSw1IEBACiA8aHRt
bD4KIDxoZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgdGVzdFJ1
bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwotPC9zY3JpcHQ+Ci0KIDxzdHlsZT4KIGJvZHkg
eyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIDwvc3R5bGU+CkBAIC0xMiw3ICs3LDYgQEAgYm9k
eSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPGJvZHkgY29udGVudGVkaXRhYmxlPgogMTIz
NDU2CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0KIAl2YXIgY29uc29sZV9tZXNz
YWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAJCiAJZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCkBAIC0yMSw0MCArMTUsNDIgQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAg
fQogCQlpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsK
IAkJY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKIAl9Ci0JCisKKyAgICBmdW5j
dGlvbiBsb2dSZWN0KGNvbW1lbnQsIHN0YXJ0LCBsZW5ndGgpCisgICAgeworICAgICAgICBsb2co
Y29tbWVudCArICI6ICgiICsgc3RhcnQgKyAiLCIgKyBsZW5ndGggKyAiKSwgKCIKKyAgICAgICAg
ICAgICsgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShzdGFy
dCwgbGVuZ3RoKSArICIpIik7CisgICAgfQorCiAJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0J
CQogCQl0cnkgewotCQkKIAkJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCQkKLQkJCXdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMCkpOyAv
LyBjYXJldCBhdCB0aGUgYmVnaW5uaW5nIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgMCkpOyAvLyBjYXJldCBhZnRlciB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoNiwgMCkpOyAvLyBjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUKLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDEwMCkpOyAvLyAt
Ii0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDAsIDEpKTsgLy8gZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5m
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxKSk7IC8vIGxhc3QgY2hhcmFjdGVyCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAyKSk7
IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoNSwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNikpOyAvLyBmaXJzdCBsaW5lCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA3KSk7IC8vIC0iLQot
CQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwg
NDI5NDk2NzI5NSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDEsIDQyOTQ5NjcyOTUpKTsgLy8gZmlyc3QgbGluZSB3aXRob3V0
IHRoZSBmaXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDcsIDApKTsgLy8gb3V0IG9mIGJvdW5kcywgc2hvdWxkIGJlIHpl
cm8gcmVjdAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoMTAwMCwgMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDcsIDEpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCA0Mjk0OTY3Mjk1KSk7IC8vIC0i
LQorCQkJd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDAp
OwogCisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgYmVnaW5uaW5nIiwgMCwgMCk7CisJCQlsb2dS
ZWN0KCJjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgMCk7CisJCQlsb2dSZWN0
KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0
IHRoZSBlbmQgb2YgbGluZSIsIDYsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBjaGFyYWN0ZXIi
LCAwLCAxKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMSk7CisJCQlsb2dSZWN0
KCJsYXN0IGNoYXJhY3RlciIsIDUsIDIpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1
LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDYpOworCQkJbG9nUmVjdCgiZmly
c3QgbGluZSIsIDAsIDcpOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDQyOTQ5NjcyOTUp
OworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAx
LCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhl
IGVuZCIsIDcsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUg
ZW5kIiwgMTAwMCwgMCk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRo
ZSBlbmQiLCA3LCAxKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhl
IGVuZCIsIDcsIDQyOTQ5NjcyOTUpOwogCQl9IGNhdGNoIChleCkgewogCQkJbG9nKCJFeGNlcHRp
b246ICIgKyBleC5kZXNjcmlwdGlvbik7CiAJCX0KLQkJCisKIAkJdmFyIGNvbnNvbGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAJCWNvbnNvbGUuYXBwZW5kQ2hpbGQoY29uc29sZV9t
ZXNzYWdlcyk7CiAJCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7Ci0JCQogCX0g
ZWxzZSB7CiAJCWRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIpOwog
CX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZv
cmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0
CmluZGV4IGFjZmQ1MmYwYjk0OGE2NTNmYzA2ZjI4YzUzZmQyNzIxNjQwYThhZDQuLmJiMDJjN2Jl
MTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9y
Y2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwxNyBAQAotRURJ
VElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVn
aW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0
ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gSSA+
IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAj
dGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IEkg
PiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIDEyMzQ1NgotMTAsNTcyLDAsMTgK
LTE4LDU3MiwwLDE4Ci01OCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01MCw1
NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0
OCwxOAotMTAsNTcyLDQ4LDE4Ci0xOCw1NzIsNDAsMTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCww
LDAKLTAsMCwwLDAKK2NhcmV0IGF0IHRoZSBiZWdpbm5pbmc6ICgwLDApLCAoMTAsNTcyLDAsMTgp
CitjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyOiAoMSwwKSwgKDE4LDU3MiwwLDE4KQor
Y2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lOiAoNiwwKSwgKDU4LDU3MiwwLDE4KQorY2FyZXQgYXQg
dGhlIGVuZCBvZiBsaW5lOiAoNiwxMDApLCAoNTgsNTcyLDAsMTgpCitmaXJzdCBjaGFyYWN0ZXI6
ICgwLDEpLCAoMTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMSksICg1MCw1NzIsOCwx
OCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwyKSwgKDUwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6
ICg1LDEwMCksICg1MCw1NzIsOCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDYpLCAoMTAsNTcyLDQ4LDE4
KQorZmlyc3QgbGluZTogKDAsNyksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lOiAoMCw0Mjk0
OTY3Mjk1KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hh
cmFjdGVyOiAoMSw0Mjk0OTY3Mjk1KSwgKDE4LDU3Miw0MCwxOCkKK291dCBvZiBib3VuZHMsIGNs
YW1wZWQgdG8gdGhlIGVuZDogKDcsMCksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMsIGNs
YW1wZWQgdG8gdGhlIGVuZDogKDEwMDAsMCksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMs
IGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsMSksICg1OCw1NzIsMCwxOCkKK291dCBvZiBib3VuZHMs
IGNsYW1wZWQgdG8gdGhlIGVuZDogKDcsNDI5NDk2NzI5NSksICg1OCw1NzIsMCwxOCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXN0eWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwKaW5kZXggZmRjZmM2ZDRiMzc3OWI5YmQz
OWQ4NzcxY2QyZmIwZGJhNjMwZjIxZS4uZTViZjI4NjYwY2MzNzhiNmFlZWJiYzM2ZDNiZTlmOTI5
OWRlZmE5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLmh0bWwKQEAgLTEs
MTAgKzEsNSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0Pgot
CiA8c3R5bGU+CiBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAt
MjEsMzMgKzE2LDM2IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRlbS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNvbGVf
bWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9nUmVj
dChjb21tZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQgKyAi
OiAoIiArIHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICArIHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0aCkg
KyAiKSIpOworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5IHsK
LQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCisKIAkJCXdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCA0KTsKICAgICAgICAgICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgiNTYiLCAwLCAxKTsKIAotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgMCkpOyAvLyBjYXJl
dCBhdCB0aGUgYmVnaW5uaW5nIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoMSwgMCkpOyAvLyBjYXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFj
dGVyIAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoNiwgMCkpOyAvLyBjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUKLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDEwMCkpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDEp
KTsgLy8gZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAxKSk7IC8vIGxhc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg1LCAyKSk7IC8vIC0i
LQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
NSwgMTAwKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UoMCwgNikpOyAvLyBmaXJzdCBsaW5lCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCA3KSk7IC8vIC0iLQotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNDI5NDk2
NzI5NSkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDEsIDQyOTQ5NjcyOTUpKTsgLy8gZmlyc3QgbGluZSB3aXRob3V0IHRoZSBm
aXJzdCBjaGFyYWN0ZXIKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDcsIDApKTsgLy8gb3V0IG9mIGJvdW5kcywgc2hvdWxkIGJlIHplcm8gcmVj
dAotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
MTAwMCwgMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDcsIDEpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxl
ci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCA0Mjk0OTY3Mjk1KSk7IC8vIC0iLQotCisJ
CQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgYmVnaW5uaW5nIiwgMCwgMCk7CisJCQlsb2dSZWN0KCJj
YXJldCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgMCk7CisJCQlsb2dSZWN0KCJjYXJl
dCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAwKTsKKwkJCWxvZ1JlY3QoImNhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZSIsIDYsIDEwMCk7CisJCQlsb2dSZWN0KCJmaXJzdCBjaGFyYWN0ZXIiLCAwLCAx
KTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMSk7CisJCQlsb2dSZWN0KCJsYXN0
IGNoYXJhY3RlciIsIDUsIDIpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAxMDAp
OworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDYpOworCQkJbG9nUmVjdCgiZmlyc3QgbGlu
ZSIsIDAsIDcpOworCQkJbG9nUmVjdCgiZmlyc3QgbGluZSIsIDAsIDQyOTQ5NjcyOTUpOworCQkJ
bG9nUmVjdCgiZmlyc3QgbGluZSB3aXRob3V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIiLCAxLCA0Mjk0
OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIs
IDcsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwg
MTAwMCwgMCk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQi
LCA3LCAxKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIs
IDcsIDQyOTQ5NjcyOTUpOwogCQl9IGNhdGNoIChleCkgewogCQkJbG9nKCJFeGNlcHRpb246ICIg
KyBleC5kZXNjcmlwdGlvbik7CiAJCX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA5YjNkNzA3MjQyN2RjZWQwNWUzNjY4Yjg2Nzg5MjdiZDJh
NTAxM2UwLi44MWZmMWRhMzA3MWViODE0MDIxOTgyMDE3N2NlNmRjNjQyN2E2YjJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC05Miw5ICs5
Miw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9pbnRlcmZh
Y2VzL1dlYlNvY2tldC9yZWFkeVN0YXRlLzAwNi5oCiAjIFNob3VsZE9wZW5FeHRlcm5hbFVSTHMg
bm90IHlldCBzdXBwb3J0ZWQgaW4gV0sxCiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kgWyBTa2lw
IF0KIAotWyBTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktbGFiZWxzLmh0bWwg
WyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIGFjY2Vzc2liaWxpdHkvbWFjL2FwcGxlLXBheS1zZXNz
aW9uLXY0Lmh0bWwgWyBTa2lwIF0KLQogIyA8YSBkb3dubG9hZD4gaXMgbm90IHN1cHBvcnRlZCBp
biBXSzEgeWV0Lgogd2Via2l0Lm9yZy9iLzE1NjA2OSBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3Itbm9kb3dubG9hZC1zZXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1
NjA2OSBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQuaHRtbCBbIEZh
aWx1cmUgXQpAQCAtMjM4LDI2ICsyMzUsMTEgQEAgd2Via2l0Lm9yZy9iLzE1NTA2NyBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1wcml2YXRlLmh0bWwgWyBQYXNzIENyYXMKIAog
d2Via2l0Lm9yZy9iLzE3MjA5MiBbIERlYnVnIF0gZmFzdC9wYXJzZXIvYWRvcHRpb24tYWdlbmN5
LXVubG9hZC1pZnJhbWUtNC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE3
ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3QuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1yZWRpcmVjdC1hbGxvd2Vk
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11
cmwtYWxsb3dlZC1ieS1jc3AtbWVkaWEtc3JjLXN0YXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12
aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmln
aW4tYWNjZXNzc2FtZW9yaWdpbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8x
NzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29u
Zm9ybWFuY2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2ll
cnJhIF0gaHR0cC90ZXN0cy9tZWRpYS9hdXRvcGxheS1pZi1hdWRpby1pcy1wbGF5aW5nLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVz
dHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLXdlYmtpdC5v
cmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jl
c3MuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0g
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWxvY2Fs
aG9zdC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEg
XSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tcmVk
aXJlY3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJh
IF0gaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZXh0ZXJu
YWwtZW50aXR5LnhtbCBbIFNraXAgXQogCi0jIHJkYXI6Ly9wcm9ibGVtLzIwMDAxOTg1Ci1bIFNp
ZXJyYSBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmFuZ2UtdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCi0KICMgcmRhcjovL3Byb2JsZW0vMzQ3MTYxNjMgQnJlYWtzIHN1YnNlcXVlbnQgdGVzdHMg
dXNpbmcgcmVzcG9uc2UueG1sCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9yYW5nZS10ZXN0Lmh0bWwgWyBTa2lwIF0KKyMgRklYTUU6IFNob3VsZCBiZSBmaXhlZCBp
biBDYXRhbGluYTsgbmVlZCB0byByZS1lbmFibGUuCitodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3JhbmdlLXRlc3QuaHRtbCBbIFNraXAgXQogCiAjIFdLMSBkb2VzIG5vdCBzdXBwb3J0IHN5bmMg
WEhSIHJlZGlyZWN0aW9ucyBhcyBkb2VzIFdLMgogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJl
LXN5bmMteGhyLWluLW1haW4tZnJhbWUuaHRtbCBbIFNraXAgXQpAQCAtNDEzLDcgKzM5NSw3IEBA
IGh0dHAvdGVzdHMvbXVsdGlwYXJ0L211bHRpcGFydC1hc3luYy1pbWFnZS5odG1sCiAKIGZhc3Qv
cnVieS9ydWJ5LWV4cGFuc2lvbi1jamstMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLVsg
U2llcnJhKyBdIGNzczMvbWFza2luZy9tYXNrLXJlcGVhdC1zcGFjZS1wYWRkaW5nLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvbWFza2luZy9tYXNrLXJlcGVhdC1zcGFjZS1wYWRkaW5n
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1MjE3OCBmYXN0L3Jl
cGxhY2VkL3JlcGxhY2VkLWJyZWFraW5nLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtNTIwLDE5ICs1
MDIsMTkgQEAgZmFzdC9yZXBhaW50L3ZlcnRpY2FsLXRleHQtcmVwYWludC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTg1ODUgd2ViZ2wvd2ViZ2wtYmFja2luZy1zdG9yZS1z
aXplLXVwZGF0ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjQ4
MTg3MTI+Ci1bIFNpZXJyYSsgXSBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWluc2VydC1odG1s
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQt
aHRtbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjYzOTk1OTg+
Ci1bIFNpZXJyYSsgXSBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbCBbIEZh
aWx1cmUgXQotWyBTaWVycmErIF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVt
dWxhdGlvbi5odG1sIFsgRmFpbHVyZSBdCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5
bmMuaHRtbCBbIEZhaWx1cmUgXQorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVt
dWxhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI2MDUwOTIzPiBU
aGUgcmVzdWx0IGlzIHByb2JhYmx5IHN0aWxsIGEgcGFzcywgYnV0IHdlIGRvbid0IGhhdmUgYSB3
YXkKICMgdG8gaGF2ZSBwbGF0Zm9ybSBzcGVjaWZpYyByZXN1bHRzIHRoYXQgYXJlIGRpZmZlcmVu
dCBiZXR3ZWVuIFdLMSBhbmQgV0syLgotWyBTaWVycmErIF0gYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBhY2Nlc3NpYmls
aXR5L3BhcmVudC1kZWxldGUuaHRtbCBbIEZhaWx1cmUgXQorYWNjZXNzaWJpbGl0eS9tYWMvZG9j
dW1lbnQtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCithY2Nlc3NpYmlsaXR5L3BhcmVudC1k
ZWxldGUuaHRtbCBbIEZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9ibGVtLzI2NDc4Mjk2Ci1bIFNp
ZXJyYSsgXSBzdmcvaGl4aWUvdGV4dC8wMDMuaHRtbCBbIEZhaWx1cmUgXQorc3ZnL2hpeGllL3Rl
eHQvMDAzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1OTg5MyBbIERlYnVnIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZXZlbnQtcmVhZHlzdGF0ZWNoYW5n
ZS1sb2FkZWQuYW55LmpzIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtNTQxLDEzICs1MjMsMTMgQEAg
d2Via2l0Lm9yZy9iLzE2MDEwMSB1c2Vyc2NyaXB0cy93aW5kb3ctb25lcnJvci1mb3ItaXNvbGF0
ZWQtd29ybGQtMy5odG1sIFsgUGFzcwogd2Via2l0Lm9yZy9iLzEwNTg3MCBbIERlYnVnIF0gd2Vi
YXVkaW8vYXVkaW9ub2RlLWNvbm5lY3Qtb3JkZXIuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiAjIHJk
YXI6Ly9wcm9ibGVtLzI3NzIzNzE4Ci1bIFNpZXJyYSsgXSBpbXBvcnRlZC9ibGluay9jb21wb3Np
dGluZy9jaGlsZC10cmFuc2Zvcm0td2l0aC1hbmNob3ItcG9pbnQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQoraW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvY2hpbGQtdHJhbnNmb3JtLXdpdGgt
YW5jaG9yLXBvaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2
MTA1NiBnYW1lcGFkIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNjI1OTIgWyBTaWVycmErIF0g
Y3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLXJlZmxlY3Rpb24uaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYyNTkxIFsgU2llcnJh
KyBdIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9u
LWFkZC1iYWNrZHJvcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8xNjI1OTEgWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRl
ci13aXRoLXJlZmxlY3Rpb24tdmFsdWUtY2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzE2MjU5MiBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3At
ZmlsdGVyLXdpdGgtcmVmbGVjdGlvbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xNjI1OTEgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13
aXRoLXJlZmxlY3Rpb24tYWRkLWJhY2tkcm9wLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzE2MjU5MSBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmls
dGVyLXdpdGgtcmVmbGVjdGlvbi12YWx1ZS1jaGFuZ2UuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjEzNjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvaGlzdG9yeS10cmF2ZXJzYWwvcGVy
c2lzdGVkLXVzZXItc3RhdGUtcmVzdG9yYXRpb24vc2Nyb2xsLXJlc3RvcmF0aW9uLWZyYWdtZW50
LXNjcm9sbGluZy1jcm9zcy1vcmlnaW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTU3Niw3
ICs1NTgsNyBAQCB3ZWJraXQub3JnL2IvMTY0OTMzIGh0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1p
Y29uLWJlZm9yZWxvYWQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2NTU0MSBjb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1vdmVybGFwLWV4dGVudC1ydGwuaHRtbCBbIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2NTU0MSBjb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLW92
ZXJmbG93Lmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE1NDYxMiBbIFNpZXJyYSsg
XSBjb21wb3NpdGluZy9yZXBhaW50L2ZpeGVkLWJhY2tncm91bmQtc2Nyb2xsLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1NDYxMiBjb21wb3NpdGluZy9yZXBhaW50L2ZpeGVk
LWJhY2tncm91bmQtc2Nyb2xsLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTY1NTg5IHBvaW50ZXItbG9jay9sb2NrLWxvc3Qtb24tZXNjLWluLWZ1bGxzY3JlZW4uaHRtbCBb
IFNraXAgXQogCkBAIC02MzQsOCArNjE2LDYgQEAgaHR0cC90ZXN0cy9wcmVjb25uZWN0IFsgU2tp
cCBdCiAKIHdlYmtpdC5vcmcvYi8xNzUzNDUgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXNjcm9s
bGluZy1jcmFzaC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE3NTU1NCBb
IFNpZXJyYSBdIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLWxlZ2FjeS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3NDIxOCBzdmcvYW5pbWF0aW9ucy9zbWlsLWxl
YWstbGlzdC1wcm9wZXJ0eS1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE3Mjg3NyBzdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXdpdGgtZGF0YS11cmktYmFja2dy
b3VuZC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTY0OSwyMyArNjI5LDIzIEBA
IHdlYmtpdC5vcmcvYi8xNzY5MjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3BpcGluZy9lcnJvci1wcm9wYWdhCiB3ZWJraXQub3JnL2IvMTc1ODg2IHN2Zy9hbmltYXRp
b25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy5zdmcgWyBQYXNzIEZhaWx1cmUgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS8yOTIwMTY5OD4gRHVtcFJlbmRlclRyZWUgY3Jhc2hlZCBpbiBjb20u
YXBwbGUuQ29yZUdyYXBoaWNzOiBDR0RhdGFQcm92aWRlckNvcHlEYXRhICsgMzc3Ci1bIEhpZ2hT
aWVycmErIF0gZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0
aC1wb3RlbnRpYWxseS1zdWJzYW1wbGVkLWltYWdlLmh0bWwgWyBDcmFzaCBdCitmYXN0L2NhbnZh
cy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNh
bXBsZWQtaW1hZ2UuaHRtbCBbIENyYXNoIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjkwMzE1MDk+
IFJFR1JFU1NJT04/IChGb250UGFyc2VyLTE5NSk6IHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVt
LSogYW5kIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLSogdGVzdHMgZmFpbGluZwotWyBIaWdo
U2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTA0LWIuc3ZnIFsgRmFpbHVyZSBd
CitzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNC1iLnN2ZyBbIEZhaWx1cmUgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8zMTg5MzcxND4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0L3RleHQv
bXVsdGlwbGUtY29kZXVuaXQtdmVydGljYWwtdXByaWdodC5odG1sIGlzIGZhaWxpbmcgb24gV0sx
Ci1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L211bHRpcGxlLWNvZGV1bml0LXZlcnRpY2FsLXVw
cmlnaHQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorZmFzdC90ZXh0L211bHRpcGxlLWNvZGV1
bml0LXZlcnRpY2FsLXVwcmlnaHQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIDxyZGFy
Oi8vcHJvYmxlbS8zMTg5NTE5Mj4gRHVtcFJlbmRlclRyZWUgY3Jhc2hlZCBpbiBjb20uYXBwbGUu
SW1hZ2VJTy5mcmFtZXdvcms6IElJT0RpY3Rpb25hcnk6OmdldEJvb2xGb3JLZXkgKyAwCi1bIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL21pc2Mvc2xvdy1sb2FkaW5nLWFuaW1hdGVkLWltYWdl
Lmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM1MjI0MjA+IENyYXNoOiBNdWx0
aXBsZSBMYXlvdXQgdGVzdCBpbiBmYXN0L2V2ZW50cyBhbmQgZmFzdC9mb3JtcyBhbmQgZmFzdC90
ZXh0IGFyZSBjcmFzaGluZwotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tleWJvYXJkZXZl
bnQtY29kZS5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tleWJv
YXJkZXZlbnQta2V5Lmh0bWwgWyBDcmFzaCBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9ldmVudHMv
a2V5ZG93bi1sZWZ0cmlnaHQta2V5cy5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZh
c3QvZm9ybXMvdGV4dGFyZWEtbWF4bGVuZ3RoLmh0bWwgWyBDcmFzaCBdCi1bIEhpZ2hTaWVycmEr
IF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNrLWVtb2ppLmh0bWwgWyBDcmFzaCBdCitm
YXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWNvZGUuaHRtbCBbIENyYXNoIF0KK2Zhc3QvZXZlbnRz
L2tleWJvYXJkZXZlbnQta2V5Lmh0bWwgWyBDcmFzaCBdCitmYXN0L2V2ZW50cy9rZXlkb3duLWxl
ZnRyaWdodC1rZXlzLmh0bWwgWyBDcmFzaCBdCitmYXN0L2Zvcm1zL3RleHRhcmVhLW1heGxlbmd0
aC5odG1sIFsgQ3Jhc2ggXQorZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNrLWVtb2ppLmh0
bWwgWyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xNzk3NzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvZmlyaW5nLWV2ZW50cy1odHRwLW5vLWNvbnRlbnQtbGVuZ3RoLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCkBAIC03MzEsMzIgKzcxMSwzMiBAQCB3ZWJraXQub3JnL2IvMTg3
NTU3IFsgRGVidWcgXSBtZWRpYS9tZWRpYS1mcmFnbWVudHMvVEMwMDkxLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzE4NzcxMSBbIERlYnVnIF0gc3ZnL2N1c3RvbS9saW5raW5n
LXVyaS0wMS1iLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQyNjI1
NjU3PgotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXBhaW50LWFmdGVyLWFu
aW1hdGlvbi5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hc3luYy1pbWFn
ZS1iYWNrZ3JvdW5kLWltYWdlLXJlcGVhdGVkLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZh
c3QvaW1hZ2VzL2FzeW5jLWltYWdlLWJhY2tncm91bmQtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBN
b2phdmUrIF0gZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtbXVsdGlwbGUtY2xpZW50cy1yZXBhaW50
Lmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2NvbXBvc2l0ZWQtYW5pbWF0
ZWQtZ2lmLW91dHNpZGUtdmlld3BvcnQuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9p
bWFnZXMvZGVjb2RlLXJlbmRlci1hbmltYXRlZC1pbWFnZS5odG1sIFsgU2tpcCBdCi1bIE1vamF2
ZSsgXSBmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRpYy1pbWFnZS5odG1sIFsgU2tpcCBd
Ci1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5bmMtc21hbGwt
aW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0
cmlidXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUr
IF0gZmFzdC9pbWFnZXMvc3ByaXRlLXNoZWV0LWltYWdlLWRyYXcuaHRtbCBbIFNraXAgXQorZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXBhaW50LWFmdGVyLWFuaW1hdGlvbi5odG1sIFsgU2tpcCBd
CitmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLXJlcGVhdGVkLmh0bWwg
WyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLWJhY2tncm91bmQtaW1hZ2UuaHRtbCBb
IFNraXAgXQorZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtbXVsdGlwbGUtY2xpZW50cy1yZXBhaW50
Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2NvbXBvc2l0ZWQtYW5pbWF0ZWQtZ2lmLW91dHNp
ZGUtdmlld3BvcnQuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1hbmlt
YXRlZC1pbWFnZS5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9kZWNvZGUtcmVuZGVyLXN0YXRp
Yy1pbWFnZS5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9kZWNvZGluZy1hdHRyaWJ1dGUtYXN5
bmMtc21hbGwtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmli
dXRlLWR5bmFtaWMtYXN5bmMtc21hbGwtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMv
c3ByaXRlLXNoZWV0LWltYWdlLWRyYXcuaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxl
bS80MjYyNzU2Mj4KLVsgTW9qYXZlKyBdIG1lZGlhL3ZpZGVvLXJlc3RyaWN0ZWQtaW52aXNpYmxl
LWF1dG9wbGF5LW5vdC1hbGxvd2VkLXNvdXJjZS5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBt
ZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1hdXRvcGxheS1ub3QtYWxsb3dlZC5odG1s
IFsgU2tpcCBdCittZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1hdXRvcGxheS1ub3Qt
YWxsb3dlZC1zb3VyY2UuaHRtbCBbIFNraXAgXQorbWVkaWEvdmlkZW8tcmVzdHJpY3RlZC1pbnZp
c2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQuaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJv
YmxlbS80MjczNjIxMz4KLVsgTW9qYXZlKyBdIGRpc3BsYXlsaXN0cy9jYW52YXMtZGlzcGxheS1s
aXN0Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGRpc3BsYXlsaXN0cy9leHRlbnQtaW5j
bHVkZXMtc2hhZG93Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGRpc3BsYXlsaXN0cy9l
eHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBk
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUr
IF0gZGlzcGxheWxpc3RzL3JlcGxheS1za2lwLWNsaXBwZWQtcmVjdC5odG1sIFsgRmFpbHVyZSBd
CitkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCitkaXNw
bGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy5odG1sIFsgRmFpbHVyZSBdCitkaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxh
eWxpc3RzL2xheWVyLWRpc3BheS1saXN0Lmh0bWwgWyBGYWlsdXJlIF0KK2Rpc3BsYXlsaXN0cy9y
ZXBsYXktc2tpcC1jbGlwcGVkLXJlY3QuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTg0NjExIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLW92ZXJsYXAtZXh0ZW50Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MjkwNDc4MD4KLVsgTW9q
YXZlKyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9B
UEkvZGVyaXZlX2JpdHNfa2V5cy9oa2RmLmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBdCitb
IFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9k
ZXJpdmVfYml0c19rZXlzL2hrZGYuaHR0cHMud29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzE4OTA4NyBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLWVuZC1hdHRyaWJ1dGUtbnVt
ZXJpYy1wcmVjaXNpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTc3Miw3ICs3NTIsNyBA
QCB3ZWJraXQub3JnL2IvMTkxMzU3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzc29tLXZpZXcvc2Nyb2xsLWJlaGF2aQogCiB3ZWJraXQub3JnL2IvMTg5OTA4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVzb3VyY2UtdGltaW5nL3Jlc291cmNlX3RpbWluZy53
b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg5NzU2IFsgTW9qYXZlKyBd
IGNvbXBvc2l0aW5nL2ZpbHRlcnMvb3BhY2l0eS1jaGFuZ2Utb24tZmlsdGVyZWQtcGFpbnRzLWlu
dG8tYW5jZXN0b3IuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTg5NzU2IGNvbXBvc2l0aW5nL2ZpbHRlcnMvb3BhY2l0eS1jaGFuZ2Utb24tZmlsdGVyZWQtcGFp
bnRzLWludG8tYW5jZXN0b3IuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xODk3MjMgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4teHNsLXJlZGly
ZWN0LUJMT0NLRUQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTc4Miw3ICs3NjIsNyBAQCB3
ZWJraXQub3JnL2IvMTkwODMyIFsgRGVidWcgXSBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8t
bm9uLWVkaXRlZC1jb250cm9scy5odAogCiB3ZWJraXQub3JnL2IvMTkwODQ5IGh0dHAvdGVzdHMv
c2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtbXVsdGlwbGUtaGVhZGVycy1z
YW1lb3JpZ2luLWRlbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xODY0
MDYgWyBNb2phdmUrIF0gY29tcG9zaXRpbmcvaWZyYW1lcy9kaXNwbGF5LW5vbmUtc3ViZnJhbWUu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTg2NDA2IGNvbXBvc2l0aW5nL2lm
cmFtZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTkwMzgzIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1sb29wLWNvdW50Lmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdl
cy9hbmltYXRlZC1wbmctbG9vcC1jb3VudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
QEAgLTc5MCw3ICs3NzAsNyBAQCB3ZWJraXQub3JnL2IvMTkwMzgzIGZhc3QvaW1hZ2VzL2FuaW1h
dGVkLWltYWdlLWRpZmZlcmVudC1kZXN0LXNpemUuaHRtbCBbIFBhc3MgSQogCiB3ZWJraXQub3Jn
L2IvMTkxNjM5IGltcG9ydGVkL2JsaW5rL2NvbXBvc2l0aW5nL3NxdWFzaGluZy9zcXVhc2hpbmct
aW50by1hbmNlc3Rvci1wYWludGVkLWxheWVyLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQogCi13ZWJraXQub3JnL2IvMTkwNjI3IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL21hc2tzL2Nv
bXBvc2l0aW5nLWNsaXAtcGF0aC1jaGFuZ2Utbm8tcmVwYWludC5odG1sICBbIFBhc3MgRmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMTkwNjI3IGNvbXBvc2l0aW5nL21hc2tzL2NvbXBvc2l0aW5nLWNs
aXAtcGF0aC1jaGFuZ2Utbm8tcmVwYWludC5odG1sICBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xNzIzODQgZmFzdC9oaWRwaS9oaWRwaS1sb25nLXBhZ2Utd2l0aC1pbnNldC1lbGVt
ZW50Lmh0bWwgWyBTa2lwIF0KIApAQCAtODI2LDEwICs4MDYsMTAgQEAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudC9y
YW5nZS1zZXQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5
L2Rpc3BsYXktbm9uZS1pbmxpbmUtaW1nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8
cmRhcjovL3Byb2JsZW0vNDI2MjU2NTc+IFJFR1JFU1NJT04gKE1vamF2ZSk6IDEyIGZhc3QvaW1h
Z2VzIHRlc3RzIHRpbWluZyBvdXQgb24gV0sxCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hbmlt
YXRlZC1oZWljcy1kcmF3Lmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWhlaWNzLXZlcmlmeS5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9hbmltYXRlZC1o
ZWljcy1kcmF3Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWhlaWNzLXZlcmlm
eS5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMDAwMDIgWyBNb2phdmUrIERlYnVnIF0g
aW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi1iYXNpY3MtbWV0YWRhdGEuaHRt
bCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIwMDAwMiBbIERlYnVnIF0gaW1wb3J0ZWQvYmxp
bmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi1iYXNpY3MtbWV0YWRhdGEuaHRtbCBbIFRpbWVvdXQg
XQogCiAjIFNraXAgSXNMb2dnZWRJbgogaHR0cC90ZXN0cy9pcy1sb2dnZWQtaW4vIFsgU2tpcCBd
CkBAIC04NDksNyArODI5LDcgQEAgd2Via2l0Lm9yZy9iLzIwMzUxNyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2l6aW5nL2R5bmFtaWMtYXZhaWwKICMgU3RhbGUtd2hp
bGUtcmV2YWxpZGF0ZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdLMQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlIFsgU2tpcCBdCiAKLXdl
YmtpdC5vcmcvYi8yMDUzMTQgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsgRmFpbHVyZSBdCitbIE1vamF2ZSBdIGVk
aXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sIFsg
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDU0MTIgWyBNb2phdmUgRGVidWcgXSB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0
IF0KIApAQCAtOTYzLDQgKzk0Myw0IEBAIHdlYmtpdC5vcmcvYi8yMDk0OTQgZmFzdC9ldmVudHMv
bW91c2UtY3Vyc29yLW5vLW1vdXNlbW92ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzIwOTU2MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZW5kLXJl
c3BvbnNlLXVwbG9hZC1ldmVudC1wcm9ncmVzcy5odG0gWyBQYXNzIENyYXNoIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMjA5NjIxIGZhc3QvbG9hZGVyL2NoaWxkLWZyYW1lLWFkZC1hZnRlci1i
YWNrLWZvcndhcmQuaHRtbCBbIFBhc3MgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQord2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0
ZXItYmFjay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjYjFlZjZjMzNmMWRjZjQ5NmI2
ZGE3YWZlNzVhZWRkNzExYWFlOWQuLjk4NGE0ZDBjMjU1OTVmOWNiODZkMDdmZThmNGZiNjhkZDRk
MzQxOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTMzLDI2ICszMywxNCBAQCBmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZl
LXVwZGF0ZS1pbi1zdWJmcmFtZXMuaHRtbCBbIFBhc3MgXQogZmFzdC9tZWRpYS9tcS1tb25vY2hy
b21lLWxpdmUtdXBkYXRlLmh0bWwgWyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1
Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCiAKLVsgU2llcnJhKyBdIGh0dHAv
dGVzdHMvc3NsL2FwcGxlcGF5LyBbIFBhc3MgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9h
cHBsZXBheS9BcHBsZVBheUJ1dHRvblY0Lmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gaHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlFcnJvci5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBd
IGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblYzLmh0bWwgWyBTa2lwIF0K
LVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjQuaHRt
bCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb25WNS5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5
L0FwcGxlUGF5UmVxdWVzdFNoaXBwaW5nQ29udGFjdFYzLmh0dHBzLmh0bWwgWyBTa2lwIF0KLVsg
U2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3ND
aGFuZ2VFdmVudEVycm9yc1YzLmh0dHBzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gYWNjZXNz
aWJpbGl0eS9tYWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEg
XSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheUJ1dHRvblY0Lmh0bWwgWyBTa2lwIF0K
LVsgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0
Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvblY1Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIGFjY2Vzc2liaWxp
dHkvbWFjL2FwcGxlLXBheS1zZXNzaW9uLXY0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc3Ns
L2FwcGxlcGF5LyBbIFBhc3MgXQogCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5n
LXZpZXdwb3J0LXJlY3RzLmh0bWwgWyBQYXNzIF0KIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3J1YmJl
cmJhbmRpbmctdmlld3BvcnQtcmVjdHMtaGVhZGVyLWZvb3Rlci5odG1sICBbIFBhc3MgXQogCi1b
IFNpZXJyYSsgXSBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0IFsgUGFzcyBdCi1bIFNpZXJyYSsg
XSBodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdCBbIFBhc3MgXQotWyBTaWVycmEr
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QgWyBQYXNz
IF0KK2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QgWyBQYXNzIF0KK2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3BheW1lbnRyZXF1ZXN0IFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3BheW1lbnQtcmVxdWVzdCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1
ZXN0L2FsbG93cGF5bWVudHJlcXVlc3QtYXR0cmlidXRlLWNyb3NzLW9yaWdpbi1iYy1jb250YWlu
ZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9u
by1hdHRyaWJ1dGUtY3Jvc3Mtb3JpZ2luLWJjLWNvbnRhaW5lcnMuaHR0cHMuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Bh
eW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3JlbW92aW5nLWFsbG93cGF5bWVudHJl
cXVlc3QuaHR0cHMuc3ViLmh0bWwgWyBTa2lwIF0KQEAgLTcwLDcgKzU4LDcgQEAgYXBwbGljYXRp
b25tYW5pZmVzdC8gWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE4NzE4MyBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bhc3RlYm9hcmQtZmlsZS11cmwuaHRtbCBbIFBhc3MgXQogCi1bIE1vamF2ZSsgXSBm
YXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24u
aHRtbCBbIFBhc3MgXQorZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxh
eS1jb25maWd1cmF0aW9uLmh0bWwgWyBQYXNzIF0KIAogZmFzdC9taXNjL3ZhbGlkLXByaW1hcnkt
c2NyZWVuLWRpc3BsYXlJRC5odG1sIFsgUGFzcyBdCiAKQEAgLTc5LDExICs2NywxMSBAQCBodHRw
L3Rlc3RzL3dlYkFQSVN0YXRpc3RpY3MgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE4NDU2OSBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotWyBNb2phdmUrIF0gZmFzdC9ldmVudHMvZGV0ZWN0LWNh
cHMtbG9jay5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2Zvcm1zL2F1dG8tZmlsbC1i
dXR0b24vY2Fwcy1sb2NrLWluZGljYXRvci1zaG91bGQtYmUtdmlzaWJsZS1hZnRlci1oaWRpbmct
YXV0by1maWxsLXN0cm9uZy1wYXNzd29yZC1idXR0b24uaHRtbCBbIFBhc3MgXQotWyBNb2phdmUr
IF0gZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxk
LW5vdC1iZS12aXNpYmxlLXdoZW4tYXV0by1maWxsLXN0cm9uZy1wYXNzd29yZC1idXR0b24taXMt
dmlzaWJsZS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2Zvcm1zL3Bhc3N3b3JkLXNj
cm9sbGVkLWFmdGVyLWNhcHMtbG9jay10b2dnbGVkLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcv
Yi8xOTQxNzAgWyBNb2phdmUrIFJlbGVhc2UgXSBmYXN0L3JlcGFpbnQvcGxhY2Vob2xkZXItYWZ0
ZXItY2Fwcy1sb2NrLWhpZGRlbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2Rl
dGVjdC1jYXBzLWxvY2suaHRtbCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9u
L2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1dG8t
ZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvYXV0
by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUtdmlzaWJsZS13
aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUuaHRtbCBbIFBh
c3MgXQorZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xl
ZC5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTk0MTcwIFsgUmVsZWFzZSBdIGZhc3QvcmVw
YWludC9wbGFjZWhvbGRlci1hZnRlci1jYXBzLWxvY2staGlkZGVuLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCiBmYXN0L2V2ZW50cy9pbmFjdGl2ZS13aW5kb3ctbm8tbW91c2UtZXZlbnQuaHRtbCBb
IFBhc3MgXQogCkBAIC0yMjMsOSArMjExLDkgQEAgd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdpbm5pbmctb2YtYXV0b2NvcnJlY3QKIHdl
YmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvcmVtb3ZpbmctdW5kZXJsaW5l
LWFmdGVyLWFjY2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlvbi5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2Vw
dC1jYW5kaWRhdGUtYWxsb3dzLWF1dG9jb3JyZWN0LW9uLW5leHQtd29yZC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNl
ZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWluY2x1ZGVzLWh5
cGhlbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbWFya2Vycy1pbi1vdmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1tYXJrZXItaW5jbHVkZXMtaHlwaGVuLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtl
cnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2Vycy1pbi1v
dmVybGFwcGluZy1saW5lcy1sYXJnZS1mb250Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLWJ0LXRleHQt
d2l0aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzEwNTYxNiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0aC1zcGVsbGlu
Zy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC00OTIsMTMgKzQ4MCwxMiBA
QCB3ZWJraXQub3JnL2IvMTQxMDg1IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnktdXJsLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3Mg
XQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3Mg
XQogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucyBbIFBh
c3MgXQotWyBTaWVycmErIF0gaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zIFsgUGFz
cyBdCitodHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIAogIyBUaGUg
Zm9sbG93aW5nIHRlc3RzIGFyZSBmbGFreS4KIHdlYmtpdC5vcmcvYi8xNzk1NTcgaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucy91cGdyYWRlLXdvcmtlci5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjgwODEgaHR0cC90ZXN0cy9jb250
ZW50ZXh0ZW5zaW9ucy9hc3luYy14aHItb25lcnJvci5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdl
YmtpdC5vcmcvYi8xNDY0MDAgaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jaGFyYWN0ZXIt
c2V0LWJhc2ljLXN1cHBvcnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTY4
MDgyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9pbnZhbGlkLXNlbGVj
dG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFdlYktpdDEtb25seSBmYWls
dXJlLgogd2Via2l0Lm9yZy9iLzEwMzg1NyBmYXN0L2V2ZW50cy9tb3VzZS1jdXJzb3ItY2hhbmdl
Lmh0bWwgWyBQYXNzIF0KQEAgLTUxMCw1NiArNDk3LDU2IEBAIGltcG9ydGVkL2JsaW5rL2h0dHAv
dGVzdHMvcGx1Z2lucy9nZXQtdXJsLW5vdGlmeS1vbi1yZW1vdmFsLmh0bWwgWyBQYXNzIFRpbWVv
dXQKIGltcG9ydGVkL2JsaW5rL2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvbXVsdGljb2wtYmVj
b21lcy1yZWd1bGFyLWJsb2NrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0
ZWQvYmxpbmsvZmFzdC90cmFuc2Zvcm1zL3RyYW5zZm9ybS11cGRhdGUtZnJhbWUtb3ZlcmZsb3cu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNTU3NTcgWyBT
aWVycmErIF0gbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tcmVwYWludC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTU3NTcgbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8t
cmVwYWludC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NzU4OSBmYXN0
L3RleHQtYXV0b3NpemluZy9pb3MvdGV4dC1hdXRvc2l6aW5nLWFmdGVyLWJhY2suaHRtbCBbIFBh
c3MgVGltZW91dCBdCiAKICMgUGlQIHRlc3RzIGFyZSBvbmx5IGVuYWJsZWQgZm9yIFNpZXJyYSBX
ZWJLaXQyLgogIyByZGFyOi8vcHJvYmxlbS8yNzU3NDMwMwotWyBTaWVycmErIF0gbWVkaWEvY29u
dHJvbHMvcGljdHVyZS1pbi1waWN0dXJlLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNzA2
MjAgWyBTaWVycmErIF0gbWVkaWEvY29udHJvbHMvcGlwLXBsYWNlaG9sZGVyLXdpdGhvdXQtdmlk
ZW8tY29udHJvbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBtZWRpYS9lbGVt
ZW50LWNvbnRhaW5pbmctcGlwLXZpZGVvLWdvaW5nLWludG8tZnVsbHNjcmVlbi5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xNzI5OTggWyBTaWVycmErIF0gbWVkaWEvZnVsbHNj
cmVlbi1hcGktZW5hYmxlZC1tZWRpYS13aXRoLXByZXNlbnRhdGlvbi1tb2RlLmh0bWwgWyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xNzMxOTkgWyBTaWVycmErIF0gbWVkaWEvbmF2aWdhdGUtd2l0
aC1waXAtc2hvdWxkLW5vdC1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsgU2llcnJhKyBd
IG1lZGlhL3BpcC12aWRlby1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgXQotWyBT
aWVycmErIF0gbWVkaWEvcGljdHVyZS1pbi1waWN0dXJlIFsgUGFzcyBdCittZWRpYS9jb250cm9s
cy9waWN0dXJlLWluLXBpY3R1cmUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE3MDYyMCBt
ZWRpYS9jb250cm9scy9waXAtcGxhY2Vob2xkZXItd2l0aG91dC12aWRlby1jb250cm9scy5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KK21lZGlhL2VsZW1lbnQtY29udGFpbmluZy1waXAtdmlkZW8tZ29p
bmctaW50by1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE3
Mjk5OCBtZWRpYS9mdWxsc2NyZWVuLWFwaS1lbmFibGVkLW1lZGlhLXdpdGgtcHJlc2VudGF0aW9u
LW1vZGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE3MzE5OSBtZWRpYS9uYXZpZ2F0
ZS13aXRoLXBpcC1zaG91bGQtbm90LWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorbWVkaWEv
cGlwLXZpZGVvLWdvaW5nLWludG8tZnVsbHNjcmVlbi5odG1sIFsgUGFzcyBdCittZWRpYS9waWN0
dXJlLWluLXBpY3R1cmUgWyBQYXNzIF0KIAogIyBSVEwgU2Nyb2xsYmFycyBhcmUgZW5hYmxlZCBv
biBTaWVycmEgV2ViS2l0Mi4KLXdlYmtpdC5vcmcvYi8xNzk0NTUgWyBTaWVycmErIF0gZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi1b
IFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1zaW1wbGUuaHRtbCBbIFBh
c3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ct
Y29udGVudHMuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNj
cm9sbGJhcnMtb3ZlcmZsb3ctZGlyLXJ0bC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0bWwgWyBQYXNzIF0K
LVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBs
ZS5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFy
cy1vdmVyZmxvdy5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwt
c2Nyb2xsYmFycy1vdmVyZmxvdy1lbGVtZW50RnJvbVBvaW50Lmh0bWwgWyBQYXNzIF0KLVsgU2ll
cnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXBvc2l0aW9uLWFi
c29sdXRlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLW92ZXJmbG93LXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRl
Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LXBvc2l0aW9uLWZpeGVkLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLmh0
bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlm
cmFtZS1vZmZzZXQuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtZWxlbWVudEZyb21Qb2ludC1zdGF0aWMuaHRtbCBbIFBhc3MgXQotWyBTaWVy
cmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtaWZyYW1lLXNjcm9sbGVkLmh0bWwg
WyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0
aW9uaW5nLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbCBbIFBhc3MgXQot
WyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3Qt
cmlnaHQuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtbGlzdGJveC1zaW1wbGUuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3Jv
bGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWludGVyc2VjdC1zY3JvbGxi
YXJzLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWFsdGVybmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxh
Y2VtZW50Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLWFsdGVybmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXIt
cGxhY2VtZW50LTIuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE2MjYzOCBbIFNpZXJyYSsg
XSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGly
LWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFy
cy1hbmltYXRpb24tcHJvcGVydHkuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE3OTQ1NSBm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXNpbXBsZS5odG1sIFsgUGFzcyBdCitm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1jb250ZW50cy5odG1sIFsgUGFz
cyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1kaXItcnRsLmh0bWwg
WyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXBhZGRpbmcu
aHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctc2lt
cGxlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWVs
ZW1lbnRGcm9tUG9pbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtb3ZlcmZsb3ctcG9zaXRpb24tYWJzb2x1dGUuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctdGV4dC1zZWxlY3Rpb24tc2Nyb2xsZWQuaHRtbCBb
IFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb24tYWJzb2x1dGUu
aHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb24tZml4
ZWQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtdGV4dC1zZWxl
Y3Rpb24tc2Nyb2xsZWQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtdGV4dC1zZWxlY3Rpb24uaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtaWZyYW1lLW9mZnNldC5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1lbGVtZW50RnJvbVBvaW50LXN0YXRpYy5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1pZnJhbWUtc2Nyb2xsZWQuaHRtbCBbIFBhc3MgXQorZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb25pbmcuaHRtbCBbIFBhc3MgXQorZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zY3JvbGwuaHRtbCBbIFBhc3MgXQorZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtbGVmdC5odG1sIFsgUGFz
cyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1yaWdodC5o
dG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNpbXBs
ZS5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94Lmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uZWQtaW50
ZXJzZWN0LXNjcm9sbGJhcnMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtYWx0ZXJuYXRlLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1w
bGFjZW1lbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYWx0
ZXJuYXRlLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQt
Mi5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTYyNjM4IGZhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLWFsdGVybmF0ZS1pZnJhbWUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUt
c2Nyb2xsYmFyLXBsYWNlbWVudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFuaW1hdGlvbi1wcm9wZXJ0eS5odG1sIFsgUGFzcyBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1MDYzMTI4PgotWyBTaWVycmErIF0gbWVkaWEvbWVkaWEt
Y29udHJvbHMtZHJhZy10aW1lbGluZS1zZXQtY29udHJvbHMtcHJvcGVydHkuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCittZWRpYS9tZWRpYS1jb250cm9scy1kcmFnLXRpbWVsaW5lLXNldC1jb250cm9s
cy1wcm9wZXJ0eS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyBIaXR0aW5nICJUaGUgY2VydGlm
aWNhdGUgZm9yIHRoaXMgc2VydmVyIGlzIGludmFsaWQiIGxvYWRpbmcgZXJyb3IgKG5vdCBoYXBw
ZW5pbmcgaW4gV0sxKQotd2Via2l0Lm9yZy9iLzE2MDQ0NSBbIFNpZXJyYSsgXSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3Rz
L3VwZ3JhZGUtaW5zZWN1cmUtZmV0Y2gtaW4td29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xNjA0NDUgWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWZl
dGNoLWluLW1haW4tZnJhbWUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE2MDQ0NSBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJl
LXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUtZmV0Y2gtaW4td29ya2VyLmh0bWwgWyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8xNjA0NDUgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWZldGNo
LWluLW1haW4tZnJhbWUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTY3NjA3IFsg
RGVidWcgXSBodHRwL3Rlc3RzL2luc3BlY3Rvci93b3JrZXIvYmxvYi1zY3JpcHQtd2l0aC1jcm9z
cy1kb21haW4taW1wb3J0ZWQtc2NyaXB0cy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIApAQCAtNTgy
LDggKzU2OSw2IEBAIHdlYmtpdC5vcmcvYi8xNjIwODEgZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQt
aW5zZXJ0LWxpbmsuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYwMDE3IGpzL3Jl
Z3Jlc3MtMTM5NTQ4Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTYyNTI0
IFsgU2llcnJhIFJlbGVhc2UgXSBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNo
ZS1yZWRpcmVjdC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE2MTkyNiBz
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIApA
QCAtNTk5LDggKzU4NCw2IEBAIHdlYmtpdC5vcmcvYi8xNjI5NzUgaHR0cC90ZXN0cy9jYWNoZS9k
aXNrLWNhY2hlL21lbW9yeS1jYWNoZS1yZXZhbGlkYXRpb24tdXBkYXRlCiAKIHdlYmtpdC5vcmcv
Yi8xNjE2NTMgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNjM0NTMgWyBTaWVycmEgUmVsZWFzZSBd
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1
cmUtcmVxdWVzdHMvYmFzaWMtdXBncmFkZS1jb3JzLmh0dHBzLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQotCiB3ZWJraXQub3JnL2IvMTYzNzAyIHBsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1z
dGF0ZS5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjQ4NzAgWyBEZWJ1ZyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmN1cnNvcl9pdGVyYXRp
bmcuaHRtIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTYxMSw4ICs1OTQsNiBAQCB3ZWJraXQub3JnL2Iv
MTY1MzUyIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWNvbnRlbnRzLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTY3NjUzIGh0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvYmxvY2stZXZlcnl0aGluZy11bmxlc3MtZG9tYWluLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQogCi13ZWJraXQub3JnL2IvMTY3MjA2IFsgU2llcnJhIFJlbGVhc2UgXSBtYXRobWwvb3BlbnR5
cGUvbGFyZ2Utb3BlcmF0b3JzLWRpc3BsYXlzdHlsZS1keW5hbWljLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTY4MDY1IGluc3BlY3Rvci91bml0LXRlc3Rz
L2hlYXAtc25hcHNob3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAogd2Via2l0Lm9y
Zy9iLzE2ODIzNSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUtYS1lbGVtZW50L2EtZG93bmxvYWQt
Y2xpY2suaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC02MzgsMTYgKzYxOSwxMCBAQCB3ZWJraXQu
b3JnL2IvMTcxNzYzIGNvbXBvc2l0aW5nL3RpbGluZy9ub24tYWN0aXZlLXdpbmRvdy10aWxlcy1z
aXplLmh0bWwgWyBQYXNzCiAKIHdlYmtpdC5vcmcvYi8xNzE4MzcgWyBEZWJ1ZyBdIGh0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzE5MzkgWyBTaWVycmEgUmVsZWFzZSBdIG1lZGlh
L3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctb24tcmVzaXplLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQotCi13ZWJraXQub3JnL2IvMTcxOTQ3IFsgU2llcnJhIFJlbGVhc2UgXSB0cmFuc2l0aW9ucy9l
eHRyYS10cmFuc2l0aW9uLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcw
Njk5IFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJh
cHBhcGlzL3RpbWVycy9uZWdhdGl2ZS1zZXR0aW1lb3V0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTY4OTM3ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9mYXN0LXNjcm9s
bC1pZnJhbWUtbGF0Y2hlZC1tYWluZnJhbWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8xNzIwNTQgWyBTaWVycmEgRGVidWcgXSBsb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxh
Y2VzdGF0ZS1zaXplLWlmcmFtZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9i
LzE3MjQ1NCBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MzE4OCBmYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRp
YS1ncmFudC1wZXJzaXN0ZW5jeTMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC02NjEsMTAgKzYz
NiwxMCBAQCB3ZWJraXQub3JnL2IvMTg3NjQ5IGVkaXRpbmcvc2VsZWN0aW9uL3VwZGF0ZS1zZWxl
Y3Rpb24tYnktc3R5bGUtY2hhbmdlLmh0bWwgWyBQYQogIyBUb3VjaCBldmVudHMgYXJlIG5vdCBh
dmFpbGFibGUgb24gb3BlbiBzb3VyY2UgYm90cywgdGh1cyBvbmx5IHRlc3RlZCBvbiBNYWMuCiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1pbi1jcm9z
cy1vcmlnaW4tc3ViLWZyYW1lLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1y
ZW1vdmFsLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L3JlcXVlc3QtYW5kLWdyYW50LWFjY2Vzcy10aGVuLW5hdmlnYXRlLWNyb3NzLXNpdGUtc2hvdWxk
LW5vdC1oYXZlLWFjY2Vzcy1kYXRhYmFzZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLVsgSGlnaFNp
ZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5v
dC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0
dXJlLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy8gWyBQ
YXNzIF0KK2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3Mt
dGhlbi1uYXZpZ2F0ZS1jcm9zcy1zaXRlLXNob3VsZC1ub3QtaGF2ZS1hY2Nlc3MtZGF0YWJhc2Uu
aHRtbCBbIFBhc3MgVGltZW91dCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRo
LXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9kZW55LXdpdGgtcHJvbXB0LWRvZXMtbm90LXByZXNlcnZlLWdlc3R1
cmUtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQogCiAjIEVuYWJsZSBhZ2FpbiB3aGVuIGZpeGluZyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDAwLgogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy10cnVlLWlmLXRoaXJkLXBhcnR5LWhh
cy1jb29raWVzLWVwaGVtZXJhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCkBAIC02OTMsOCArNjY4
LDYgQEAgd2Via2l0Lm9yZy9iLzE3MzY3MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2h0dHAtY2FjaGUvaW52YWxpZGF0ZS4KIAogd2Via2l0Lm9yZy9iLzE3MzUwMCBodHRw
L3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZW1vdmUtY3JlZGVudGlhbHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzI4MjkgWyBTaWVycmEgRGVidWcgXSBsb2FkZXIv
c3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS1zaXplLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotCiB3
ZWJraXQub3JnL2IvMTc1NzgxIHN2Zy9pbi1odG1sL2J5LXJlZmVyZW5jZS5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3NjA1NCBtZWRpYS92aWRlby1jb250cm9scy1pbi1t
ZWRpYS1kb2N1bWVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTcxMywzMCArNjg2LDMwIEBA
IHdlYmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRv
dy1mYW1pbHkuaHRtbCBbIFBhc3MgSW1hCiB3ZWJraXQub3JnL2IvMTg1OTk0IGZhc3QvdGV4dC91
c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC1mYW1pbHkuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgUmVlbmFibGVkIHRlc3RzIGZvciBzdXBwb3J0ZWQgcGxh
dGZvcm1zCi1bIE1vamF2ZSsgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZXh0ZW5k
ZWQtY2hhcmFjdGVyLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvdGV4dC91c2VyLWlu
c3RhbGxlZC1mb250cy9leHRlbmRlZC1jaGFyYWN0ZXItd2l0aC11c2VyLWZvbnQuaHRtbCBbIFBh
c3MgXQorZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci5o
dG1sIFsgUGFzcyBdCitmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZXh0ZW5kZWQtY2hh
cmFjdGVyLXdpdGgtdXNlci1mb250Lmh0bWwgWyBQYXNzIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
MjUwMTAzMDc+Ci1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQ
YXlFcnJvci5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uVjMuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gaHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjQuaHRtbCBbIFBhc3MgXQotWyBNb2ph
dmUrIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUuaHRtbCBbIFBh
c3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5UmVx
dWVzdFNoaXBwaW5nQ29udGFjdFYzLmh0dHBzLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQWRkcmVzc0NoYW5nZUV2
ZW50RXJyb3JzVjMuaHR0cHMuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGFjY2Vzc2li
aWxpdHkvbWFjL2FwcGxlLXBheS1sYWJlbHMuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gYWNj
ZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LXNlc3Npb24tdjQuaHRtbCBbIFBhc3MgXQoraHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlFcnJvci5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WMy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNC5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RTaGlwcGluZ0NvbnRhY3RWMy5odHRwcy5odG1s
IFsgUGFzcyBdCitodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQWRkcmVz
c0NoYW5nZUV2ZW50RXJyb3JzVjMuaHR0cHMuaHRtbCBbIFBhc3MgXQorYWNjZXNzaWJpbGl0eS9t
YWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsgUGFzcyBdCithY2Nlc3NpYmlsaXR5L21hYy9hcHBs
ZS1wYXktc2Vzc2lvbi12NC5odG1sIFsgUGFzcyBdCiAjIDxyZGFyOi8vcHJvYmxlbS8zMTYzNDQ1
MT4KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29v
a2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQotWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVs
ZXRpb24uaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlcy1jYW4tYWNjZXNzLWNvb2tpZXMt
aW4tYS10aGlyZC1wYXJ0eS1jb250ZXh0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0
Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBd
Ci1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFy
LWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVy
cmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1h
bmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmEr
IF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwg
WyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMuaHRt
bCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlcXVlc3RzLmh0
bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFz
cyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llcy13aXRoLWFuZC13
aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1kZWxldGlvbi5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vz
cy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sIFsgUGFzcyBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0Lmh0bWwg
WyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtcmVtb3Zl
LWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUuaHRtbCBb
IFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9y
eS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1m
b3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5
LXJlcXVlc3RzLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwgWyBQYXNzIF0K
IAogIyBUaGUgU2FtZVNpdGUgY29va2llIEFQSSBpcyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBD
YXRhbGluYSBhbmQgYWJvdmUuCiBbIENhdGFsaW5hKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgUGFz
cyBdCkBAIC03NDQsOSArNzE3LDYgQEAgd2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNl
ci1pbnN0YWxsZWQtZm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwKICMgU2tpcHBl
ZCBpbiBnZW5lcmFsIGV4cGVjdGF0aW9ucyBzaW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5k
IE1hYywgV0syLgogbWVkaWEvZGVhY3RpdmF0ZS1hdWRpby1zZXNzaW9uLmh0bWwgWyBQYXNzIF0K
IAotIyBMaW5rIHByZWNvbm5lY3QgaXMgZGlzYWJsZWQgb24gcHJlLUhpZ2ggU2llcnJhIGJlY2F1
c2UgdGhlIENGTmV0d29yayBTUEkgaXMgbWlzc2luZy4KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9w
cmVjb25uZWN0IFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8xNzc2ODcgaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZS1zaXplcy1tZW1vcnktY2FjaGUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzg0NzIgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS1oYW5kbGVkLWtleWRvd24uaHRtbCBbIFNraXAgXQpA
QCAtNzU0LDEwICs3MjQsNiBAQCB3ZWJraXQub3JnL2IvMTc4NDcyIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11cwogCiB3ZWJraXQub3Jn
L2IvMTc2ODgxIHBsdWdpbnMvanMtZnJvbS1kZXN0cm95Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMTc4NTUzIFsgSGlnaFNpZXJyYSBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24vb3Bl
bmluZy10aGUtaW5wdXQtc3RyZWFtLzAxMS5odG1sIFsgU2tpcCBdCi0KLXdlYmtpdC5vcmcvYi8x
NjU2MjAgWyBTaWVycmEgXSBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1y
ZXF1ZXN0LWhlYWRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzk3
NzMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYWJvcnQvc2Vydmlj
ZXdvcmtlci1pbnRlcmNlcHRlZC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE3NjA3OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQ
ZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpA
QCAtNzkyLDkgKzc1OCw3IEBAIHdlYmtpdC5vcmcvYi8xODA5ODIgWyBEZWJ1ZyBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlCiAKIHdlYmtpdC5vcmcv
Yi8xODIxNzYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvYXBwY2FjaGUtb3JkZXJpbmctbWFpbi5odHRwcy5odG1sIFsgU2tpcCBd
CiAKLXdlYmtpdC5vcmcvYi8xODM4NjkgWyBIaWdoU2llcnJhKyBdIG1lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy9zZWVrLWJhY2t3YXJkLXN1cHBvcnQvc2Vlay1iYWNrd2FyZC1zdXBwb3J0Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQotCi13ZWJraXQub3JnL2IvMTgzODYwIFsgU2llcnJh
IFJlbGVhc2UgXSBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvdGhpcmQtcGFydHktcmVnaXN0cmF0
aW9uLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4Mzg2OSBtZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvc2Vlay1iYWNrd2FyZC1zdXBwb3J0L3NlZWstYmFja3dhcmQtc3Vw
cG9ydC5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzE4NDI0NSBo
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1jYWNoZS1hcGkuaHR0cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTg0NSwxNyArODA5LDE1IEBAIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1s
IFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIFsgU2tp
cCBdCiAKLSMgTkZDIHN1cHBvcnQgcmVxdWlyZSBDYXRhbGluYSssIHRoZXJlZm9yZSBza2lwIHRo
ZW0gZm9yIEhpZ2hTaWVycmEgYW5kIE1vamF2ZS4KLVsgSGlnaFNpZXJyYSBNb2phdmUgXSBodHRw
L3dwdC93ZWJhdXRobi9jdGFwLW5mYy1mYWlsdXJlLmh0dHBzLmh0bWwgWyBTa2lwIF0KLVsgSGln
aFNpZXJyYSBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBNb2ph
dmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBNb2phdmUgXSBodHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbmZjLmh0dHBzLmh0
bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KKyMg
TkZDIHN1cHBvcnQgcmVxdWlyZSBDYXRhbGluYSssIHRoZXJlZm9yZSBza2lwIHRoZW0gZm9yIE1v
amF2ZS4KK1sgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRw
cy5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQorWyBNb2ph
dmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBd
CitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTgzODc4IG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy90cmFja3MtcGFuZWwvdHJhY2tzLXBhbmVsLXVwLWNs
aWNrLW92ZXItbWVkaWEtZG9lcy1ub3QtZGltaXNzLW1lZGlhLWNvbnRyb2xzLXdoZW4tbWVkaWEt
aXMtcGxheWluZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0gCiAKLXdlYmtpdC5vcmcvYi8xOTE2NTgg
WyBTaWVycmEgUmVsZWFzZSBdIGZhc3QvbGF5ZXJzL25vLWNsaXBwaW5nLW92ZXJmbG93LWhpZGRl
bi1hZGRlZC1hZnRlci10cmFuc2Zvcm0uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0K
IHdlYmtpdC5vcmcvYi8xOTQ4MjYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Rv
LW5vdC1ibG9jay10b3AtbGV2ZWwtbmF2aWdhdGlvbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBUaW1l
b3V0IF0KIAogd2Via2l0Lm9yZy9iLzE5NDkxNiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LXZpZGVvLWVsZW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC04OTAsMTYgKzg1MiwxNiBA
QCB3ZWJraXQub3JnL2IvMTk4NjYzIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFu
ZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZwogCiB3ZWJraXQub3JnL2IvMTc2MDMwIFsgRGVidWcg
XSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb2JqZWN0LXRvc3RyaW5nLWNo
ZWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk4OTIxIFsgTW9qYXZl
KyBdIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTg5MjEgd2ViZ3B1L2JsZW5kLWNvbG9yLXRyaWFu
Z2xlLXN0cmlwLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTk5NjUxIFsgTW9qYXZlIERlYnVnIF0gd2ViZ3B1L3dobHNsL2J1aWx0aW4tdmVjdG9ycy0yLmh0
bWwgWyBTbG93IF0KIAotd2Via2l0Lm9yZy9iLzE5OTA4OSBbIE1vamF2ZSsgRGVidWcgXSBwbHVn
aW5zL3dpbmRvdy1vcGVuLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xOTkwODkgWyBEZWJ1
ZyBdIHBsdWdpbnMvd2luZG93LW9wZW4uaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxl
bS81NjUwNjA2Mz4gTGF5b3V0IFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgaXMg
YSBmbGFreSBmYWlsdXJlICgyMDMyNTYpCiB3ZWJraXQub3JnL2IvMjAzMjU2IFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1p
Y2VDb25uZWN0aW9uU3RhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5v
cmcvYi8yMDUzMDEgWyBNb2phdmUrIF0gaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291
cmNlLXdlYmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDUzMDEgaW5z
cGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNlLXdlYmdwdS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNTgwOCBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC91bmlj
b2RlLWJpZGktb3RoZXItbmV1dHJhbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTEwNzQs
NCArMTAzNiw0IEBAIHdlYmtpdC5vcmcvYi8yMDk2MjQgWyBSZWxlYXNlIF0gdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvZml4ZWQvZm91ci1iYXJzLXpvb21lZC5oCiAKIHdlYmtpdC5vcmcvYi8yMDk2
NzIgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNo
Lmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMjA5Njg4
IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci1zdXBwb3J0L3NjcnViYmVyLXN1
cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKK3dlYmtpdC5vcmcvYi8yMDk2ODggbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnVi
YmVyLXN1cHBvcnQvc2NydWJiZXItc3VwcG9ydC1jbGljay5odG1sIFsgUGFzcyBDcmFzaCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcxMTAxMTExMzJj
OGVhZGViODEwYzAwMDZhZmNiNzFiYWM2ZTVkZDQuLjQwODA1ZTE0ZDA4Mzk4OTMxZGM2OTc0MTFh
ZWUxYjQ4OWI1MzdkOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zNCw4ICszNCw3IEBAIGZhc3QvZXZlbnRzL2RvLW5vdC1kcmFnLWFuZC1kcm9wLWRh
dGEtZGV0ZWN0b3JzLWxpbmsuaHRtbCBbIFBhc3MgXQogCiBodHRwL3Rlc3RzL2d6aXAtY29udGVu
dC1lbmNvZGluZyBbIFBhc3MgXQogCi1bIFNpZXJyYSBIaWdoU2llcnJhIF0gaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9nemlwLWNvbnRlbnQtdHlwZS1uby1jb250ZW50LWVuY29kaW5nLmh0bWwg
WyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ3ppcC1j
b250ZW50LXR5cGUtbm8tY29udGVudC1lbmNvZGluZy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2d6aXAtY29udGVudC10eXBlLW5vLWNvbnRlbnQtZW5jb2RpbmcuaHRt
bCBbIFBhc3MgXQogCiBmYXN0L3RleHQvbWFjIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTgxOTY0
IGZhc3QvdGV4dC9tYWMvc2VsZWN0LWNoYXJhY3Rlci1iZWZvcmUtemVyby13aWR0aC1qb2luZXIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTQ4LDkgKzE0Nyw2IEBAIGZhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24taWNlLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tbWVkaWEtc2V0dXAtY2FsbGJhY2tzLXNpbmdsZS1kaWFsb2cu
aHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy5o
dG1sIFsgU2tpcCBdCiAKLVsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9wYWdlL292ZXJyaWRlU2V0
dGluZy1JQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNp
ZXJyYSBdIGluc3BlY3Rvci9wYWdlL292ZXJyaWRlU2V0dGluZy1Nb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkLmh0bWwgWyBTa2lwIF0KLQogIyBBc3NlcnRzIGluIGRlYnVnLgogWyBEZWJ1ZyBdIGZh
c3QvaW1hZ2VzL2xhcmdlLXNpemUtaW1hZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogCkBAIC03NjYs
NyArNzYyLDcgQEAgd2Via2l0Lm9yZy9iLzEzMTg1NSBtZWRpYS9ldmVudC1hdHRyaWJ1dGVzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTMzMzYzIG1lZGlhL3Zp
ZGVvLXJ0bC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzM2
ODYgbWVkaWEvdHJhY2svdzNjL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL2FsaWduLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzNTA3MSBtZWRpYS92aWRlby1zZWVrLXdpdGgt
bmVnYXRpdmUtcGxheWJhY2suaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTM1
MTYwIFsgU2llcnJhKyBdIG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3VidGl0bGVzLXRvby1s
YXJnZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTM1MTYwIG1lZGlhL3RyYWNrL3Ry
YWNrLWluLWJhbmQtc3VidGl0bGVzLXRvby1sYXJnZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTM1MTYwIG1lZGlhL3RyYWNrL3RyYWNrLWxvbmctd29yZC1jb250YWluZXItc2l6aW5n
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzczMTEgbWVkaWEvdmlkZW8tZnVsbHNj
cmVlbi1vbmx5LXBsYXliYWNrLmh0bWwgWyBQYXNzIFRpbWVvdXQgQ3Jhc2ggXQogd2Via2l0Lm9y
Zy9iLzEzOTc4OSBtZWRpYS9tZWRpYS1jb250cm9scy10aW1lbGluZS11cGRhdGVzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQpAQCAtODU0LDcgKzg1MCw3IEBAIHdlYmtpdC5vcmcvYi8xMjIwMjEgbWVk
aWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMjIwMjEgbWVkaWEvdmlkZW8tY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzExNjI2NiBtZWRpYS92aWRlby1jb250cm9scy10b2dn
bGluZy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNjMyMzEgWyBTaWVycmErIF0gbWVk
aWEvY29udHJvbHMvYWlycGxheS1waWNrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTYzMjMxIG1lZGlhL2NvbnRyb2xzL2FpcnBsYXktcGlja2VyLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCiAjIC0tLSBFbmQgbWVkaWEgdGVzdHMgLS0tCiB3ZWJraXQub3JnL2IvMTM2OTk0
IGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvb2tpZS5odG1sIFsgRmFpbHVyZSBdCkBAIC0x
MDEzLDcgKzEwMDksNiBAQCB3ZWJraXQub3JnL2IvMTQ4NjM2IGluc3BlY3Rvci9jc3Mvc2VsZWN0
b3ItZHluYW1pYy1zcGVjaWZpY2l0eS5odG1sIFsgUGFzcyBUaW1lbwogd2Via2l0Lm9yZy9iLzE0
ODYzNiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9yLXNwZWNpZmljaXR5Lmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogd2Via2l0Lm9yZy9iLzE1ODc0MiBbIERlYnVnIF0gaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrLWluLWNvbnN0cnVjdG9yLWJlZm9yZS1zdXBlci5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdl
YmtpdC5vcmcvYi8xNjM2MDQgaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2
YWwuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTY4MzM4IFsgU2llcnJhIF0g
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWRldGFjaC5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNjU3NzIgaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9p
bnQtYWN0aW9uLWxvZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjEzODcg
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLXdpdGgtZXhjZXB0aW9uLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2NDI5MyBbIERlYnVnIF0gaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCkBAIC0xMDU5
LDcgKzEwNTQsNyBAQCB3ZWJraXQub3JnL2IvMTQ5MTI4IGZhc3QvdGV4dC9jb250cm9sLWNoYXJh
Y3RlcnMgWyBJbWFnZU9ubHlGYWlsdXJlIF0KICMgVG91Y2ggZXZlbnRzIGFyZSBub3QgZW5hYmxl
ZCBvbiBNYWMKIHdlYmtpdC5vcmcvYi8xNDk1OTIgZmFzdC9zaGFkb3ctZG9tL3RvdWNoLWV2ZW50
LWlvcy5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNDk4MTkgWyBEZWJ1ZyBTaWVycmEr
IF0gY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KK3dl
YmtpdC5vcmcvYi8xNDk4MTkgWyBEZWJ1ZyBdIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rl
ci5odG1sIFsgUGFzcyBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xNjg5NTMgWyBSZWxlYXNlIF0g
Y29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBA
IC0xMDk2LDIxICsxMDkxLDIxIEBAIGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdGlvbi1lbGVtZW50
LXRhYmJpbmctdG8tbGluay5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1
MjUwNiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2dldC1leHRlbnNpb24uaHRt
bCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNTQ3MDkgWyBTaWVycmErIF0gZmFz
dC90ZXh0L2NyYXNoLWNvbXBsZXgtdGV4dC1zdXJyb2dhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTU0NzA5IGZhc3QvdGV4dC9jcmFzaC1jb21wbGV4LXRleHQtc3Vycm9n
YXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU1MDkyIGpzL2FycmF5
YnVmZmVyLXdyYXBwZXJzLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTU1
MTQwIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0zLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzE4NzEwMyBqcy9lcnJvci1zaG91bGQtbm90LXN0cm9uZy1y
ZWZlcmVuY2UtZ2xvYmFsLW9iamVjdC5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13
ZWJraXQub3JnL2IvMTU1NTA1IFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby5odG1sIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMTU1NTA1IFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTU1NTA1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTU1NTA1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby5odG1sIFsgU2tpcCBdCiAK
IHdlYmtpdC5vcmcvYi8xNTQ2ODggaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250cm9s
bGVyLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTU2MTEyIFsgU2llcnJh
KyBdIG1lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8xNTYxMTIgWyBTaWVycmErIF0gbWVkaWEvY29udHJvbHMtc3RyaWN0Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NjExMiBbIFNpZXJyYSsgXSBtZWRp
YS9jb250cm9scy13aXRob3V0LXByZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTU2MTEyIG1lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTYxMTIgbWVkaWEvY29udHJvbHMtc3RyaWN0Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1NjExMiBtZWRpYS9jb250cm9scy13aXRo
b3V0LXByZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTYzNTEg
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtcHJpdmF0ZS5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIApAQCAtMTEyNiw0NCArMTEyMSw0NCBAQCB3ZWJraXQub3JnL2Iv
MTU4MTAxIGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucy9nZXQtdXJsLW5vdGlmeS1v
bi1yZW1vdmFsLgogd2Via2l0Lm9yZy9iLzE1ODUzNCBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvZHlu
YW1pYy1iYWNrZHJvcC1maWx0ZXItY2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQogCiAjIFRoZXNlIHRlc3RzIGhhcmRjb2RlIHBsYXRmb3JtLXNwZWNpZmljIGZvbnQgYWxpYXNl
cy4KLXdlYmtpdC5vcmcvYi8xNTg2NDkgWyBTaWVycmErIF0gZmFzdC90ZXh0L2NoaW5lc2UtZm9u
dC1uYW1lLWFsaWFzZXMtMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTU4NjQ5IGZhc3QvdGV4dC9jaGluZXNlLWZvbnQtbmFtZS1hbGlhc2VzLTIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU4ODg5IG1lZGlhL3ZpZGVvLWNvbnRyb2xz
LXNob3ctb24ta2Itb3ItYXgtZXZlbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAot
WyBTaWVycmErIF0gZmFzdC9jc3MvYXBwZWFyYW5jZS1hcHBsZS1wYXktYnV0dG9uLmh0bWwgWyBQ
YXNzIF0KK2Zhc3QvY3NzL2FwcGVhcmFuY2UtYXBwbGUtcGF5LWJ1dHRvbi5odG1sIFsgUGFzcyBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzIzNTAwMzI3PiBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1p
bmZvLXRhYmxlLmh0bWwKLVsgU2llcnJhKyBdIHN0b3JhZ2Uvd2Vic3FsL2FsdGVyLXRvLWluZm8t
dGFibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZv
LXRhYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yMzUwNDc0
OT4gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvcmVzcG9uc2UtbWV0aG9kLmh0
bSBmYWlsaW5nCi1bIFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9yZXNwb25zZS1tZXRob2QuaHRtIFsgUGFzcyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gWyBQYXNzIEZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8yMzUwNTU4Mj4gRmFpbHMgb24gaU1hYzEwLDEgYW5kIGlNYWMx
MSwxCi1bIFNpZXJyYSsgXSBmYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VTbW9vdGhpbmdFbmFibGVk
LXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VT
bW9vdGhpbmdFbmFibGVkLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgU2llcnJh
IHN1cHBvcnRzIHRydWUgZm9udCBmZWF0dXJlIGNvdmVyYWdlIHF1ZXJpZXMuIFdlIHVzZSB0aGUg
LWNvdmVyYWdlIHZlcnNpb25zIG9mIHRoZXNlIHRlc3RzIGluc3RlYWQuCi1bIFNpZXJyYSsgXSBj
c3MzL2ZvbnQtdmFyaWFudC1zbWFsbC1jYXBzLXN5bnRoZXNpcy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1bIFNpZXJyYSsgXSBjc3MzL2ZvbnQtdmFyaWFudC1wZXRpdGUtY2Fwcy1zeW50aGVz
aXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorY3NzMy9mb250LXZhcmlhbnQtc21hbGwtY2Fw
cy1zeW50aGVzaXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorY3NzMy9mb250LXZhcmlhbnQt
cGV0aXRlLWNhcHMtc3ludGhlc2lzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRh
cjovL3Byb2JsZW0vMjUyNzkxODk+IExheW91dFRlc3QgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhl
ZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS5odG1sIGlzIGZsYWt5
Ci1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1h
dWRpby12aWRlby1pbi1tYWluLWZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQoraHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFt
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjU3ODAwMzU+IENT
UCBkb2VzIG5vdCBpZ25vcmUgcGF0aHMgZm9yIG1lZGlhIHJlZGlyZWN0cwotWyBTaWVycmErIF0g
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3Qt
YWxsb3dlZDIuaHRtbCBbIFNraXAgXQotWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZDIuaHRtbCBbIFNraXAg
XQoraHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJl
Y3QtYWxsb3dlZDIuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZDIuaHRtbCBbIFNraXAgXQogCiAjIHJk
YXI6Ly9wcm9ibGVtLzI2OTUyNjI3Ci1bIFNpZXJyYSsgXSBjc3MzL2ZpbHRlcnMvYmFja2Ryb3Av
YmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBjc3MzL2ZpbHRlcnMvYmFj
a2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi5o
dG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNr
ZHJvcC1maWx0ZXItd2l0aC1ib3JkZXItcmFkaXVzLWFuZC1yZWZsZWN0aW9uLWFkZC5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1m
aWx0ZXItd2l0aC1ib3JkZXItcmFkaXVzLWFuZC1yZWZsZWN0aW9uLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9ibGVtLzI3MTQxMjkxCi1bIFNpZXJyYSsgXSBl
ZGl0aW5nL3NlbGVjdGlvbi90cmlwbGUtY2xpY2staW4tcHJlLmh0bWwgWyBGYWlsdXJlIF0KK2Vk
aXRpbmcvc2VsZWN0aW9uL3RyaXBsZS1jbGljay1pbi1wcmUuaHRtbCBbIEZhaWx1cmUgXQogCiAj
IHJkYXI6Ly9wcm9ibGVtLzMxMjQzODI0CiB3ZWJraXQub3JnL2IvMTU4NzQ3IG1lZGlhL3Jlc3Rv
cmUtZnJvbS1wYWdlLWNhY2hlLmh0bWwgWyBQYXNzIEZhaWx1cmUgQ3Jhc2ggXQogCiAjIFNlZSBh
bHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI0OTQKLXdlYmtp
dC5vcmcvYi8xNTEyODcgWyBTaWVycmErIF0gbWVkaWEvY29udHJvbHMvaW5saW5lLWVsZW1lbnRz
LWRyb3BvZmYtb3JkZXIuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1MTI4NyBtZWRp
YS9jb250cm9scy9pbmxpbmUtZWxlbWVudHMtZHJvcG9mZi1vcmRlci5odG1sIFsgRmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xNTg1MDAgc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2Ut
cHJpdmF0ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTE3MiwyNSArMTE2NywyNSBAQCB3
ZWJraXQub3JnL2IvMTYzMTIyIGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2It
dmFsaWQtYWZ0ZXItZGVsZXRpb24uaAogd2Via2l0Lm9yZy9iLzEyODMxMiBtZWRpYS92aWRlby1s
b2FkLXByZWxvYWQtbWV0YWRhdGEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgcmRhcjovL3By
b2JsZW0vMjc0NzUxNjIKLVsgU2llcnJhKyBdIGNvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci5odG1s
IFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJy
YSsgXSBmYXN0L3RleHQvZW1vamktbnVtLWdseXBocy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi0zLmh0bWwgWyBQ
YXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdl
bmRlci0yLTQuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBm
YXN0L3RleHQvZW1vamktZ2VuZGVyLTItNS5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5
NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi02Lmh0bWwgWyBQYXNzIF0K
LXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0y
LTcuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3Rl
eHQvZW1vamktZ2VuZGVyLTItOC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsg
U2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi05Lmh0bWwgWyBQYXNzIF0KLQotd2Vi
a2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYt
My5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4
dC9lbW9qaS1nZW5kZXItZmUwZi00Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUg
WyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTUuaHRtbCBbIFBhc3MgXQot
d2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZl
MGYtNi5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3Qv
dGV4dC9lbW9qaS1nZW5kZXItZmUwZi03Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3
NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTguaHRtbCBbIFBhc3Mg
XQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVy
LWZlMGYtOS5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZh
c3QvdGV4dC9lbW9qaS1nZW5kZXIuaHRtbCBbIFBhc3MgXQorY29tcG9zaXRpbmcvdmlkZW8vcG9z
dGVyLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQorCit3ZWJraXQub3JnL2IvMTU5NzU1
IGZhc3QvdGV4dC9lbW9qaS1udW0tZ2x5cGhzLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8x
NTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTMuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9y
Zy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNC5odG1sIFsgUGFzcyBdCit3ZWJr
aXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi01Lmh0bWwgWyBQYXNzIF0K
K3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTYuaHRtbCBbIFBh
c3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNy5odG1s
IFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi04
Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRl
ci0yLTkuaHRtbCBbIFBhc3MgXQorCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItZmUwZi0zLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90
ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1
NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtNS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3Jn
L2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi02Lmh0bWwgWyBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTcuaHRtbCBbIFBh
c3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtOC5o
dG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
ZmUwZi05Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2pp
LWdlbmRlci5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xNjExNDQgaHR0cC90ZXN0cy9t
ZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tbWVudS5odG1sIFsgU2tp
cCBdCiAKQEAgLTExOTgsMTggKzExOTMsMTQgQEAgd2Via2l0Lm9yZy9iLzE2MTg4MyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9Qcm9jZXNzaW5nSW5zdHJ1Y3QKIAog
d2Via2l0Lm9yZy9iLzE2MjMwOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1kdXJhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Vi
a2l0Lm9yZy9iLzE2MjUyMyBbIFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzE2MjUyMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMTYyNjI2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWxpdmVzZWVrYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzE2MjY0NyBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L29uYWJvcnQtcmVzcG9uc2UtZ2V0dGVycy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8xNjI2NDcgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmFib3J0LXJlc3BvbnNlLWdl
dHRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjI4MzAgWyBEZWJ1
ZyBdIGZhc3QvZXZlbnRzL3RhYmluZGV4LWZvY3VzLWJsdXItYWxsLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogCi0jIFZhcmlhdGlvbiBmb250cyBhcmUgbm90IGltcGxlbWVudGVkIGVhcmxpZXIgdGhh
biBIaWdoIFNpZXJyYS4KLVsgU2llcnJhIF0gZmFzdC90ZXh0L3ZhcmlhdGlvbnMgWyBQYXNzIEZh
aWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBdCi1bIFNpZXJyYSBdIGFuaW1hdGlvbnMvZm9udC12YXJp
YXRpb25zIFsgUGFzcyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgVGltZW91dCBdCi0KIFsgRGVi
dWcgXSBmYXN0L3NlbGVjdG9ycy9zbG93LXN0eWxlLXNoYXJpbmctd2l0aC1sb25nLWNvdXNpbi1s
aXN0Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE2MTcyMCBbIERlYnVnIF0gc3RvcmFn
ZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbCBbIFBhc3MgVGltZW91dCBdCkBAIC0xMzAx
LDggKzEyOTIsNiBAQCB3ZWJraXQub3JnL2IvMTcwODMxIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmctcnRsLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTY1NTUz
IG1lZGlhL21lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLXVwZGF0ZXMtd2hlbi1ob3ZlcmVkLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcxMjcyIFsgU2llcnJhIF0gZmFzdC90
ZXh0L2thaXRoaS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzE0
NjUgbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
IAogd2Via2l0Lm9yZy9iLzE3MTc2MCBpbXBvcnRlZC93M2MvaTE4bi9iaWRpL2JpZGktcGxhaW50
ZXh0LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0xMzM3LDkgKzEzMjYsNiBAQCB3
ZWJraXQub3JnL2IvMTY5MTU4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy90cmFja3Mtc3Vw
cG9ydC90cmFja3Mtc3VwcG9ydC1zaAogCiB3ZWJraXQub3JnL2IvMTcwOTA3IFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9kZXJpdmVfYml0c19r
ZXlzL2hrZGYuaHR0cHMud29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKLXdl
YmtpdC5vcmcvYi8xNzMzMjggWyBTaWVycmEgXSBmYXN0L3RleHQvc3lzdGVtLWZvbnQtZmFsbGJh
Y2stZW1vamkuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3MzMyOCBbIFNpZXJyYSBd
IGZhc3QvdGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8xNzgwODMgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1w
YWludC10by1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTczMDY4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlX2dl
dEtleS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTEzODcsMTI2ICsxMzczLDEyNiBAQCB3ZWJr
aXQub3JnL2IvMTYxNDkxIG1lZGlhL3ZpZGVvLW1haW4tY29udGVudC1hbGxvdy10aGVuLXNjcm9s
bC5odG1sIFsgUGFzcyBGYWlsdQogd2Via2l0Lm9yZy9iLzE3MjA1MiBbIERlYnVnIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvdGltZXJzL3R5cGUtbG9u
Zy1zZXRpbnRlcnZhbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
MjkwMzE1MDk+IFJFR1JFU1NJT04/IChGb250UGFyc2VyLTE5NSk6IHN2Zy9XM0MtU1ZHLTEuMS9m
b250cy1lbGVtLSogYW5kIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLSogdGVzdHMgZmFpbGlu
ZwotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAxLXQuc3ZnIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDIt
dC5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMt
ZWxlbS0wMy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEu
MS9mb250cy1lbGVtLTA3LWIuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1cz
Qy1TVkctMS4xL3RleHQtaW50cm8tMDEtdC5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsg
XSBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0wMi1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTAzLWIuc3ZnIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDQtdC5zdmcgWyBG
YWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My5zdmcg
WyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvYmF0aWsvdGV4dC90ZXh0UG9zaXRpb24y
LnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9jdXN0b20vYWNpZDMtdGVzdC03
Ny5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL2N1c3RvbS9zdmctZm9udHMt
ZmFsbGJhY2sueGh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvd2ljZC90ZXN0
LXJpZ2h0c2l6aW5nLWIueGh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9pbml0aWFsLWxldHRlci1maXJzdC1saW5lLXdyYXBwaW5nLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlICBdCitzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMS10
LnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDItdC5zdmcgWyBG
YWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAzLWIuc3ZnIFsgRmFpbHVyZSBd
CitzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1cz
Qy1TVkctMS4xL3RleHQtaW50cm8tMDEtdC5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEu
MS90ZXh0LWludHJvLTAyLWIuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEvdGV4dC1p
bnRyby0wMy1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDQt
dC5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9iYXRpay90ZXh0L3RleHRFZmZlY3QzLnN2ZyBbIEZhaWx1
cmUgXQorc3ZnL2JhdGlrL3RleHQvdGV4dFBvc2l0aW9uMi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9j
dXN0b20vYWNpZDMtdGVzdC03Ny5odG1sIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL3N2Zy1mb250
cy1mYWxsYmFjay54aHRtbCBbIEZhaWx1cmUgXQorc3ZnL3dpY2QvdGVzdC1yaWdodHNpemluZy1i
LnhodG1sIFsgRmFpbHVyZSBdCitmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9pbml0aWFsLWxl
dHRlci1maXJzdC1saW5lLXdyYXBwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlICBdCiAKICMg
PHJkYXI6Ly9wcm9ibGVtLzMwNDkzOTEwPiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0IGZhc3Qvd3Jp
dGluZy1tb2RlL2Jyb2tlbi1pZGVvZ3JhcGgtc21hbGwtY2Fwcy5odG1sIGZhaWxpbmcKLVsgSGln
aFNpZXJyYSsgXSBmYXN0L3dyaXRpbmctbW9kZS9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMu
aHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3dyaXRpbmctbW9kZS9icm9r
ZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMwMTgyNDAxPiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0IG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWJvcnQtcmVzZXRzLXBhcnNlci5odG1sIGZh
aWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFi
b3J0LXJlc2V0cy1wYXJzZXIuaHRtbCBbIEZhaWx1cmUgXQorbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1hYm9ydC1yZXNldHMtcGFyc2VyLmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRh
cjovL3Byb2JsZW0vMzA1MTcyODM+IFJFR1JFU1NJT046IExheW91dFRlc3RzIHNlY3VyaXR5L2Js
b2NrLXRlc3QuaHRtbCBhbmQgc2VjdXJpdHkvYmxvY2stdGVzdC1uby1wb3J0Lmh0bWwgZmFpbGlu
ZwotWyBIaWdoU2llcnJhKyBdIHNlY3VyaXR5L2Jsb2NrLXRlc3QuaHRtbAotWyBIaWdoU2llcnJh
KyBdIHNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sCitzZWN1cml0eS9ibG9jay10ZXN0
Lmh0bWwKK3NlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzMxMTc3OTkwPiBSRUdSRVNTSU9OOiBjYW52YXMvMmQuZ3JhZGllbnQuKiBMYXlvdXRUZXN0
cyBmYWlsaW5nCiAjIFRoZXNlIGFyZSBpbXBvcnRlZCB0ZXN0cywgc28gd2UnbGwgaGF2ZSB0byBw
dXNoIGNoYW5nZXMgYmFjayB0byBXM0MuCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2Nh
bnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjEuaHRtbCBbIEZhaWx1cmUgXQotWyBI
aWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQubGluZWFyLnRyYW5z
Zm9ybS4yLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2Fu
dmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMy5odG1sIFsgRmFpbHVyZSBdCi1bIEhp
Z2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS5i
b3R0b20uaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuY3lsaW5kZXIuaHRtbCBbIEZhaWx1cmUgXQotWyBI
aWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUu
ZnJvbnQuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuc2hhcGUxLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGln
aFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLnRv
cC5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8y
ZC5ncmFkaWVudC5yYWRpYWwuaW5zaWRlMS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmEr
IF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuaW5zaWRlMi5odG1sIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVu
dC5yYWRpYWwuaW5zaWRlMy5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0
ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTEuaHRtbCBbIEZhaWx1cmUg
XQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFs
Lm91dHNpZGUyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5vdXRzaWRlMy5odG1sIFsgRmFpbHVyZSBdCi1bIEhp
Z2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwudG91Y2gy
Lmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2NhbnZhcy9jYW52YXMtYmxl
bmRpbmctZmlsbC1zdHlsZS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9j
YW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmEr
IF0gZmFzdC9jYW52YXMvc2V0LWNvbG9ycy5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMS5odG1sIFsgRmFpbHVyZSBdCitp
bXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMi5odG1sIFsg
RmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zv
cm0uMy5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJh
ZGlhbC5jb25lLmJvdHRvbS5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJk
LmdyYWRpZW50LnJhZGlhbC5jb25lLmN5bGluZGVyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuZnJvbnQuaHRtbCBbIEZhaWx1cmUg
XQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS5zaGFwZTEuaHRt
bCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29u
ZS50b3AuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5y
YWRpYWwuaW5zaWRlMS5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdy
YWRpZW50LnJhZGlhbC5pbnNpZGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTMuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQv
dzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTEuaHRtbCBbIEZhaWx1cmUgXQor
aW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTIuaHRtbCBbIEZh
aWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTMu
aHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwu
dG91Y2gyLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvY2FudmFzL2NhbnZhcy1ibGVuZGluZy1maWxs
LXN0eWxlLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3Iu
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9jYW52YXMvc2V0LWNvbG9ycy5odG1sIFsgRmFpbHVyZSBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMxMzIyNDI1PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0IG1l
ZGlhL3ZpZGVvLW9yaWVudGF0aW9uLmh0bWwgaXMgZmFpbGluZwotWyBIaWdoU2llcnJhKyBdIG1l
ZGlhL3ZpZGVvLW9yaWVudGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK21lZGlhL3ZpZGVvLW9yaWVu
dGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBXZWJDcnlwdG9BUEkgZmVhdHVyZXMgdGhhdCBl
bmFibGVkIG9ubHkgZm9yIEhpZ2ggU2llcnJhL2lPUyAxMQotWyBIaWdoU2llcnJhKyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5
L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsg
SGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQ
SS93cmFwS2V5X3Vud3JhcEtleS90ZXN0X3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5l
cmF0ZS1leHBvcnQta2V5LWp3ay1zaGExLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBj
cnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMjI0Lmh0bWwg
WyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUt
ZXhwb3J0LWtleS1qd2stc2hhMjU2Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlw
dG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMzg0Lmh0bWwgWyBQ
YXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhw
b3J0LWtleS1qd2stc2hhNTEyLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8v
c3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1wa2NzOC5odG1sIFsgUGFzcyBdCi1b
IEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXkt
c3BraS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2ll
cnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktZW1wdHkt
dXNhZ2VzLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1w
c3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJh
KyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMjI0Lmh0
bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0
LWp3ay1wdWJsaWMta2V5LXNoYTI1Ni5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBh
c3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1
YmxpYy1rZXktc2hhNTEyLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3Vi
dGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLWxhcmdlLXNhbHQuaHRtbCBbIFBhc3MgXQotWyBI
aWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5LXNpZ24uaHRtbCBb
IFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5
LXZlcmlmeS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2Et
cHNzLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0
by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1rZXktZW1wdHktdXNhZ2VzLmh0bWwgWyBQYXNz
IF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LXNwa2kta2V5
Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNh
LXBzcy1pbXBvcnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0
by93b3JrZXJzL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0K
LVsgSGlnaFNpZXJyYSsgXSBodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkuaHRtbCBb
IFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvd3B0L2NyeXB0by9yc2EtcHNzLWNyYXNoLmFu
eS53b3JrZXIuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJDcnlwdG9BUEkvd3JhcEtleV91bndyYXBLZXkvd3JhcEtleV91bndyYXBLZXkuaHR0cHMud29y
a2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJDcnlwdG9BUEkvd3JhcEtleV91bndyYXBLZXkvdGVzdF93cmFwS2V5X3Vud3JhcEtleS5o
dHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0
ZS1leHBvcnQta2V5LWp3ay1zaGExLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBz
cy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1
YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTI1Ni5odG1sIFsgUGFzcyBd
CitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMzg0Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3
ay1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4
cG9ydC1rZXktcGtjczguaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVy
YXRlLWV4cG9ydC1rZXktc3BraS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
Z2VuZXJhdGUta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQt
andrLXByaXZhdGUta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQtandrLXB1YmxpYy1rZXktZW1wdHktdXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0
bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMS5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTIyNC5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTI1Ni5o
dG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5
LXNoYTM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1w
dWJsaWMta2V5LXNoYTUxMi5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1w
b3J0LWtleS1zaWduLWxhcmdlLXNhbHQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Et
cHNzLWltcG9ydC1rZXktc2lnbi5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
aW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWlt
cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1zcGtpLWtleS1lbXB0eS11c2FnZXMuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Et
cHNzLWltcG9ydC1zcGtpLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vd29ya2Vycy9zdWJ0bGUv
cnNhLXBzcy1pbXBvcnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3dvcmtlcnMvc3Vi
dGxlL3JzYS1wc3MtaW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQoraHR0cC93cHQvY3J5
cHRvL3JzYS1wc3MtY3Jhc2guYW55Lmh0bWwgWyBQYXNzIF0KK2h0dHAvd3B0L2NyeXB0by9yc2Et
cHNzLWNyYXNoLmFueS53b3JrZXIuaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8z
MjM1MjcwMj4gUkVHUkVTU0lPTjogZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1hcHBl
YXJhbmNlcyBMYXlvdXRUZXN0cyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9kb20vSFRN
TE1ldGVyRWxlbWVudC9tZXRlci1hcHBlYXJhbmNlcy1jYXBhY2l0eS5odG1sIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1hcHBlYXJh
bmNlcy1yYXRpbmctcmVsZXZhbmN5Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRl
ckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHkuaHRtbCBbIEZhaWx1cmUgXQorZmFz
dC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1hcHBlYXJhbmNlcy1yYXRpbmctcmVsZXZhbmN5
Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI2MjAwMjQ+IFJFR1JFU1NJ
T046IExheW91dFRlc3RzIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0aC5zdHJva2Uuc2NhbGUy
Lmh0bWwgYW5kIGltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwg
YXJlIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdGgu
c3Ryb2tlLnNjYWxlMi5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQv
dzNjL2NhbnZhcy8yZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRtbCBbIEZhaWx1cmUgXQorY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRtbCBbIEZhaWx1cmUgXQoraW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRtbCBbIEZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8zMjc5OTU3Mz4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0
L3RleHQvaXBhLXRvbmUtbGV0dGVycy5odG1sIGlzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBm
YXN0L3RleHQvaXBhLXRvbmUtbGV0dGVycy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L3RleHQvaXBh
LXRvbmUtbGV0dGVycy5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNzk5
NjI0PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBjc3MzL2ZvbnQtdmFyaWFudC1wZXRpdGUtY2Fw
cy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBhbmQgY3NzMy9mb250LXZhcmlhbnQtc21hbGwtY2Fw
cy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBhcmUgZmFpbGluZwotWyBIaWdoU2llcnJhKyBdIGNz
czMvZm9udC12YXJpYW50LXBldGl0ZS1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gY3NzMy9mb250LXZhcmlhbnQtc21hbGwt
Y2Fwcy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorY3NzMy9m
b250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLWNvdmVyYWdlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLWNvdmVy
YWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI3OTk1
OTY+IFJFR1JFU1NJT046IExheW91dFRlc3RzIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGll
bnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBhbmQgaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFk
aWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnNvbGlkLmh0bWwgWyBGYWls
dXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50Lmlu
dGVycG9sYXRlLnNvbGlkLmh0bWwgWyBGYWlsdXJlIF0KK2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
Z3JhZGllbnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNj
L2NhbnZhcy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzMyODAwMDk1PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0IGltcG9y
dGVkL2JsaW5rL2Zhc3QvZ3JhZGllbnRzL2dyYWRpZW50LXRyYW5zcGFyZW5jeS5odG1sIGlzIGZh
aWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC9ibGluay9mYXN0L2dyYWRpZW50cy9ncmFk
aWVudC10cmFuc3BhcmVuY3kuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvYmxp
bmsvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtdHJhbnNwYXJlbmN5Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI4MjYzOTE+IExheW91dFRlc3QgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRlci1jb250ZW50LXR5
cGUuaHRtIGlzIGZhaWxpbmcgb24gSGlnaCBTaWVycmEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZXRyZXF1ZXN0aGVhZGVyLWNvbnRlbnQtdHlw
ZS5odG0gWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Nl
dHJlcXVlc3RoZWFkZXItY29udGVudC10eXBlLmh0bSBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8v
cHJvYmxlbS8zMjg2NDMwNj4gVW5za2lwIGFmdGVyIGJvdHMgaGF2ZSBDVEZvbnRDb3B5UGh5c2lj
YWxGb250KCkKLVsgSGlnaFNpZXJyYSsgXSBmYXN0L3RleHQvc3lzdGVtLWZvbnQtamFwYW5lc2Ut
c3ludGhldGljLWl0YWxpYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3QvdGV4
dC9zeXN0ZW0tZm9udC1qYXBhbmVzZS1zeW50aGV0aWMtaXRhbGljLmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQogCiAjIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgdmFyaWF0aW9uIGZv
bnRzIGFyZSBkaXNhYmxlZCBvbiBPU2VzIHdoaWNoIGRvbid0IHN1cHBvcnQgdGhlbS4gU28sCiAj
IHRoZSB0ZXN0IHNob3VsZCBiZSBza2lwcGVkIG9uIE9TZXMgd2hpY2ggZG8gc3VwcG9ydCB0aGVt
LiBBcyBzb29uIGFzIGFsbCBPU2VzIHN1cHBvcnQgdGhlbSwKICMgd2Ugc2hvdWxkIGRlbGV0ZSB0
aGUgdGVzdC4KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L3RleHQvZm9udC12YXJpYXRpb25zLWZlYXR1
cmUtZGV0ZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3QvdGV4dC9mb250LXZh
cmlhdGlvbnMtZmVhdHVyZS1kZXRlY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS8zMzQzNzU5Nz4gTXVsdGlwbGUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaCBhcmUgZmFpbGluZyBvbiBIaWdoIFNpZXJyYQotWyBIaWdoU2llcnJh
KyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVl
c3QtaGVhZGVycy5hbnkud29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhl
YWRlcnMuYW55Lmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy5hbnkud29ya2VyLmh0bWwgWyBGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3Jl
cXVlc3QtaGVhZGVycy5hbnkuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8z
MzczMTA4Nj4KLVsgSGlnaFNpZXJyYSsgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdGlt
ZS1sYWJlbHMtc3VwcG9ydC9lbGFwc2VkLXRpbWUuaHRtbCBbIFNraXAgXQorbWVkaWEvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL3RpbWUtbGFiZWxzLXN1cHBvcnQvZWxhcHNlZC10aW1lLmh0bWwgWyBT
a2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM4NTAxODk+Ci1bIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1s
IFsgRmFpbHVyZSBdCitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJh
bWUtcGFyYW1ldGVyLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3NzMxOSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1mb3Jt
LWVsZW1lbnQvZm9ybS1lbGVtZW50cy1maWx0ZXIuaHRtbCBbIEZhaWx1cmUgXQogCkBAIC0xNTIw
LDE5ICsxNTA2LDkgQEAgd2Via2l0Lm9yZy9iLzE3NzgyNiBpbnNwZWN0b3IvZG9tL2NzcC1iaWc1
LWhhc2guaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNzU5OTggaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLXdpdGgtc2VjdXJlLWNvb2tp
ZXMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgQVZDb250ZW50S2V5U2Vzc2lvbiBub3QgYXZh
aWxhYmxlIHByZS1IaWdoIFNpZXJyYQotWyBTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2Zwcy1jcmVhdGVNZWRpYUtleXMuaHRtbCBbIFNraXAgXQotWyBTaWVycmEg
XSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Zwcy1yZXF1ZXN0TWVkaWFLZXlT
eXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2Zwcy1jcmVhdGVTZXNzaW9uLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJh
IF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtZ2VuZXJhdGVSZXF1ZXN0
Lmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9mcHMtZW5jcnlwdGVkLWV2ZW50Lmh0bWwgWyBTa2lwIF0KLQogIyBVc2VyLWluc3RhbGxl
ZCBmb250IGluZnJhc3RydWN0dXJlIGlzIG9ueSBwcmVzZW50IG9uIGNlcnRhaW4gT1Nlcy4KLXdl
YmtpdC5vcmcvYi8xODAwNjIgWyBTaWVycmEgSGlnaFNpZXJyYSBdIGZhc3QvdGV4dC91c2VyLWlu
c3RhbGxlZC1mb250cy9kaXNhYmxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xODAwNjIgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRvdy1wb3N0c2Ny
aXB0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODAwNjIgZmFzdC90
ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMTg3MjI4IFsgU2llcnJhIEhpZ2hTaWVycmEgXSBmYXN0L3RleHQvdXNl
ci1pbnN0YWxsZWQtZm9udHMvbG9jYWwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAKIHdl
YmtpdC5vcmcvYi8xODA1NjAgYWNjZXNzaWJpbGl0eS9tYWMvaHRtbDUtaW5wdXQtbnVtYmVyLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC0xNTQ2LDEwICsxNTIyLDYgQEAgd2Via2l0Lm9yZy9i
LzE4MTQ3OSBodHRwL3Rlc3RzL21pc2Mvc2xvdy1sb2FkaW5nLWFuaW1hdGVkLWltYWdlLmh0bWwg
WyBQYXNzIEltYWcKIAogd2Via2l0Lm9yZy9iLzE4MTQ5NCBhY2Nlc3NpYmlsaXR5L21hYy9hcmlh
LW11bHRpcGxlLWxpdmVyZWdpb25zLW5vdGlmaWNhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotIyBBIGxvdCBvZiBHUFUgaGFyZHdhcmUgc2ltcGx5IGNyYXNoZXMgd2l0aCB0aGVzZSB0ZXN0
cywgc2luY2UgdGhleSBhbGxvY2F0ZSBhIGxvdCBvZiBtZW1vcnkuCi0jIFRoZXkgYXJlIGVuYWJs
ZWQgb24gc3lzdGVtcyB0aGF0IGluc3RlYWQgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlkuCi1bIFNp
ZXJyYSBdIGZhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24td2l0aC1zdWJzZXF1ZW50
LWRyYXdzLmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE4MDI2MCBodHRwL3dwdC9yZXNv
dXJjZS10aW1pbmcvcnQtcmVzb3VyY2VzLXBlci13b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKIHdlYmtpdC5vcmcvYi8xODE4MzAgWyBEZWJ1ZyBdIG1lZGlhL3ZpZGVvLW1haW4tY29udGVu
dC1hbGxvdy10aGVuLWRlbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xNTYyLDcgKzE1MzQs
NyBAQCB3ZWJraXQub3JnL2IvMTgxNTY1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbgogCiB3ZWJraXQub3JnL2IvMTgxOTY5IGZhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xODE4MzEg
WyBIaWdoU2llcnJhKyBdIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVpZ2h0cy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xODE4MzEgZmFzdC9mb3Jtcy9zZWFyY2hmaWVsZC1o
ZWlnaHRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTczOTQ2IFsgRGVi
dWcgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvZnVsbHNjcmVlbi1zdXBwb3J0L2Z1bGxz
Y3JlZW4tc3VwcG9ydC1wcmVzcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTU3OSwxNSAr
MTU1MSwxMiBAQCB3ZWJraXQub3JnL2IvMTgzNzY0IGZhc3QvY3NzL2FwcGxlLXN5c3RlbS1jb250
cm9sLWNvbG9ycy5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODQxMTYgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5k
ZXg3LWV2ZW50X29yZGVyLmh0bSBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzc2
MTYgWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2Ut
Y29udGFpbnMtY3VycmVudFRpbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCit3ZWJraXQub3JnL2Iv
MTc3NjE2IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMtY3Vy
cmVudFRpbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xODQ2MTAgbWVk
aWEvdmlkZW8tdm9sdW1lLXNsaWRlci1kcmFnLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJr
aXQub3JnL2IvMTg0NjEyIG1lZGlhL2F1ZGlvLWNvbmN1cnJlbnQtc3VwcG9ydGVkLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCi0jIEZvbnQgY29sbGVjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24g
ZXZlcnkgT1MuCi13ZWJraXQub3JnL2IvMTg0NjI0IFsgU2llcnJhIF0gZmFzdC90ZXh0L2ZvbnQt
Y29sbGVjdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xODQ0
NTcgbWVkaWEvdmlkZW8tYXNwZWN0LXJhdGlvLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTg0NjA5IHBsYXRmb3JtL21hYy9tZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5
LXZpZGVvLXRyYWNrLWNoYW5nZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTE1OTksMTMgKzE1
NjgsNiBAQCB3ZWJraXQub3JnL2IvMTg1NjU5IFsgRGVidWcgXSBhbmltYXRpb25zL25lZWRzLWxh
eW91dC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdQogIyBtYWNPUyBkb2Vzbid0IGhhdmUgSUNV
IHY1OQogd2Via2l0Lm9yZy9iLzE4NTM3NSBqcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8t
cGFydHMuaHRtbCBbIEZhaWx1cmUgXQogCi0jIDw9IEhpZ2ggU2llcnJhIGRvZXNuJ3Qgc3VwcG9y
dCBNb2Rlcm4gRU1FCi1bIEhpZ2hTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVk
LW1lZGlhL2Zwcy1jcmVhdGVNZWRpYUtleXMuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0g
cGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRlU2Vzc2lvbi5odG1s
IFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL2Zwcy1lbmNyeXB0ZWQtZXZlbnQuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0gcGxh
dGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtZ2VuZXJhdGVSZXF1ZXN0Lmh0bWwg
WyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvZnBzLXJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcy5odG1sIFsgU2tpcCBdCi0KICMgSW1w
b3J0ZWQgY3NzLXRleHQgdGVzdCBzdWl0ZSBmcm9tIFdQVAogd2Via2l0Lm9yZy9iLzE4MzI1OCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9pMThuL2NzczMtdGV4
dC1saW5lLWJyZWFrLW9wY2xucy0wMTAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4
dC9pMThuL2NzczMtdGV4dC1saW5lLWJyZWFrLW9wY2xucy0wMTEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQpAQCAtMTYyOSw1NiArMTU5MSw1MCBAQCBmYXN0L2Nzcy9wc2V1ZG8tdmlzaXRlZC1i
YWNrZ3JvdW5kLWNvbG9yLW9uLWlucHV0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzE4NzM5MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4
dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1vcmlnaW4uc3ViLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlIFsgUGFz
cyBdCitodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlIFsgUGFzcyBdCiAKICMgRklYTUU6IE1h
cmsgYXMgUGFzcyBvbmNlIDxyZGFyOi8vcHJvYmxlbS80NzE2NTkzOT4gaXMgZml4ZWQuCi1bIE1v
amF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvb25seS1hY2NlcHQtZmlyc3QtcGFydHktY29va2ll
cy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2Nvb2tpZXMvb25seS1hY2NlcHQtZmlyc3QtcGFy
dHktY29va2llcy5odG1sIFsgU2tpcCBdCiAKICMgRklYTUU6IE1hcmsgYXMgUGFzcyBvbmNlIHRo
ZSBmaXggZm9yIDxyZGFyOi8vcHJvYmxlbS80MjI1NTI1MT4gaXMgc2hpcHBlZC4KLVsgTW9qYXZl
KyBdIGh0dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LWNyb3NzLXNp
dGUtY29va2llcy5waHAgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMvY29va2llcy9z
YW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LXNhbWUtc2l0ZS1jb29raWVzLnBocCBbIFNraXAgXQor
aHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9zZXQtZmlyc3QtcGFydHktY3Jvc3Mtc2l0ZS1j
b29raWVzLnBocCBbIFNraXAgXQoraHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9zZXQtZmly
c3QtcGFydHktc2FtZS1zaXRlLWNvb2tpZXMucGhwIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzM2NjM5MTE3PiBSRUdSRVNTSU9OIChNb2phdmUpOiBMYXlvdXRUZXN0IHN2Zy9jdXN0b20v
c3VicGF0aHMtbW92ZXRvLW9ubHktcmVuZGVyaW5nLnN2ZyBpcyBmYWlsaW5nCi1bIE1vamF2ZSsg
XSBzdmcvY3VzdG9tL3N1YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBGYWlsdXJl
IF0KK3N2Zy9jdXN0b20vc3VicGF0aHMtbW92ZXRvLW9ubHktcmVuZGVyaW5nLnN2ZyBbIEZhaWx1
cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MDQ5ODI5MD4gUkVHUkVTU0lPTiAoTW9qYXZlKTog
SFRNTE1ldGVyRWxlbWVudCBMYXlvdXRUZXN0cyBmYWlsaW5nCi1bIE1vamF2ZSsgXSBmYXN0L2Rv
bS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWJvdW5kYXJ5LXZhbHVlcy5odG1sIFsgRmFpbHVyZSBd
Ci1bIE1vamF2ZSsgXSBmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWVsZW1lbnQtcmVw
YWludC1vbi11cGRhdGUtdmFsdWUuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZmFzdC9k
b20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9q
YXZlKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItb3B0aW11bXMuaHRtbCBbIEZh
aWx1cmUgXQotWyBNb2phdmUrIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1zdHls
ZXMuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1ib3Vu
ZGFyeS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9t
ZXRlci1lbGVtZW50LXJlcGFpbnQtb24tdXBkYXRlLXZhbHVlLmh0bWwgWyBGYWlsdXJlIF0KK2Zh
c3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCitm
YXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwgWyBGYWlsdXJlIF0K
K2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0bWwgWyBGYWlsdXJlIF0K
IAogIyA8cmRhcjovL3Byb2JsZW0vNDExMDMyNjA+IFJFR1JFU1NJT04gKE1vamF2ZSk6IFRocmVl
IHRleHQgdGVzdHMgZmFpbGluZyB3aXRoIHNtYWxsIGFudGlhbGlhc2luZyg/KSBkaWZmcwotWyBN
b2phdmUrIF0gZmFzdC9pbmxpbmUvYnJlYWstYmV0d2Vlbi1ub2JyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLVsgTW9qYXZlKyBdIGltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL3RleHQtc2hhcGluZy1hcmFiaWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotWyBNb2ph
dmUrIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdmVydGljYWwtcG9z
aXRpb25pbmctd2l0aC1jb21iaW5pbmctbWFya3MuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
Ci0jIDwgTW9qYXZlIHVzZXMgZm9udCBzbW9vdGhpbmcuCi1bIFNpZXJyYSBIaWdoU2llcnJhIF0g
Y29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L3N1YnBpeGVsLWFudGlhbGlhc2VkLXRleHQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQorZmFzdC9pbmxpbmUvYnJlYWstYmV0d2Vlbi1ub2JyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL3RleHQtc2hhcGluZy1hcmFiaWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1w
b3J0ZWQvYmxpbmsvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdmVydGljYWwtcG9zaXRpb25pbmct
d2l0aC1jb21iaW5pbmctbWFya3MuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIDwgTW9q
YXZlIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgQ0cgbmVlZGVkIGZvciBDb25pYyBHcmFkaWVudHMKLVsg
TW9qYXZlKyBdIGh0dHAvd3B0L2Nzcy9jc3MtaW1hZ2VzLTQvY29uaWMtZ3JhZGllbnQtcGFyc2lu
Zy5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1yZXBlYXRp
bmcuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMuaHRtbCBb
IFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtb2ZmLWNlbnRlci5odG1s
IFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1jZW50ZXItb3V0c2lk
ZS1ib3guaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtZXh0
ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29u
aWMtZnJvbS1hbmdsZS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9j
b25pYy1yZXBlYXRpbmctbGFzdC1zdG9wLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3Qv
Z3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBd
IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWV4dGVuZGVkLXN0b3BzLmh0bWwgWyBQYXNz
IF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50Lmh0bWwgWyBQYXNz
IF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLXR3by1oaW50cy5odG1sIFsgUGFz
cyBdCitodHRwL3dwdC9jc3MvY3NzLWltYWdlcy00L2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRt
bCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLmh0bWwgWyBQYXNzIF0K
K2Zhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2Nvbmlj
LW9mZi1jZW50ZXIuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtY2VudGVyLW91
dHNpZGUtYm94Lmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLWV4dGVuZGVkLXN0
b3BzLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLWZyb20tYW5nbGUuaHRtbCBb
IFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLWxhc3Qtc3RvcC5odG1sIFsg
UGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgUGFzcyBd
CitmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFz
cyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFzcyBdCitmYXN0L2dy
YWRpZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3MgXQogWyBNb2phdmUgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL211bHRpcGxlLXBvc2l0aW9u
LWNvbG9yLXN0b3AtY29uaWMuaHRtbCBbIFBhc3MgXQogCiAjIERhcmsgTW9kZSBpcyBNb2phdmUg
YW5kIGxhdGVyLgotWyBNb2phdmUrIF0gY3NzLWRhcmstbW9kZSBbIFBhc3MgXQotWyBNb2phdmUr
IF0gY3NzLWRhcmstbW9kZS9vbGRlci1zeXN0ZW1zIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBpbnNw
ZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsg
XSBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwg
WyBQYXNzIF0KLQotIyBUZXN0IERhcmsgTW9kZSBDU1Mgc3VwcG9ydCBmb3IgbGlnaHQgbW9kZSBv
biBvbGRlciBzeXN0ZW1zLgotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNzcy1kYXJrLW1vZGUvb2xk
ZXItc3lzdGVtcyBbIFBhc3MgXQorY3NzLWRhcmstbW9kZSBbIFBhc3MgXQorY3NzLWRhcmstbW9k
ZS9vbGRlci1zeXN0ZW1zIFsgU2tpcCBdCitpbnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFy
YW5jZS5odG1sIFsgUGFzcyBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNv
bG9yLWZpbHRlcmVkLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE4OTY4NiB3ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJk
LXdpdGgtYXJyYXktYnVmZmVyLXZpZXcuaHRtbCBbIFNsb3cgXQogCkBAIC0xNjk0LDE0ICsxNjUw
LDYgQEAgd2Via2l0Lm9yZy9iLzE5MDg5MiBbIERlYnVnIF0gd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvdGV4LXVucGFjay0KIAogd2Via2l0Lm9yZy9iLzE5MDk3NiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFu
Z2V0eXBlLXBsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTkyNzUg
WyBIaWdoU2llcnJhIF0gd2ViZ3B1IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGln
aFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8xOTkyNzUgWyBIaWdoU2llcnJhIF0gaW5zcGVjdG9yL2NhbnZh
cy9yZXF1ZXN0Q2xpZW50Tm9kZXMtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8x
OTkyNzUgWyBIaWdoU2llcnJhIF0gaW5zcGVjdG9yL2NhbnZhcy9yZXF1ZXN0U2hhZGVyU291cmNl
LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBd
IGluc3BlY3Rvci9jYW52YXMvcmVzb2x2ZUNvbnRleHQtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xOTkyNzUgWyBIaWdoU2llcnJhIF0gaW5zcGVjdG9yL2NhbnZhcy9zaGFkZXJQ
cm9ncmFtLWFkZC1yZW1vdmUtd2ViZ3B1Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xOTky
NzUgWyBIaWdoU2llcnJhIF0gaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItd2ViZ3B1Lmh0
bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE4OTY4MCBwbGF0Zm9ybS9tYWMvbWVkaWEvYXVk
aW8tc2Vzc2lvbi1jYXRlZ29yeS12aWRlby1wYXVzZWQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
IHdlYmtpdC5vcmcvYi8xOTU0NjYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9h
dXRvcGxheS5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KQEAgLTE3MjksNyArMTY3Nyw3IEBA
IHdlYmtpdC5vcmcvYi8xOTYxMTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXRo
bWwvcmVsYXRpb25zL2Nzcy1zdHlsaW5nCiAjIEZsYWt5IGZvciBub24gTWF0aE1MIGNvcmUuCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24tbWFya3Vw
L3NjcmlwdHMvY3JhbXBlZC0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcv
Yi8xOTY1MCBbIEhpZ2hTaWVycmErIF0gYWNjZXNzaWJpbGl0eS9tYWMvcHJlc3Mtbm90LXdvcmst
Zm9yLWRpc2FibGVkLW1lbnUtbGlzdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xOTY1MCBhY2Nlc3NpYmlsaXR5L21hYy9wcmVzcy1ub3Qtd29yay1mb3ItZGlzYWJsZWQtbWVu
dS1saXN0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFNraXAgaU9TLXNwZWNpZmljIFBvaW50
ZXIgRXZlbnRzIFdQVCB0ZXN0cy4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcG9p
bnRlcmV2ZW50cy9wb2ludGVyZXZlbnRfY2hhbmdlLXRvdWNoLWFjdGlvbi1vbnBvaW50ZXJkb3du
X3RvdWNoLmh0bWwgWyBTa2lwIF0KQEAgLTE3NDQsMTYgKzE2OTIsMTYgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXJldmVudF9wb2ludGVyb3V0
X3Blbi5odG1sIFsKIAogd2Via2l0Lm9yZy9iLzE5NzQ3MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Jlc291cmNlLXRpbWluZy9yZXNvdXJjZS10aW1pbmctbGV2ZWwxLnN1Yi5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEzNjYyNyBbIE1vamF2ZSsgXSBtZWRp
YS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMzY2MjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNh
bC5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQ3MDg4OTM5PgotWyBNb2ph
dmUrIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1tZWRpYWVsZW1lbnRhdWRpb3NvdXJjZW5vZGUtaW50ZXJmYWNlL21lZGlhRWxlbWVu
dEF1ZGlvU291cmNlVG9TY3JpcHRQcm9jZXNzb3JUZXN0Lmh0bWwgIFsgRmFpbHVyZSBdCi1bIE1v
amF2ZSsgXSB3ZWJhdWRpby9yZWFsdGltZWFuYWx5c2VyLWZmdC1zY2FsaW5nLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQotWyBNb2phdmUrIF0gd2ViYXVkaW8vb3NjaWxsYXRvci1zaW5lLmh0bWwgWyBT
a2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtbWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9tZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZVRvU2NyaXB0UHJvY2Vzc29yVGVzdC5odG1sICBbIEZhaWx1cmUgXQord2Vi
YXVkaW8vcmVhbHRpbWVhbmFseXNlci1mZnQtc2NhbGluZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYmF1ZGlvL29zY2lsbGF0b3Itc2luZS5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8x
OTkwMTMgWyBEZWJ1ZyBNb2phdmUrIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzb2NrZXRzL0NyZWF0ZS1TZWN1cmUtdmVyaWZ5LXVybC1zZXQtbm9uLWRlZmF1bHQtcG9ydC5h
bnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk5MDEzIFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvQ3JlYXRlLVNlY3VyZS12
ZXJpZnktdXJsLXNldC1ub24tZGVmYXVsdC1wb3J0LmFueS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzE5MDg4MiBbIE1vamF2ZSsgXSBhbmltYXRpb25zL2NoYW5nZS1vbmUt
YW5pbS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xOTA4ODIgYW5pbWF0aW9u
cy9jaGFuZ2Utb25lLWFuaW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzQ4NzgxMDk4PgogWyBDYXRhbGluYSsgXSBmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy1k
cmF3Lmh0bWwgWyBQYXNzIF0KQEAgLTE4NDcsMTQgKzE3OTUsMTIgQEAgd2Via2l0Lm9yZy9iLzIw
MjUyMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9wYXRoLW9iamVj
dHMvMmQucGEKIAogd2Via2l0Lm9yZy9iLzIwMjU5OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzLzJkY29udGV4dC9saW5lLXN0eWxlcy8yZC5saW5lLmNhcC5yb3VuZC5odG1sIFsgRmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTg4NjcgWyBNb2phdmUrIF0gd2ViZ2wvbWFueS1jb250
ZXh0cy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTk4ODY3IHdlYmdsL21hbnktY29udGV4
dHMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMjAzMTcxIGluc3BlY3Rvci9sYXllcnMv
bGF5ZXJzLWZvci1ub2RlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjAz
NDE2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9i
ZWZvcmUtbG9hZC0wMDEuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjAzMzA1IFsg
SGlnaFNpZXJyYSBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMDMzMDUgWyBIaWdoU2llcnJhIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL3Byb3BlcnRpZXMtdmFsdWUtaW5o
ZXJpdC0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjAzMzU3IFsgRGVi
dWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMv
ZXZlbnQtZGlzcGF0Y2gudGVudGF0aXZlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIwMzM1NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zaXRpb25zL3Byb3BlcnRpZXMtdmFsdWUtMDAzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCkBAIC0xODcwLDcgKzE4MTYsNyBAQCB3ZWJraXQub3JnL2IvMjA0ODIwIFsgQ2F0YWxpbmEr
IF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci02Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogd2Via2l0
Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItOC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA0ODIwIFsgQ2F0YWxpbmErIF0g
ZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci05Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Vi
a2l0Lm9yZy9iLzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2VsZWN0aW9uL2NvbnRl
eHQtbWVudS1zZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIwNDI0NiBbIENhdGFsaW5hIF0gZWRpdGluZy9tYWMvc2VsZWN0aW9uL2NvbnRleHQtbWVudS1z
ZWxlY3QtZWRpdGFiaWxpdHkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8y
MDQyNDcgWyBDYXRhbGluYSBdIHdlYmF1ZGlvL3NpbGVuY2UtYWZ0ZXItcGxheWJhY2suaHRtbCBb
IEZhaWx1cmUgXQogCkBAIC0xODg1LDIwICsxODMxLDIwIEBAIHdlYmtpdC5vcmcvYi8yMDIwNjQg
d2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbCBbIFBh
c3MKIHdlYmtpdC5vcmcvYi8yMDU3NTcgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
dGV4dHVyZS11cGxvYWQtc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8y
MDU3NTYgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL25vLWF0dHJpYnV0ZS12ZXJ0ZXgt
c2hhZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1ODYyIFsgTW9q
YXZlKyBdIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNTg2NSBbIE1vamF2ZSsgXSB3ZWJncHUvd2hsc2wv
ZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZldGltZS0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNTg2NyBbIE1vamF2ZSsgXSB3ZWJncHUvZHJhdy1pbmRl
eGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMDU4NjIgd2ViZ3B1L3dobHNsL3doaWxlLWxvb3AtYnJlYWsuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1ODY1IHdlYmdwdS93aGxzbC9lbnN1cmUtcHJv
cGVyLXZhcmlhYmxlLWxpZmV0aW1lLTIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjA1ODY3IHdlYmdwdS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTk3MjA0IHdlYmV4cG9zZWQv
Y3NzLXByb3BlcnRpZXMtYmVoaW5kLWZsYWdzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFRo
ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UgdGVzdHMgcmVseSBvbiBmdW5jdGlvbmFsaXR5IG9ubHkgYXZh
aWxhYmxlIGluIHJlY2VudCByZWxlYXNlcyBvZiBtYWNPUyBDYXRhbGluYSBhbmQgb253YXJkLgot
d2Via2l0Lm9yZy9iLzIwMDA0MyBbIFNpZXJyYSBIaWdoU2llcnJhIE1vamF2ZSBDYXRhbGluYSBd
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3N5c3RlbS1sYW5ndWFnZS9uYXZpZ2F0b3ItbGFuZ3Vh
Z2UgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwMDA0MyBbIE1vamF2ZSBDYXRhbGlu
YSBdIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3N5c3RlbS1sYW5ndWFnZS9uYXZpZ2F0b3ItbGFu
Z3VhZ2UgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0MzEyIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9zdHJ1Y3QtZG9tLTA2LWItbWFudWFsLnN2
ZyBbIEZhaWx1cmUgUGFzcyBdCiAKICMgTG9jYWxlLXNwZWNpZmljIHNoYXBpbmcgaXMgb25seSBl
bmFibGVkIG9uIGNlcnRhaW4gT1Nlcy4KLXdlYmtpdC5vcmcvYi83NzU2OCBbIFNpZXJyYSBIaWdo
U2llcnJhIE1vamF2ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvNzc1NjggWyBTaWVycmEgSGlnaFNpZXJy
YSBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmctY29tcGxleC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvNzc1NjggWyBNb2phdmUgQ2F0YWxp
bmEgXSBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzc3NTY4IFsgTW9qYXZlIENhdGFsaW5hIF0gZmFzdC90ZXh0L2xvY2FsZS1z
aGFwaW5nLWNvbXBsZXguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MjAzMjIyIHN2Zy93aWNkL3JpZ2h0c2l6aW5nLWdyaWQueGh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CkBAIC0yMDE5LDggKzE5NjUsOCBAQCB3ZWJraXQub3JnL2IvMjA5MDg0IGNzczMvc2VsZWN0b3Jz
My94bWwvY3NzMy1tb2RzZWwtZDQueG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MDcxNTAgcGxhdGZvcm0vbWFjL3dlYnJ0Yy9jYXB0dXJlQ2FudmFzLXdlYnJ0Yy1zb2Z0d2FyZS1l
bmNvZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFRoZSBsaW5lIGJyZWFraW5nIHJ1bGVz
IGNoYW5nZWQgaW4gSUNVIDY2LiBXZSd2ZSB1cGRhdGVkIHRoZSB0ZXN0cyB0byBtYXRjaCwgYnV0
IG9sZCBwbGF0Zm9ybXMgd29uJ3QgZ2V0IHVwZGF0ZWQgbGluZSBicmVha2luZyBydWxlcy4KLXdl
YmtpdC5vcmcvYi8yMDkyNTAgWyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1icmVhay9saW5lLWJyZWFrLW5vcm1hbC0wMTUueGh0IFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA5MjUwIFsgU2llcnJhKyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1i
cmVhay1zdHJpY3QtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIw
OTI1MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJy
ZWFrL2xpbmUtYnJlYWstbm9ybWFsLTAxNS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMDkyNTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRl
eHQvbGluZS1icmVhay9saW5lLWJyZWFrLXN0cmljdC0wMTUueGh0IFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc4NTggZmFzdC9jYW52YXMvd2ViZ2wvc2ltdWxhdGVkLXZl
cnRleEF0dHJpYjAtaW52YWxpZC1pbmRpY2llcy5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0Y2MxMTUxOTBmZjc0
ZDViOGZlNGNjMjZkNGIyZDI2NGMyZWU1YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvbWFjL2lu
cHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVk
aXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byA0IG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgotMTIzNDU2Ci0xMCw1NzIsMCwxOAotMTgsNTcyLDAsMTgKLTYxLDU3MiwwLDE4Ci02
MSw1NzIsMCwxOAotMTAsNTcyLDgsMTgKLTUyLDU3Miw5LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcy
LDksMTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xMCw1NzIsNTEsMTgKLTE4LDU3Miw0
MywxOAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMAotMCwwLDAsMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90
ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dAppbmRl
eCA1YWFjZTA3NDAxMDEwNjBlY2NjNDkyMDU3NDg3YmM2YmQ4MzAzNzM5Li43NTg1OGNlNjUzOGE3
YzUyZDA4ZGY1YzNkMzJjNDEyMWUwNDI3NDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJp
YnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLWV4cGVjdGVkLnR4dApAQCAtOCw1ICs4LDUg
QEAgVGVzdGluZyB0ZXh0IHdpdGggYnIgZWxlbWVudHMgKDxkaXY+PGJyPjwvZGl2PmhlbGxvPGJy
PikKICgxLCAxMDApOiBoZWxsbwogKDYsIDEpOgogKDcsIDEpOgotKDEwMCwgMCk6IHVuZGVmaW5l
ZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKToKKygxMDAsIDEwMCk6CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90
ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0bWwKaW5kZXggM2E5MzAz
MjhlMTA2MDM5ZjE1MzEzZjRkYzQyYTE0NGVkZDhlYjQ1Yi4uOTQzMWEzOWU0ZTQ1M2IwYmE4ZTY1
NTA4MTJiNzc4ZjMyYmRmNWVkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmct
ZnJvbS1yYW5nZS0wMDEuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5IHsgbWFyZ2luOiAxMDsg
cGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigxLCAxMDApOiAiICsgdGV4dElucHV0Q29u
dHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEsIDEwMCkuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgbG9nKCIoNiwgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNiwgMSkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIo
NywgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFu
Z2UoNywgMSkuc3RyaW5nKCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKLSAgICAgICAgICAgIGxvZygi
KDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKLSAgICAgICAgICAgIGxvZygi
KDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCisgICAgICAgICAgICBs
b2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKKyAgICAgICAgICAgIGxvZygi
KDEwMCwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZSgxMDAsIDEwMCkpOyAvLyBzaG91bGQgYmUgZW1wdHkKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiIjsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQv
YXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKaW5kZXggZDc5N2Qy
MjMxMWMxZTNmOWU1NmUxN2VhMTczNThlYTFjMjlkZDZlNi4uNjgwMTI3OTA2YzFlODY3YmJmNmU4
MTI0MTc2Y2UxMjFlNDY4M2JmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC03LDggKzcsOCBAQCBUZXN0aW5nIHN0eWxl
ZCB0ZXh0ICgxMjxiPjM8aT40NTY8L2k+PC9iPikKICgwLCAxMDApOiAxMjM0NTYKICg1LCAxKTog
NgogKDUsIDIpOiA2Ci0oMTAwLCAwKTogdW5kZWZpbmVkCi0oMTAwLCAxMDApOiB1bmRlZmluZWQK
KygxMDAsIDApOiAKKygxMDAsIDEwMCk6IAogCiBUZXN0aW5nIHByb3BlciBzcGFjZSBydW5zICgx
Ll8yLl9fMy5fX180XzUpCiB0b3RhbCBsZW5ndGg6IDE1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJz
dHJpbmctZnJvbS1yYW5nZS5odG1sCmluZGV4IDg3MWRjN2IyN2FkZWVhNGUyNTM4NWViZmIzY2E0
MzRmMjI4OWIwYzMuLmNmNmM5MTFkNGI1NzViMmY3OTY0YzcxZWY1NjA3MzNlOTc1ZGJmNmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1z
dWJzdHJpbmctZnJvbS1yYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS5odG1sCkBAIC0zNCw4ICsz
NCw4IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KICAgICAgICAgICAgIGxvZygi
KDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMCwgMTAwKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBsb2coIig1LCAxKTogIiArIHRl
eHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg1LCAxKS5zdHJp
bmcoKSk7CiAgICAgICAgICAgICBsb2coIig1LCAyKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIu
YXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSg1LCAyKS5zdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBsb2coIigxMDAsIDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAg
ICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJz
dHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAg
ICAgICAgbG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1
YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAg
ICBsb2coIigxMDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJz
dHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGxvZygiXG5UZXN0aW5nIHByb3BlciBzcGFjZSBydW5zICgxLl8yLl9f
My5fX180XzUpIik7CiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICIxICZu
YnNwOzIgJm5ic3A7Jm5ic3A7MyAmbmJzcDsmbmJzcDsmbmJzcDs0Jm5ic3A7NSI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394878</attachid>
            <date>2020-03-29 16:42:39 -0700</date>
            <delta_ts>2020-03-29 17:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200329164237.patch</filename>
            <type>text/plain</type>
            <size>272150</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZmN2FkYWZlZGExMTJl
OGY4ZjY2YzJiOWJkZGU5YWU5YmExMDE3MS4uOGUwNjM4NWU4OTJmYmY0MWYxNTQ4M2ZiYjI1NGMw
NjBlYmUwZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMy0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgLSBQdXQgQ2hhcmFjdGVyUmFu
Z2UgaW50byBhIGhlYWRlciwgQ2hhcmFjdGVyUmFuZ2UuaC4KKyAgICAgICAgLSBSZXBsYWNlZCBD
aGFyYWN0ZXJPZmZzZXQgd2l0aCBkaXJlY3QgdXNlcyBvZiB1aW50NjRfdC4KKyAgICAgICAgICBC
ZWNhdXNlIHRoaXMgY2FuIGJlIGEgc2luZ2xlIG9mZnNldCBpbnRvIGFuIGVudGlyZSBkb2N1bWVu
dCwgdXNlIGEKKyAgICAgICAgICA2NC1iaXQgaW50ZWdlciBzbyB3ZSBkb24ndCBsaW1pdCBhbiBl
bnRpcmUgZG9jdW1lbnQgdG8gMl4zMiBjaGFyYWN0ZXJzOworICAgICAgICAgIGluIHRoZW9yeSB0
aGlzIG1ha2VzIGl0IHNvIHdlIGNhbiBzdXBwb3J0IGEgZG9jdW1lbnQgd2l0aCB0b25zIG9mCisg
ICAgICAgICAgdGV4dCBub2RlcyB0aGF0IGFkZCB1cCB0byBtb3JlIHRoYW4gMl4zMi4KKyAgICAg
ICAgLSBCZWNhdXNlIENoYXJhY3RlclJhbmdlIHVzZXMgNjQtYml0IGludGVnZXJzIHdlIGNhbiBu
b3cgY29udmVydCBtb3JlCisgICAgICAgICAgZWFzaWx5IHRvIGFuZCBmcm9tIE5TUmFuZ2UgYW5k
IENGUmFuZ2Ugb24gQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZTog
QWRkZWQgQ2hhcmFjdGVyUmFuZ2UuaC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKToKKyAgICAgICAgVXNlIENoYXJh
Y3RlclJhbmdlLCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAg
ICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKTogRGl0dG8uCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF90ZXh0TWFya2VyRm9ySW5kZXg6XSk6IERpdHRv
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKTog
VGFrZSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkTWFya2VyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRQbGF0Zm9ybVRleHRDaGVja2lu
Z01hcmtlcik6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5o
OiBFeHBvcnQgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIHNvIGl0IGNhbiBiZSB1c2VkCisg
ICAgICAgIG91dHNpZGUgb2YgV2ViQ29yZS4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmYXN0SXNDaGFyYWN0ZXJEYXRhKTogQWRkZWQuIENvdWxk
IGJlIG1vdmVkIHRvIHRoZSBOb2RlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoKTog
QWRkZWQuIENvdWxkIGJlIG1vdmVkIHRvIHRoZSBOb2RlIGNsYXNzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKTogQWRkZWQuIEFuYWxvZ291cyB0byB0
aGUKKyAgICAgICAgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyBmdW5jdGlvbi4KKyAgICAgICAg
KiBkb20vU2ltcGxlUmFuZ2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZSk6
CisgICAgICAgIFVzZSBDaGFyYWN0ZXJSYW5nZSwgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jh
bmdlLgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oOiBBZGRlZC4KKworICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgVXNlIENoYXJhY3RlclJh
bmdlLCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisgICAgICAgICogZWRpdGluZy9F
ZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KTog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhv
bmVOdW1iZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yVGV4
dENoZWNraW5nUmVzdWx0IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdyYW1tYXRpY2FsRXJyb3Jz
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmaW5kTWlzc3BlbGxpbmdzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3Jh
cGhSYW5nZVZhbHVlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFy
YWdyYXBoOjpyYW5nZUxlbmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0IGNvbnN0KTogRGl0dG8u
IEFsc28gdXNlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OmNoZWNraW5nU3RhcnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQgY29uc3QpOiBEaXR0by4gQWxzbyBjb21w
dXRlCisgICAgICAgIHRoaXMgYnkgYWRkaW5nIHN0YXJ0IGFuZCBsZW5ndGgsIGFuZCBkb24ndCBj
YWNoZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tp
bmdMZW5ndGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0
YWlsIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEJhZEdyYW1tYXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdy
YW1tYXRpY2FsUmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsQmFkR3JhbW1hcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuIEFsc28gZ290
IHJpZCBvZgorICAgICAgICBtX2NoZWNraW5nRW5kIHNpbmNlIGl0J3Mgc3VmZmljaWVudCB0byBj
YWNoZSB0aGUgc3RhcnQgYW5kIHRoZSBsZW5ndGguCisgICAgICAgIFNob3VsZCBjb21lIGJhY2sg
bGF0ZXIgYW5kIHVzZSBDaGFyYWN0ZXJSYW5nZSBpbnN0ZWFkIG9mIDJ4IENoYXJhY3RlckNvdW50
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2hhcmFjdGVyQ291bnQpOiBVc2UgdWludDY0X3QuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2xhbXBlZEFkZCk6IEFkZGVkLiBIZWxwcyBpbXBsZW1lbnQgcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlIGluIGEgd2F5CisgICAgICAgIHRoYXQgY2FuIHdvcmsgd2l0aCBhbnkgY2hhcmFjdGVy
IGNvdW50IHdpdGhvdXQgY29uY2VybiBhYm91dCBvdmVyZmxvdy4KKyAgICAgICAgKFdlYkNvcmU6
OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSk6IEFkZGVkLiBSZXBsYWNlcyBib3RoIHN1YnJhbmdlIGFu
ZAorICAgICAgICByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCwgdXNpbmcgYW4gYWxnb3JpdGht
IGNsb3NlIHRvIHRoZSBvbmUgZnJvbQorICAgICAgICB0aGUgbGF0dGVyIGZ1bmN0aW9uLCBpbmNs
dWRpbmcgd29ya2Fyb3VuZHMgaXQgaGFkLiBSZXBsYWNlZCB0aGUgYm9vbGVhbgorICAgICAgICAi
Zm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uIiB3aXRoIHRoZSBUZXh0SXRlcmF0b3JCZWhhdmlvciBv
cHRpb25zLCB3aGljaCBzZWVtcworICAgICAgICB0byBtYWtlIGdvb2Qgc2Vuc2UgYXQgYWxsIHRo
ZSBjYWxsIHNpdGVzLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9u
KTogQWRkZWQuIExpa2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlLCBidXQKKyAgICAgICAgaW5zdGVh
ZCBvZiByZXNvbHZpbmcgQ2hhcmFjdGVyUmFuZ2UgdG8gU2ltcGxlUmFuZ2UsIHJlc29sdmVzIGEg
Y2hhcmFjdGVyIGxvY2F0aW9uCisgICAgICAgIHRvIGEgQm91bmRhcnlQb2ludC4gTWFkZSBhIHNl
cGFyYXRlIGZ1bmN0aW9uIGZvciB0aGlzIGluIGNhc2Ugd2UgbGF0ZXIgcmVmYWN0b3IKKyAgICAg
ICAgZm9yIGVmZmljaWVuY3ksIGJ1dCBmb3Igbm93IHRoaXMgc2ltcGx5IGNhbGxzIHJlc29sdmVD
aGFyYWN0ZXJSYW5nZSB3aXRoIGEgemVybworICAgICAgICBsZW5ndGggcmFuZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBNb3ZlZCBDaGFyYWN0ZXJDb3VudCBhbmQgQ2hh
cmFnZXJSYW5nZSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLiBSZXBsYWNlZCBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZAorICAgICAgICBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlIHdpdGggcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uIGFuZCByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVz
ZSBDaGFyYWN0ZXJSYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2Up
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RS
ZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9T
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOiBE
aXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGlzdGFuY2UpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwbGFjZVJhbmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaDogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzdWJyYW5nZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogTWFkZSBsb2NhdGlv
biBhbmQgbGVuZ3RoIHVuc2lnbmVkIHJhdGhlciB0aGFuIHNpZ25lZC4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6IERpdHRvLgorCiAyMDIwLTAzLTI5ICBSb2IgQnVpcyAgPHJidWlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFkZEhUVFBPcmlnaW5JZk5lZWRlZCBjYWxs
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyYTc3MjlmYjVmNzM4ZWNjMzNhODJiNzQ3YmY0ZWMxYzY2YjJlYWZlLi4x
MWM3M2E3NjhlOTFiNzA5ZWViYjFlNDA0NjFkYTY2YzBmZjFlNWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDIwLTAzLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2Zm
IG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKwor
ICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2Uu
aDogQWRkZWQgYSBGSVhNRSBhYm91dCByZXBsYWNpbmcgd2l0aCBDaGFyYWN0ZXJSYW5nZS4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKTogQWRkZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUpOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZW5jb2RlKTogVXBkYXRl
ZCB0byB1c2UgQ2hhcmFjdGVyUmFuZ2UuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3Jh
bW1hckRldGFpbD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFRleHRDaGVja2luZ1Jlc3VsdD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDogQWRkZWQgQ2hhcmFjdGVyUmFuZ2UuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJL
aXQ6OnRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdCk6IFVzZSBDaGFy
YWN0ZXJSYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbCk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJE
ZXRhaWw6OmxvY2F0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1t
YXJEZXRhaWw6Omxlbmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
VGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVj
a2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmFuZ2VBbmRPZmZzZXRSZWxhdGl2ZVRvU2VsZWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6
cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRp
b25zKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IEZpeCBNYWMgQ2F0
YWx5c3QgYnVpbGQgZXJyb3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6IERpdHRvLgorCiAyMDIwLTAzLTI5ICBkZGtpbHplckBh
cHBsZS5jb20gIDxkZGtpbHplckBhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3I6IFtpT1NdIERlbGF5IHByb2Nlc3Mg
c3VzcGVuc2lvbiBmb3IgYSB3aGlsZSBhZnRlciBsb2FkaW5nIGFuIGFwcCBsaW5rCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQzNGRmOGRmNTRj
NzkwMTc3Zi4uODNiODkwZWMyNTQ0Zjg0YmRkNWM0ZmFmMGNkNDUxMjNjZTU4OWIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAzLTI5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKGNvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKTogRGl0dG8uCisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFj
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VJc1JlbGF0aXZlVG86XSk6IERpdHRvLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKHRleHRDaGVja2luZ1Jlc3Vs
dEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdCk6IERpdHRvLgorCiAyMDIwLTAzLTI3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIERyYWdEYXRhOjpjb250
YWluc1VSTCgpIHNob3VsZCBhdm9pZCByZWFkaW5nIFVSTCBzdHJpbmdzIGZyb20gdGhlIHBhc3Rl
Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAyNzQxOTRlYWEwNzIyYmU3ZWIx
YWZiZmFiMWNlMzFmMzEwMjQ3NzJiLi44YTBmNjc3MDYxMjA0YzczNGRkN2YyNmJmOTcwNjUyMmVj
M2I2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjAtMDMtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJl
c29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZv
clRlc3RpbmcpOiBEaXR0by4KKwogMjAyMC0wMy0xOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIGEgcHJlZmxpZ2h0IGZhaWxzIGlmIHJlc3Bv
bnNlIGhlYWRlcnMgYXJlIGludmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDlhZDUzNzg1MzI0
YmIzNGMwZGRiOWRjYzExNzBjOGNkZDRhMzY2YTguLjc5N2QzYzEzOTQ4MzNhZDg4Yjc1MzRkZDI0
ZTNkZmU2NzYxOWZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDg3LDYgKzQ4Nyw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzLmgKIAorICAgIGVkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaAogICAg
IGVkaXRpbmcvQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9u
SGlnaGxpZ2h0LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTNj
NGI0ZGYxOTQyOTM5NGFmMzgzZmYyNTBmNjAyNTk5Njc5NDJiLi5jNTkwZTE1ZWIwZmYwZDcxYzM5
NjgzNDZjN2U1N2I2NGQ3MDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzM0LDYgKzI3MzQsNyBAQAogCQk5M0YxOUIx
NzA4MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1OENDNUMwMDgyMUJDMCAv
KiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyog
V2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCAq
LzsgfTsKIAkJOTNGMUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QkYx
MkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovOyB9OworCQk5M0YyQ0M5
MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBD
aGFyYWN0ZXJSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIx
MjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCTkzRjkyNTQz
MEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8q
IFJhZGlvQnV0dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEw
RkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oICovOyB9OwpAQCAtMTA5MzQsNiArMTA5MzUsNyBA
QAogCQk5M0YxRDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTExv
c2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1
MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMTG9zZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENv
bnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
TENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVC
MTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzU5LDYgKzIxNzYxLDcgQEAKIAkJCQk5MzMwOUQ4
QzA5OUU2NDkxMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAogCQkJCUY0
RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwICovLAog
CQkJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAq
LywKKwkJCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLywK
IAkJCQk3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5Lmgg
Ki8sCiAJCQkJOTMzMDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcCAqLywKIAkJCQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENv
bW1hbmQuaCAqLywKQEAgLTI5NjQyLDYgKzI5NjQ1LDcgQEAKIAkJCQlGRDMxNjAwMjEyQjAyNjc2
MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
MEI2QTAwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1NTkyRjc4MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFu
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
MjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5k
ZXggZDgzMTA3NWNkMzExZDk1MmMyYjE4NjU5YmZlMzQ4NTRlYTE3Yzc1Yi4uMTQ5YTZmMjY5ODcw
M2U5M2FjNzExNjFmOTIzYzBlOWE0ZjFkYThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KQEAgLTIzMzYsMjMgKzIzMzYsMjMgQEAgLSAoTlNSYW5nZSlfY29udmVy
dFRvTlNSYW5nZTooUmFuZ2UgKilsaXZlUmFuZ2UKICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hh
cmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291
bnQocmFuZ2UpKTsKIH0KIAotLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5T
UmFuZ2UpbnNyYW5nZQorLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFu
Z2UpcmFuZ2UKIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgaWYg
KHJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5z
cmFuZ2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFY
IC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgCisKICAgICAvLyBvdXIgY3JpdGljYWwgYXNz
dW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQK
ICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0
aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5k
IHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgLy8gZGlyZWN0bHkgaW4g
dGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNv
bHV0aW9uIGlzCiAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhl
IHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKLSAgICBFbGVtZW50
KiBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlv
blJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBkb2N1bWVudCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9
IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7CisgICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290
IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghc2NvcGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJh
Y3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5jZDkzZWU1OTY4MWFkMjZkODRj
MTM1MDg0OWM5ZWRhMmM3Y2QxMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjphZGREcmFnZ2VkQ29udGVudE1hcmtlcihSYW5nZSYgcmFuZ2UpCiB9CiAKICNpZiBFTkFCTEUo
UExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkUGxhdGZvcm1UZXh0Q2hlY2tpbmdNYXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGZv
ciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpIHsKICAgICAgICAg
RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YSB0ZXh0Q2hlY2tpbmdEYXRh
IHsga2V5LCB2YWx1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oCmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQu
LjYzMDVhYTY2YzE2ZTY5Y2M2NzU2ZGUyODg1OTJiZWNmYzg4MDExMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAg
Y2xhc3MgTm9kZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsK
IAorc3RydWN0IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMjAgKzUwLDIwIEBAIHB1Ymxp
YzoKICAgICB+RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdl
JiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwg
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUm
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBE
b2N1bWVudE1hcmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGludGVycHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAg
IHZvaWQgYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0
aW9uUmVzdWx0TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwor
ICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2Vk
Q29udGVudE1hcmtlcihSYW5nZSYpOwogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhU
X0NIRUNLSU5HKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUGxhdGZvcm1UZXh0Q2hlY2tp
bmdNYXJrZXIoUmFuZ2UmLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKICNlbmRpZgogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlJiBzcmNOb2RlLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSYgZHN0Tm9kZSwgaW50IGRlbHRhKTsKQEAg
LTEwNyw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNYXJrZXIo
Tm9kZSYsIGNvbnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+
IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICB0eXBlZGVm
IFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwogICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0Pj4gTWFya2Vy
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBhNGRiYTlmOTNjMWU4MWZl
NWUyYjE3YWU3Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2MmNkM2E1YTEyNzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJWE1FOiBDb25zaWRlciBy
ZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdlIG5vcm1h
bGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBvYmplY3Rz
LgogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNpZ25lZCBv
ZmZzZXQpOwotUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5k
YXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNhZjg1Y2I4MzA3OGQ3YTll
NTEyMTdmMTQwNTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1YjcwMjA4YTdmN2IzMDYyN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCArNTMsMjMgQEAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYgYikKICAg
ICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQogCisvLyBG
SVhNRTogTm9kZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4gYWxnb3JpdGhtIGxpa2Ug
dGhpcywgc2luY2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4gdGhlIGlzQ2hhcmFjdGVy
RGF0YU5vZGUgdmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0aWMgYm9vbCBmYXN0SXND
aGFyYWN0ZXJEYXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuICFub2RlLmlzQ29u
dGFpbmVyTm9kZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2RlLmlzQ2hhcmFjdGVyRGF0
YU5vZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBOb2RlOjpsZW5ndGggc2lu
Y2UgdGhlIERPTSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2RlJ3MgbGVuZ3RoLgorc3Rh
dGljIHVuc2lnbmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmIChmYXN0SXND
aGFyYWN0ZXJEYXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFjdGVyRGF0
YT4obm9kZSkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRDaGlsZE5vZGVzKCk7Cit9
CisKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJiBub2Rl
KQoreworICAgIHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxlbmd0aChub2RlKSB9IH07
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNkOTg1NWE4OTE5YzM3NmUx
NTdkMWNlZDljNWRlZWQ3YTE5NTcyNC4uOTU4MmRmOGMzMzI2Yzg5ODU1YmI4ZGVhMTE0NjMzNWM0
NjcxM2E4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUxLDYgKzUxLDggQEAgc3Ry
dWN0IFNpbXBsZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7CiB9
OwogCitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoTm9kZSYpOworCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25z
dCBTaW1wbGVSYW5nZSYpOwogCiBpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0
IFJlZjxSYW5nZT4mIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZWJkNGNhYjMyNmYyYzA5NzU1NDBjYjFk
NmY5ZTdhMTIyNzliMjk4OC4uZjcwZGE1OGUxNGZiOTRhNjA1Yjk4ZGUxNmM3MGNlNzU2MDVlMzJi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwCkBAIC01OTksMTcgKzU5OSwxNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2Us
CiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlLmNsb25lUmFuZ2Uo
KSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgpOwogCiAgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
IG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBC
dWd6aWxsYTogODk1MjYKLSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCh0cmVl
U2NvcGVSb290LnB0cigpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSwgY29ycmVjdGlvbk9m
ZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwotICAgIGlmICghdXBkYXRl
ZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAgYXV0byB1cGRhdGVkUGFy
YWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiA9IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlv
bihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHModHJlZVNjb3BlUm9vdCksIHBhcmFncmFw
aE9mZnNldEluVHJlZVNjb3BlKTsKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWlu
aW5nQ29ycmVjdGlvbiA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmlu
Z0NvcnJlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRFbmQodXBkYXRlZFBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24s
IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOworICAg
IGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IHVwZGF0ZWRQ
YXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3JyZWN0aW9uLCAqdXBkYXRlZFBhcmFncmFwaEVuZENv
bnRhaW5pbmdDb3JyZWN0aW9uIH0sIENoYXJhY3RlclJhbmdlKGNvcnJlY3Rpb25PZmZzZXRJblBh
cmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKHBsYWluVGV4dChyZXBsYWNlbWVudFJh
bmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50
UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBtYXJr
ZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKTsKKyAgICBh
dXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMo
KTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCiAgICAgICAg
IG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtl
clR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4YWI3NmU1YmU0NjBiMjM0OS4uMDg0ZWE3
MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI4MywxMiArMjgzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAg
ICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0
KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZS5nZXQoKSwgc3Rh
cnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBlbmRJbmRleCwgMCwgdHJ1
ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICAgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFydFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBhdXRvIGVuZFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5kSW5kZXgsIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogfQogCiBzdGF0aWMgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZWRlY2E4MzEyMGE4OTYwMzE4NWJmYTUyMWY3YWEyNzFkMTIzZGJkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5o
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYg
VVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjZW5k
aWYKKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5n
ZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDaGFyYWN0ZXJSYW5n
ZSB7CisgICAgdWludDY0X3QgbG9jYXRpb24geyAwIH07CisgICAgdWludDY0X3QgbGVuZ3RoIHsg
MCB9OworCisgICAgQ2hhcmFjdGVyUmFuZ2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIENo
YXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpOworCisjaWYg
VVNFKENGKQorICAgIGNvbnN0ZXhwciBDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyAgICBjb25z
dGV4cHIgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisgICAgY29uc3Rl
eHByIG9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdDsKKyNlbmRpZgorfTsKKworY29uc3RleHByIENo
YXJhY3RlclJhbmdlOjpDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3Qg
bGVuZ3RoKQorICAgIDogbG9jYXRpb24obG9jYXRpb24pCisgICAgLCBsZW5ndGgobGVuZ3RoKQor
eworfQorCisjaWYgVVNFKENGKQorCitjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2U6OkNoYXJhY3Rl
clJhbmdlKENGUmFuZ2UgcmFuZ2UpCisgICAgOiBDaGFyYWN0ZXJSYW5nZShyYW5nZS5sb2NhdGlv
biwgcmFuZ2UubGVuZ3RoKQoreworICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBrQ0ZOb3RG
b3VuZCk7Cit9CisKK2NvbnN0ZXhwciBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgQ0ZSYW5nZSgp
IGNvbnN0Cit7CisgICAgQ0ZJbmRleCBsb2NhdGlvbkNGID0gbG9jYXRpb247CisgICAgQ0ZJbmRl
eCBsZW5ndGhDRiA9IGxlbmd0aDsKKyAgICByZXR1cm4geyBsb2NhdGlvbkNGLCBsZW5ndGhDRiB9
OworfQorCisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKSAmJiBkZWZpbmVkKF9fT0JKQ19f
KQorCitjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2U6OkNoYXJhY3RlclJhbmdlKE5TUmFuZ2UgcmFu
Z2UpCisgICAgOiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgg
fQoreworICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKK30KKworY29u
c3RleHByIENoYXJhY3RlclJhbmdlOjpvcGVyYXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICBO
U1VJbnRlZ2VyIGxvY2F0aW9uTlMgPSBsb2NhdGlvbjsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aE5T
ID0gbGVuZ3RoOworICAgIHJldHVybiB7IGxvY2F0aW9uTlMsIGxlbmd0aE5TIH07Cit9CisKKyNl
bmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDE1NGJiODdjMzMxZDQxZDkxNjE2MmU3
ZDkxMTBkNDc4ODI3ZDFjNzAuLjYzYmU5MWU5MDRjODkzNWRmZjk1NjE0Yzg3MGM5MjRhZjM0ZGJh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3Zl
UGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlm
IChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGRlc3RpbmF0aW9uKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaW50IHN0YXJ0SW5kZXggPSAtMTsKLSAgICBpbnQgZW5kSW5kZXggPSAtMTsK
KyAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRJbmRleDsKKyAgICBPcHRpb25hbDx1aW50NjRf
dD4gZW5kSW5kZXg7CiAgICAgYm9vbCBvcmlnaW5hbElzRGlyZWN0aW9uYWwgPSBlbmRpbmdTZWxl
Y3Rpb24oKS5pc0RpcmVjdGlvbmFsKCk7CiAgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmICFl
bmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CkBAIC0xNTI4LDE2
ICsxNTI4LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0eWxlSW5FbXB0
eVBhcmFncmFwaCAmJiBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoKQogICAgICAgICBhcHBseVN0
eWxlKHN0eWxlSW5FbXB0eVBhcmFncmFwaC5nZXQoKSk7CiAKLSAgICBpZiAocHJlc2VydmVTZWxl
Y3Rpb24gJiYgc3RhcnRJbmRleCAhPSAtMSkgeworICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAm
JiBzdGFydEluZGV4ICYmIGVuZEluZGV4KSB7CiAgICAgICAgIC8vIEZyYWdtZW50IGNyZWF0aW9u
ICh1c2luZyBjcmVhdGVNYXJrdXApIGluY29ycmVjdGx5IHVzZXMgcmVndWxhcgogICAgICAgICAv
LyBzcGFjZXMgaW5zdGVhZCBvZiBuYnNwcyBmb3Igc29tZSBzcGFjZXMgdGhhdCB3ZXJlIHJlbmRl
cmVkICgxMTQ3NSksIHdoaWNoCiAgICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFw
c2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8g
aW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBw
YXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVy
biBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbklu
ZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0
KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChz
dGFydCAmJiBlbmQpCi0gICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihzdGFydC0+c3RhcnRQb3NpdGlvbigpLCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNU
UkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCAr
ICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucykpOworICAgICAgICBhdXRvIGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRl
cmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFydCwgZW5kLCBET1dOU1RSRUFNLCBvcmlnaW5hbElz
RGlyZWN0aW9uYWwgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApp
bmRleCA2MDQ3Yjk0NjQzZTNkNWVhNTczYWZiZGNmNjc2YjIwMTFhYzg3NWY3Li5lODE4ZDEyYjIz
OTEyMGExYWEyYmZmNWUwYWNiNzlhNmQyMGQ5ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAKQEAgLTExMTQsMTIgKzExMTQsOSBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSkKIHsKLSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNr
IGZvciBhbiBpbnZhbGlkIGluZGV4LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlk
YXRlIGluZGljZXMgYmVjYXVzZSAKLSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFu
Z2UpCisgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyBy
YW5nZS0+c3RhcnRQb3NpdGlvbigpIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDNhYzBmYzAxMDk1MmJhYzRmMTA2
ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uMWUyODE0MTMzNGI3M2I1ODk5Y2ExYzQyZGZkZDM1MjlmYzI5
OWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjIyMywxNSArMjIyMywxNSBA
QCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVT
ZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldy
YXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoKTsKICAgICAKLSAgICBpbnQgbWlz
c3BlbGxpbmdPZmZzZXQgPSAwOworICAgIHVpbnQ2NF90IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsK
ICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VP
ZmZzZXQgPSAwOworICAgIHVpbnQ2NF90IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJl
ZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlOwogICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9
IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zmc2V0ID0gMDsKKyAgICB1aW50NjRfdCBmb3VuZE9mZnNl
dCA9IDA7CiAgICAgU3RyaW5nIGZvdW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlz
c3BlbGxpbmdSYW5nZTsKICAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBA
IC0yMzA3LDEwICsyMzA3LDEwIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9y
ZSBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAg
CiAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAg
IEFTU0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVu
Z3RoID4gMCk7CisgICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAp
OwogICAgICAgICAKICAgICAgICAgLy8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2Vk
IHdpdGggZG91YmxlZCBwdW5jdHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAg
ICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1h
clNlYXJjaFJhbmdlLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlv
biwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJh
c2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJh
bmdlLmxlbmd0aCB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7
CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAg
IApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1p
c3NwZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1p
c3NwZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAg
Ly8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAK
LSAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShz
cGVsbGluZ1NlYXJjaFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVu
Z3RoKCkpOworICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxl
ZFdvcmQubGVuZ3RoKCkgfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAg
ICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAg
LTI3NzMsNyArMjc3Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNr
aW5nKFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFw
cGx5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1Rl
eHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFu
Z2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0
TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVj
a2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBo
JiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCwgQ2hhcmFjdGVyUmFuZ2UgcmVzdWx0UmFuZ2UpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBk
b3duY2FzdDxDb250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENv
bnRhaW5lcigpLnJvb3ROb2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZv
aWQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRl
eHRDaGVja2luZ1BhcmEKICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhh
bmVkIGFmdGVyIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8g
U2VlIDxyZGFyOi8vMTAzMDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAg
UmVmUHRyPFJhbmdlPiBuZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVu
Z3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBz
cGVsbENoZWNraW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhS
YW5nZSwgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3Jh
cGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwg
c3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gbmV3UGFyYWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFy
YWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRSYW5nZS5sZW5ndGgg
fSk7CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bmV3UGFyYWdyYXBoUmFuZ2UsIHsgcmVzdWx0UmFuZ2UubG9jYXRpb24sIHJlcGxhY2VtZW50Lmxl
bmd0aCgpIH0pOworICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVM
aXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tp
bmdSYW5nZSksIGNyZWF0ZUxpdmVSYW5nZShuZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lk
IEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3
ICsyODEwLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hl
Y2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhw
YW5kIHRoZSByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQg
Y2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNl
dCA9IDA7CisgICAgdWludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFt
YmlndW91c0JvdW5kYXJ5T2Zmc2V0ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgYm9vbCByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsK
QEAgLTI4MjMsOSArMjgyMiw5IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAg
ICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5lbmQoKTsKICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRU
byhjYXJldFBvc2l0aW9uKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3Rv
cmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9u
T2Zmc2V0ID4gMCAmJiAoc2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8
fCBwYXJhZ3JhcGgudGV4dENoYXJBdChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hh
cmFjdGVyKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rp
b25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClb
c2VsZWN0aW9uT2Zmc2V0IC0gMV0gPT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAg
ICAgYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAg
ICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdy
YXBoLnRleHRMZW5ndGgoKSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFw
aC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxl
Y3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxl
bmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtz
ZWxlY3Rpb25PZmZzZXQgLSAxXSkpCiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRh
cnlPZmZzZXQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBA
QCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50
ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBo
LmNoZWNraW5nRW5kKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBU
ZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNv
bnN0IGludCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVU
b1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tp
XS5sZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExv
Y2F0aW9uICsgcmVzdWx0TGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFj
ZW1lbnRFbmRMb2NhdGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkg
KyBwYXJhZ3JhcGguYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVw
bGFjZW1lbnQ7CisgICAgICAgIGF1dG8gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFw
aC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgVGV4dENo
ZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBlOworICAgICAgICBhdXRvIHJl
c3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5yYW5nZS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVw
bGFjZW1lbnQ7CisgICAgICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5yYW5nZS5s
ZW5ndGg7CisgICAgICAgIGF1dG8gcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiAr
IHJlc3VsdExlbmd0aDsKKyAgICAgICAgYXV0byBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0
aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5h
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJlc3VsdHNbaV0ucmVwbGFjZW1lbnQ7
Ci0gICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VB
bWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVu
ZExvY2F0aW9uOworICAgICAgICBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0g
dXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1
bHRFbmRMb2NhdGlvbjsKIAogICAgICAgICAvLyBPbmx5IG1hcmsgbWlzc3BlbGxpbmcgaWY6CiAg
ICAgICAgIC8vIDEuIEN1cnJlbnQgdGV4dCBjaGVja2luZyBpc24ndCBkb25lIGZvciBhdXRvY29y
cmVjdGlvbiwgaW4gd2hpY2ggY2FzZSBzaG91bGRNYXJrU3BlbGxpbmcgaXMgZmFsc2UuCkBAIC0y
ODUwLDE2ICsyODQ5LDE2IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBT
cGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIGlmIChz
aG91bGRNYXJrU3BlbGxpbmcgJiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgJiYgcmVzdWx0
VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZwogICAgICAgICAgICAgJiYgcmVzdWx0
TG9jYXRpb24gPj0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSAmJiByZXN1bHRFbmRMb2NhdGlv
biA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3Vu
ZGFyeSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9j
YXRpb24gPj0gMCk7Ci0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3Jh
cGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CisgICAgICAgICAgICBh
dXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoIH0pOwogICAgICAgICAgICAgaWYgKCFtX2FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1pc3NwZWxsaW5nUmFuZ2UpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdS
YW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCByZXBsYWNlbWVudCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0
aW9uLCByZXN1bHRMZW5ndGgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1t
YXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFw
aC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KSkg
ewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24g
Pj0gMCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdHNbaV0uZGV0YWls
cykgewotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCAmJiBkZXRhaWwu
bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3Ro
KSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFw
aC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0
aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sZW5ndGggPiAwICYmIGRl
dGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBo
LmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1bHRMb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2Nh
dGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uICsg
ZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pOwogICAgICAgICAg
ICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXIsIGRldGFpbC51c2VyRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTI4NzcsNyArMjg3Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZv
cihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAg
ICAgICAgICAvLyAyLiBUaGUgcmVzdWx0IGRvZXNuJ3QgZW5kIGF0IGFuIGFtYmlndW91cyBib3Vu
ZGFyeS4KICAgICAgICAgICAgIC8vICAgIChGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB1bnRpbCA2
ODUzMDI3IGlzIGZpeGVkIGFuZCB0ZXh0IGNoZWNraW5nIGNhbiBkbyB0aGlzIGZvciB1cwogICAg
ICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgPiAwICYm
ICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2VU
b1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdl
KHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKIAogICAgICAgICAgICAgLy8gQWRk
aW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9ubHkgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhleSBhcmUg
dHlwZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rICYmIHNlbGVjdGlvbk9mZnNldCAhPSByZXN1bHRFbmRMb2NhdGlvbiArIDEpCkBAIC0yOTE0
LDcgKzI5MTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgICAgIGlm
IChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUxpbmtDb21tYW5k
OjpjcmVhdGUoZG9jdW1lbnQoKSwgcmVwbGFjZW1lbnQpLT5hcHBseSgpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXBsYWNlbWVudCwgcmFu
Z2VUb1JlcGxhY2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKSB7Ci0gICAgICAg
ICAgICAgICAgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdy
YXBoKHBhcmFncmFwaCwgcmFuZ2VUb1JlcGxhY2UsIHJlcGxhY2VtZW50LCByZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBjb3JyZWN0U3BlbGxjaGVja2luZ1By
ZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgocGFyYWdyYXBoLCByYW5nZVRvUmVwbGFjZSwg
cmVwbGFjZW1lbnQsIHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKIAogICAgICAg
ICAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdB
WE9iamVjdENhY2hlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHJvb3Qg
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkK
QEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCBhbGwgb3RoZXIgcmVzdWx0cyBmb3Ig
dGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0
cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2Vt
ZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAgICAgICAgICAgIHdoaWxlIChpICsgMSA8IHJl
c3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKICAgICAgICAgICAgICAgICAgICAgaSsr
OwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CkBAIC0yOTMxLDcg
KzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVj
a1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgICAgICAgICBz
ZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3Jy
ZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBh
cmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpBY2NlcHRlZCwgcmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFu
ZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0yOTQ1LDggKzI5NDQsOCBAQCB2b2lkIEVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggZXh0ZW5kZWRQYXJh
Z3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgY2FyZXQg
cG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSByZXBsYWNlbWVudHMKICAgICAgICAgZXh0ZW5k
ZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKLSAgICAgICAgaWYgKHJlc3RvcmVT
ZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPj0gMCAmJiBzZWxlY3Rpb25P
ZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgewotICAgICAgICAgICAg
YXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKDAsIHNlbGVj
dGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYg
c2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJyYW5n
ZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAg
ICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQogICAg
ICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwpA
QCAtMjk3Myw3ICsyOTcyLDcgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmluZywgc2VsZWN0aW9uLmdldCgpKTsKICAgICBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKCpzZWxlY3Rpb24pOwogICAgIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmluZywgU2VsZWN0UmVwbGFjZW1lbnQ6Ok5vLCBT
bWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnQpOwotICAgIGF1dG8gY2hhbmdlZFJh
bmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxh
Y2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5z
dWJyYW5nZShDaGFyYWN0ZXJSYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNl
ZFN0cmluZy5sZW5ndGgoKSkpOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vsc2UKQEAgLTM3NzcsMTIgKzM3NzYs
MTIgQEAgdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJh
bmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcKIAogICAgICAgICBBU1NFUlQoc2Nhbm5lclBv
c2l0aW9uICsgcmVsYXRpdmVFbmRQb3NpdGlvbiA8IGxlbmd0aCk7CiAKLSAgICAgICAgdW5zaWdu
ZWQgc3VicmFuZ2VPZmZzZXQgPSBzY2FubmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRp
b247Ci0gICAgICAgIHVuc2lnbmVkIHN1YnJhbmdlTGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlv
biAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisgICAgICAgIHVpbnQ2NF90IHN1YnJhbmdl
T2Zmc2V0ID0gc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9uOworICAgICAg
ICB1aW50NjRfdCBzdWJyYW5nZUxlbmd0aCA9IHJlbGF0aXZlRW5kUG9zaXRpb24gLSByZWxhdGl2
ZVN0YXJ0UG9zaXRpb24gKyAxOwogCi0gICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKHJhbmdlLCBzdWJyYW5nZU9mZnNldCwgc3VicmFuZ2VMZW5ndGgpOworICAg
ICAgICBhdXRvIHN1YnJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHJhbmdlLCB7IHN1YnJh
bmdlT2Zmc2V0LCBzdWJyYW5nZUxlbmd0aCB9KTsKIAotICAgICAgICBtYXJrZWRSYW5nZXMuYXBw
ZW5kKHN1YnJhbmdlLnB0cigpKTsKKyAgICAgICAgbWFya2VkUmFuZ2VzLmFwcGVuZChjcmVhdGVM
aXZlUmFuZ2Uoc3VicmFuZ2UpKTsKICAgICAgICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLm1hcmtl
cnMoKS5hZGRNYXJrZXIoc3VicmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIp
OwogCiAgICAgICAgIHNjYW5uZXJQb3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsK
QEAgLTM5OTIsMTQgKzM5OTEsMTQgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5n
ZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdAogCiBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFu
Z2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQp
IGNvbnN0CiB7Ci0gICAgaWYgKCFyZXN1bHQubGVuZ3RoKQorICAgIGlmICghcmVzdWx0LnJhbmdl
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8UmFuZ2U+IGNv
bnRleHRSYW5nZSA9IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAo
IWNvbnRleHRSYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVGV4
dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJh
bmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5yYW5nZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2No
ZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAKaW5kZXggYWQ4Mjc4ODljYWI1ODVkMzAxNTk2YTYzYWJkZWM2ZmY0Yjc1
ZTM3NC4uOTliOGUzMWRmMGRjYzYyYWYxZmFlMDlkMzE2YWJmMDk5MGI4YzkyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjMs
OCArNjMsNyBAQCBzdGF0aWMgdm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENoZWNrZXJD
bGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZQogCiAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCBiYWRHcmFtbWFyOwogICAgICAgICBiYWRHcmFtbWFyLnR5cGUgPSBUZXh0Q2hlY2tp
bmdUeXBlOjpHcmFtbWFyOwotICAgICAgICBiYWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2Nh
dGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbjsKLSAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBi
YWRHcmFtbWFyTGVuZ3RoOworICAgICAgICBiYWRHcmFtbWFyLnJhbmdlID0gQ2hhcmFjdGVyUmFu
Z2UoY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCk7
CiAgICAgICAgIGJhZEdyYW1tYXIuZGV0YWlscyA9IFdURk1vdmUoYmFkR3JhbW1hckRldGFpbHMp
OwogICAgICAgICByZXN1bHRzLmFwcGVuZChiYWRHcmFtbWFyKTsKIApAQCAtOTcsOSArOTYsOCBA
QCBzdGF0aWMgdm9pZCBmaW5kTWlzc3BlbGxpbmdzKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQs
IFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPAogCiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgbWlzc3BlbGxpbmc7CiAgICAgICAgICAgICBtaXNzcGVsbGluZy50eXBlID0gVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5sb2NhdGlvbiA9IHdv
cmRTdGFydCArIG1pc3NwZWxsaW5nTG9jYXRpb247Ci0gICAgICAgICAgICBtaXNzcGVsbGluZy5s
ZW5ndGggPSBtaXNzcGVsbGluZ0xlbmd0aDsKLSAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJlcGxh
Y2VtZW50ID0gY2xpZW50LmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3Jk
KHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsaW5nLmxvY2F0aW9uLCBtaXNzcGVsbGluZy5sZW5ndGgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgICAgICAgICBtaXNzcGVsbGluZy5yYW5n
ZSA9IENoYXJhY3RlclJhbmdlKHdvcmRTdGFydCArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3Nw
ZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIG1pc3NwZWxsaW5nLnJlcGxhY2VtZW50ID0gY2xp
ZW50LmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKHRleHQuc3Vic3Ry
aW5nKG1pc3NwZWxsaW5nLnJhbmdlLmxvY2F0aW9uLCBtaXNzcGVsbGluZy5yYW5nZS5sZW5ndGgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
aXNzcGVsbGluZyk7CiAgICAgICAgIH0KIApAQCAtMTM5LDE0ICsxMzcsMTMgQEAgdm9pZCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OmV4cGFuZFJhbmdlVG9OZXh0RW5kKCkKIHZvaWQgVGV4dENoZWNr
aW5nUGFyYWdyYXBoOjppbnZhbGlkYXRlUGFyYWdyYXBoUmFuZ2VWYWx1ZXMoKQogewogICAgIG1f
Y2hlY2tpbmdTdGFydC5yZXNldCgpOwotICAgIG1fY2hlY2tpbmdFbmQucmVzZXQoKTsKICAgICBt
X2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQucmVzZXQoKTsKICAgICBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50TGVuZ3RoLnJlc2V0KCk7CiAgICAgbV9vZmZzZXRBc1JhbmdlID0gbnVsbHB0cjsKICAg
ICBtX3RleHQgPSBTdHJpbmcoKTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6cmFu
Z2VMZW5ndGgoKSBjb25zdAordWludDY0X3QgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpyYW5nZUxl
bmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdl
KCkpOwogfQpAQCAtMTU4LDEyICsxNTUsMTIgQEAgUmFuZ2UmIFRleHRDaGVja2luZ1BhcmFncmFw
aDo6cGFyYWdyYXBoUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9wYXJhZ3JhcGhSYW5nZTsK
IH0KIAotUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKGludCBjaGFy
YWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCkgY29uc3QKK1JlZjxSYW5nZT4gVGV4dENo
ZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZSgpLCBjaGFy
YWN0ZXJPZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdl
KHJlc29sdmVDaGFyYWN0ZXJSYW5nZShwYXJhZ3JhcGhSYW5nZSgpLCByYW5nZSkpOwogfQogCi1F
eGNlcHRpb25PcjxpbnQ+IFRleHRDaGVja2luZ1BhcmFncmFwaDo6b2Zmc2V0VG8oY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKSBjb25zdAorRXhjZXB0aW9uT3I8dWludDY0X3Q+IFRleHRDaGVja2lu
Z1BhcmFncmFwaDo6b2Zmc2V0VG8oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogewog
ICAgIGF1dG8gc3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZSgpLnN0YXJ0
UG9zaXRpb24oKSk7CiAgICAgYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbik7
CkBAIC0xODcsMzUgKzE4NCwzMyBAQCBSYW5nZSYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZz
ZXRBc1JhbmdlKCkgY29uc3QKICAgICByZXR1cm4gKm1fb2Zmc2V0QXNSYW5nZTsKIH0KIAotY29u
c3QgU3RyaW5nJiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25zdAorU3RyaW5nVmll
dyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnRleHQoKSBjb25zdAogewotICAgIGlmIChtX3RleHQu
aXNFbXB0eSgpKQorICAgIGlmIChtX3RleHQuaXNOdWxsKCkpCiAgICAgICAgIG1fdGV4dCA9IHBs
YWluVGV4dCgmcGFyYWdyYXBoUmFuZ2UoKSk7CiAgICAgcmV0dXJuIG1fdGV4dDsgCiB9CiAKLWlu
dCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3RhcnQoKSBjb25zdAordWludDY0X3Qg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ1N0YXJ0KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2hlY2tpbmdTdGFydCkKICAgICAgICAgbV9jaGVja2luZ1N0YXJ0ID0gY2hhcmFjdGVyQ291
bnQob2Zmc2V0QXNSYW5nZSgpKTsKICAgICByZXR1cm4gKm1fY2hlY2tpbmdTdGFydDsKIH0KIAot
aW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQoKSBjb25zdAordWludDY0X3Qg
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0VuZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2NoZWNraW5nRW5kKQotICAgICAgICBtX2NoZWNraW5nRW5kID0gY2hlY2tpbmdTdGFydCgpICsg
Y2hlY2tpbmdMZW5ndGgoKTsKLSAgICByZXR1cm4gKm1fY2hlY2tpbmdFbmQ7CisgICAgcmV0dXJu
IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7CiB9CiAKLWludCBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmNoZWNraW5nTGVuZ3RoKCkgY29uc3QKK3VpbnQ2NF90IFRleHRDaGVja2lu
Z1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5ndGgoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2lu
Z0xlbmd0aCkKICAgICAgICAgbV9jaGVja2luZ0xlbmd0aCA9IGNoYXJhY3RlckNvdW50KG1fY2hl
Y2tpbmdSYW5nZSk7CiAgICAgcmV0dXJuICptX2NoZWNraW5nTGVuZ3RoOwogfQogCi1pbnQgVGV4
dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKK3Vp
bnQ2NF90IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCkKICAgICAgICAg
cmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CkBAIC0yMjksNyArMjI0LDcgQEAg
aW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNv
bnN0CiAgICAgcmV0dXJuICptX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CiB9CiAKLWludCBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKCkgY29uc3QK
K3VpbnQ2NF90IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRMZW5n
dGgoKSBjb25zdAogewogICAgIGlmIChtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gKm1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CkBAIC0yNDYsMTIgKzI0
MSwxMiBAQCBUZXh0Q2hlY2tpbmdIZWxwZXI6OlRleHRDaGVja2luZ0hlbHBlcihFZGl0b3JDbGll
bnQmIGNsaWVudCwgUmFuZ2UmIHJhbmdlKQogCiBUZXh0Q2hlY2tpbmdIZWxwZXI6On5UZXh0Q2hl
Y2tpbmdIZWxwZXIoKSA9IGRlZmF1bHQ7CiAKLVN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJr
QWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCitTdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyh1aW50NjRfdCYgZmlyc3RNaXNzcGVs
bGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5n
UmFuZ2UpCiB7CiAgICAgZmlyc3RNaXNzcGVsbGluZ09mZnNldCA9IDA7CiAKICAgICBTdHJpbmcg
Zmlyc3RNaXNzcGVsbGluZzsKLSAgICBpbnQgY3VycmVudENodW5rT2Zmc2V0ID0gMDsKKyAgICB1
aW50NjRfdCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOwogCiAgICAgZm9yIChXb3JkQXdhcmVJdGVy
YXRvciBpdChtX3JhbmdlKTsgIWl0LmF0RW5kKCk7IGN1cnJlbnRDaHVua09mZnNldCArPSBpdC50
ZXh0KCkubGVuZ3RoKCksIGl0LmFkdmFuY2UoKSkgewogICAgICAgICBTdHJpbmdWaWV3IHRleHQg
PSBpdC50ZXh0KCk7CkBAIC0yNzcsMTcgKzI3MiwxNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJv
bwogCiAgICAgICAgIGlmIChtaXNzcGVsbGluZ0xvY2F0aW9uID49IDAgJiYgbWlzc3BlbGxpbmdM
ZW5ndGggPiAwICYmIG1pc3NwZWxsaW5nTG9jYXRpb24gPCB0ZXh0TGVuZ3RoICYmIG1pc3NwZWxs
aW5nTGVuZ3RoIDw9IHRleHRMZW5ndGggJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxs
aW5nTGVuZ3RoIDw9IHRleHRMZW5ndGgpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ug
b2YgbWlzc3BlbGxlZCB3b3JkCi0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFuZ2UsIGN1cnJlbnRDaHVua09mZnNldCArIG1pc3Nw
ZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gbWlz
c3BlbGxpbmdSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtX3JhbmdlLCBDaGFyYWN0ZXJS
YW5nZShjdXJyZW50Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGlu
Z0xlbmd0aCkpOwogCiAgICAgICAgICAgICAvLyBSZW1lbWJlciBmaXJzdC1lbmNvdW50ZXJlZCBt
aXNzcGVsbGluZyBhbmQgaXRzIG9mZnNldC4KICAgICAgICAgICAgIGlmICghZmlyc3RNaXNzcGVs
bGluZykgewogICAgICAgICAgICAgICAgIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQgPSBjdXJyZW50
Q2h1bmtPZmZzZXQgKyBtaXNzcGVsbGluZ0xvY2F0aW9uOwogICAgICAgICAgICAgICAgIGZpcnN0
TWlzc3BlbGxpbmcgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVs
bGluZ0xlbmd0aCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaXJzdE1pc3NwZWxsaW5n
UmFuZ2UgPSBtaXNzcGVsbGluZ1JhbmdlLnB0cigpOworICAgICAgICAgICAgICAgIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShtaXNzcGVsbGluZ1JhbmdlKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgLy8gU3RvcmUgbWFya2VyIGZvciBtaXNzcGVsbGVkIHdv
cmQuCi0gICAgICAgICAgICBtaXNzcGVsbGluZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLCBEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmcpOworICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS5zdGFydC5kb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdSYW5nZSwgRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UncmUgbWFya2luZyBv
bmx5IHRoZSBmaXJzdCBtaXNzcGVsbGluZywgYW5kIG5vdCBhbGwgaW5zdGFuY2VzLgogICAgICAg
ICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtMjk4LDcgKzI5Myw3IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vCiAgICAgcmV0dXJuIGZpcnN0TWlzc3BlbGxpbmc7CiB9CiAKLVN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdy
YW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCitTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9v
bCYgb3V0SXNTcGVsbGluZywgdWludDY0X3QmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCiB7CiAgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMzEzLDggKzMwOCw3
IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1l
dGVyczsgdGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVy
bi4KICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0g
MDsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1hckRl
dGFpbC5sZW5ndGggPSAwOworICAgIG91dEdyYW1tYXJEZXRhaWwucmFuZ2UgPSB7IH07CiAgICAg
b3V0R3JhbW1hckRldGFpbC5ndWVzc2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51
c2VyRGVzY3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIApAQCAtMzI3LDE1ICszMjEsMTUg
QEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdy
YW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICBzZXRFbmQocGFyYWdyYXBoUmFuZ2UucHRy
KCksIGVuZE9mUGFyYWdyYXBoKG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkpOwogICAgIAogICAg
IGF1dG8gcmFuZ2VTdGFydE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBv
aW50KHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQo
bV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9KTsKLSAgICBDaGFyYWN0ZXJDb3VudCB0b3RhbExl
bmd0aFByb2Nlc3NlZCA9IDA7CisgICAgdWludDY0X3QgdG90YWxMZW5ndGhQcm9jZXNzZWQgPSAw
OwogICAgIAogICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOwogICAgIGJvb2wgbGFzdEl0
ZXJhdGlvbiA9IGZhbHNlOwogICAgIHdoaWxlICh0b3RhbExlbmd0aFByb2Nlc3NlZCA8IHRvdGFs
UmFuZ2VMZW5ndGgpIHsKICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBzZWFyY2ggcmFu
Z2UgYnkgcGFyYWdyYXBocywgY2hlY2tpbmcgZWFjaCBvbmUgZm9yIHNwZWxsaW5nIGFuZCBncmFt
bWFyLgogICAgICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBjaGFyYWN0ZXJDb3VudChwYXJhZ3Jh
cGhSYW5nZSk7Ci0gICAgICAgIGludCBjdXJyZW50U3RhcnRPZmZzZXQgPSBmaXJzdEl0ZXJhdGlv
biA/IHJhbmdlU3RhcnRPZmZzZXQgOiAwOwotICAgICAgICBpbnQgY3VycmVudEVuZE9mZnNldCA9
IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRTdGFydE9mZnNldCA9IGZp
cnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7CisgICAgICAgIHVpbnQ2NF90IGN1
cnJlbnRFbmRPZmZzZXQgPSBjdXJyZW50TGVuZ3RoOwogICAgICAgICBpZiAoaW5TYW1lUGFyYWdy
YXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9u
KCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJv
bSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUg
cGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSBy
ZXN1bHRzIGluIHRoaXMgYXJlYS4KQEAgLTM0Niw5ICszNDAsOSBAQCBTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3Jh
bW1hciwgYgogICAgICAgICAgICAgU3RyaW5nIHBhcmFncmFwaFN0cmluZyA9IHBsYWluVGV4dChw
YXJhZ3JhcGhSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICBpZiAocGFyYWdyYXBoU3RyaW5nLmxl
bmd0aCgpID4gMCkgewogICAgICAgICAgICAgICAgIGJvb2wgZm91bmRHcmFtbWFyID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nTG9jYXRpb24gPSAwOwotICAgICAgICAgICAg
ICAgIGludCBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICAgIGludCBn
cmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNwZWxs
aW5nTG9jYXRpb24gPSAwOworICAgICAgICAgICAgICAgIHVpbnQ2NF90IGdyYW1tYXJQaHJhc2VM
b2NhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgdWludDY0X3QgZ3JhbW1hckRldGFpbExvY2F0
aW9uID0gMDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBncmFtbWFyRGV0YWlsSW5kZXggPSAw
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7CkBAIC0zNjEsNDIgKzM1NSw0MiBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1h
ciwgYgogICAgICAgICAgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVudC50ZXh0
Q2hlY2tlcigpLCBwYXJhZ3JhcGhTdHJpbmcsIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMsIGN1cnJl
bnRTZWxlY3Rpb24pOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1
bHRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTcGVsbGluZyAmJiByZXN1bHQubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0
ICYmIHJlc3VsdC5sb2NhdGlvbiArIHJlc3VsdC5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGggPiAwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9jYXRpb24gPj0gMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcu
c3Vic3RyaW5nKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyAmJiBy
ZXN1bHQucmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5yYW5n
ZS5sb2NhdGlvbiArIHJlc3VsdC5yYW5nZS5sZW5ndGggPD0gY3VycmVudEVuZE9mZnNldCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRpb24gPj0g
MCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LnJh
bmdlLmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBw
YXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJh
bmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdv
cmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1
bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHJlc3VsdC5sb2NhdGlvbiA8
IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0aCA+IGN1
cnJlbnRTdGFydE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubG9j
YXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVz
dWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hciAmJiByZXN1bHQucmFuZ2UubG9j
YXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIHJlc3Vs
dC5yYW5nZS5sZW5ndGggPiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0LnJhbmdlLmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1
bHQsIHNpbmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3Qg
ZGV0YWlsIGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFy
IHJlc3VsdC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAm
cmVzdWx0LmRldGFpbHNbal07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRl
dGFpbC0+bGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRl
dGFpbC0+bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYm
IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gKyBkZXRhaWwtPmxlbmd0aCA8PSBj
dXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5sb2NhdGlvbiArIGRl
dGFpbC0+bG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZS5sb2NhdGlvbiAr
IGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gY3VycmVudFN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC5y
YW5nZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxl
bmd0aCA8PSBjdXJyZW50RW5kT2Zmc2V0ICYmICghZm91bmRHcmFtbWFyIHx8IHJlc3VsdC5yYW5n
ZS5sb2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb24gPCBncmFtbWFyRGV0YWlsTG9jYXRp
b24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxJbmRl
eCA9IGo7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2Nh
dGlvbiA9IHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IHJlc3VsdC5yYW5nZS5s
b2NhdGlvbiArIGRldGFpbC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kR3JhbW1hciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGZvdW5kR3JhbW1hcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQ
aHJhc2VMb2NhdGlvbiA9IHJlc3VsdC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncmFtbWFyUGhyYXNlTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0R3JhbW1hckRldGFpbCA9IHJlc3VsdC5kZXRhaWxz
W2dyYW1tYXJEZXRhaWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3Jh
bW1hclBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhy
YXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQucmFuZ2UubG9jYXRpb24sIHJl
c3VsdC5yYW5nZS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChi
YWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdy
YW1tYXJQaHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFp
bExvY2F0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBz
cGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3Rh
cnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICpt
YWtlQm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAg
ICAgICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwpAQCAtNDA1LDcgKzM5OSw3IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wg
Y2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhy
YXNlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9m
ZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKKyAgICAg
ICAgICAgICAgICAgICAgdWludDY0X3QgZ3JhbW1hclBocmFzZU9mZnNldCA9IGdyYW1tYXJQaHJh
c2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VP
ZmZzZXQgKz0gY2hhcmFjdGVyQ291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQobV9yYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKSwgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpIH0pOwogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7
CkBAIC00MjgsMTggKzQyMiwxOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogCiAjaWYgVVNF
KEdSQU1NQVJfQ0hFQ0tJTkcpCiAKLWludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdy
YW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywg
aW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFp
bHMsIHVpbnQ2NF90IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgdWludDY0X3Qgc3RhcnRPZmZz
ZXQsIHVpbnQ2NF90IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEZv
dW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZpbmQgdGhlIGVhcmxpZXN0IGRldGFpbCByYW5nZSB0aGF0
IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJhbmdlIChpZiBhbnkpLgogICAgIC8vIE9wdGlvbmFsbHkg
YWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9yIGVhY2ggZGV0YWlsIGluIHRoZSByYW5nZS4KLSAgICBp
bnQgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gLTE7CisgICAgdWludDY0X3QgZWFybGll
c3REZXRhaWxMb2NhdGlvblNvRmFyID0gMDsKICAgICBpbnQgZWFybGllc3REZXRhaWxJbmRleCA9
IC0xOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlscy5zaXplKCk7
IGkrKykgewogICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmZ3JhbW1hckRl
dGFpbHNbaV07Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDApOwotICAgICAgICBB
U1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgQVNTRVJUKGRldGFpbC0+cmFu
Z2UubGVuZ3RoID4gMCk7CisgICAgICAgIEFTU0VSVChkZXRhaWwtPnJhbmdlLmxvY2F0aW9uID49
IDApOwogICAgICAgICAKLSAgICAgICAgaW50IGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgg
PSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uOworICAgICAgICB1
aW50NjRfdCBkZXRhaWxTdGFydE9mZnNldEluUGFyYWdyYXBoID0gYmFkR3JhbW1hclBocmFzZUxv
Y2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgCiAgICAgICAgIC8vIFNr
aXAgdGhpcyBkZXRhaWwgaWYgaXQgc3RhcnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgc2VhcmNoIHJh
bmdlCiAgICAgICAgIGlmIChkZXRhaWxTdGFydE9mZnNldEluUGFyYWdyYXBoIDwgc3RhcnRPZmZz
ZXQpCkBAIC00NTAsMzAgKzQ0NCwyOSBAQCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBpZiAobWFya0FsbCkgewotICAgICAg
ICAgICAgYXV0byBiYWRHcmFtbWFyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKG1fcmFu
Z2UsIGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2Nh
dGlvbiwgZGV0YWlsLT5sZW5ndGgpOwotICAgICAgICAgICAgYmFkR3JhbW1hclJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihiYWRHcmFtbWFyUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSht
X3JhbmdlLmdldCgpLCB7IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsg
ZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiwgZGV0YWlsLT5yYW5nZS5sZW5ndGggfSk7CisgICAgICAg
ICAgICBiYWRHcmFtbWFyUmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2Vy
KGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRl
c2NyaXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gUmVtZW1iZXIgdGhp
cyBkZXRhaWwgb25seSBpZiBpdCdzIGVhcmxpZXIgdGhhbiBvdXIgY3VycmVudCBjYW5kaWRhdGUg
KHRoZSBkZXRhaWxzIGFyZW4ndCBpbiBhIGd1YXJhbnRlZWQgb3JkZXIpCi0gICAgICAgIGlmIChl
YXJsaWVzdERldGFpbEluZGV4IDwgMCB8fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBk
ZXRhaWwtPmxvY2F0aW9uKSB7CisgICAgICAgIGlmIChlYXJsaWVzdERldGFpbEluZGV4IDwgMCB8
fCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPiBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uKSB7
CiAgICAgICAgICAgICBlYXJsaWVzdERldGFpbEluZGV4ID0gaTsKLSAgICAgICAgICAgIGVhcmxp
ZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IGRldGFpbC0+bG9jYXRpb247CisgICAgICAgICAgICBl
YXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwogICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiBlYXJsaWVzdERldGFpbEluZGV4OwogfQog
Ci1TdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJE
ZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIGludCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9v
bCBtYXJrQWxsKSBjb25zdAorU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFk
R3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCB1aW50NjRfdCYgb3V0R3Jh
bW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdAogewogICAgIC8vIEluaXRpYWxp
emUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3ZSBmaW5kIHNvbWV0
aGluZyB0byByZXR1cm4uCi0gICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwotICAg
IG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKKyAgICBvdXRHcmFtbWFyRGV0YWlsLnJhbmdl
ID0geyB9OwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwogICAgIG91dEdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICBvdXRHcmFt
bWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICAKLSAgICBTdHJpbmcgZmlyc3RCYWRHcmFtbWFyUGhy
YXNlOworICAgIFN0cmluZ1ZpZXcgZmlyc3RCYWRHcmFtbWFyUGhyYXNlOwogCiAgICAgLy8gRXhw
YW5kIHRoZSBzZWFyY2ggcmFuZ2UgdG8gZW5jb21wYXNzIGVudGlyZSBwYXJhZ3JhcGhzLCBzaW5j
ZSBncmFtbWFyIGNoZWNraW5nIG5lZWRzIHRoYXQgbXVjaCBjb250ZXh0LgogICAgIC8vIERldGVy
bWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBo
IHRvIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlLApAQCAtNDgxLDExICs0
NzQsMTEgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihH
cmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgIFRleHRDaGVja2luZ1BhcmFncmFw
aCBwYXJhZ3JhcGgobV9yYW5nZS5jb3B5UmVmKCkpOwogICAgIAogICAgIC8vIFN0YXJ0IGNoZWNr
aW5nIGZyb20gYmVnaW5uaW5nIG9mIHBhcmFncmFwaCwgYnV0IHNraXAgcGFzdCByZXN1bHRzIHRo
YXQgb2NjdXIgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlLgot
ICAgIGZvciAoaW50IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hl
Y2tpbmdFbmQoKTsgKSB7CisgICAgZm9yICh1aW50NjRfdCBzdGFydE9mZnNldCA9IDA7IHN0YXJ0
T2Zmc2V0IDwgcGFyYWdyYXBoLmNoZWNraW5nRW5kKCk7ICkgewogICAgICAgICBWZWN0b3I8R3Jh
bW1hckRldGFpbD4gZ3JhbW1hckRldGFpbHM7CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNl
TG9jYXRpb24gPSAtMTsKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMZW5ndGggPSAwOwot
ICAgICAgICBtX2NsaWVudC50ZXh0Q2hlY2tlcigpLT5jaGVja0dyYW1tYXJPZlN0cmluZyhTdHJp
bmdWaWV3KHBhcmFncmFwaC50ZXh0KCkpLnN1YnN0cmluZyhzdGFydE9mZnNldCksIGdyYW1tYXJE
ZXRhaWxzLCAmYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCAmYmFkR3JhbW1hclBocmFzZUxlbmd0
aCk7CisgICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCktPmNoZWNrR3JhbW1hck9mU3RyaW5n
KHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMs
ICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICghYmFkR3JhbW1hclBocmFzZUxlbmd0aCkgewogICAgICAgICAg
ICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9PSAtMSk7CkBAIC01MDYsNyArNDk5
LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFt
bWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICAvLyBrZXB0IGdvaW5nIHNvIHdl
IGNvdWxkIG1hcmsgYWxsIGluc3RhbmNlcykuCiAgICAgICAgIGlmIChiYWRHcmFtbWFySW5kZXgg
Pj0gMCAmJiBmaXJzdEJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBv
dXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0gcGFyYWdy
YXBoLmNoZWNraW5nU3RhcnQoKTsKLSAgICAgICAgICAgIGZpcnN0QmFkR3JhbW1hclBocmFzZSA9
IHBhcmFncmFwaC50ZXh0U3Vic3RyaW5nKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgYmFkR3Jh
bW1hclBocmFzZUxlbmd0aCk7CisgICAgICAgICAgICBmaXJzdEJhZEdyYW1tYXJQaHJhc2UgPSBw
YXJhZ3JhcGgudGV4dCgpLnN1YnN0cmluZyhiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGJhZEdy
YW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBGb3VuZCBv
bmUuIFdlJ3JlIGRvbmUgbm93LCB1bmxlc3Mgd2UncmUgbWFya2luZyBlYWNoIGluc3RhbmNlLgog
ICAgICAgICAgICAgaWYgKCFtYXJrQWxsKQpAQCAtNTE4LDcgKzUxMSw3IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3Jh
bW1hckRldGFpbCwKICAgICAgICAgc3RhcnRPZmZzZXQgPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRp
b24gKyBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gZmly
c3RCYWRHcmFtbWFyUGhyYXNlOworICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2UudG9T
dHJpbmcoKTsKIH0KIAogYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbCgp
IGNvbnN0CkBAIC01MjksNyArNTIyLDcgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5n
cmFtbWF0aWNhbCgpIGNvbnN0CiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgaWYgdGhlIHBhc3Nl
ZCByYW5nZSBleGFjdGx5IGNvcnJlc3BvbmRzIHRvIGEgYmFkIGdyYW1tYXIgZGV0YWlsIHJhbmdl
LiBUaGlzIGlzIGFuYWxvZ291cwogICAgIC8vIHRvIGlzU2VsZWN0aW9uTWlzc3BlbGxlZC4gSXQn
cyBub3QgZ29vZCBlbm91Z2ggZm9yIHRoZXJlIHRvIGJlIHNvbWUgYmFkIGdyYW1tYXIgc29tZXdo
ZXJlIGluIHRoZSByYW5nZSwKICAgICAvLyBvciBvdmVybGFwcGluZyB0aGUgcmFuZ2U7IHRoZSBy
YW5nZXMgbXVzdCBleGFjdGx5IG1hdGNoLgotICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0Owor
ICAgIHVpbnQ2NF90IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CiAgICAgCiAgICAgR3JhbW1hckRldGFp
bCBncmFtbWFyRGV0YWlsOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gZmluZEZpcnN0
QmFkR3JhbW1hcihncmFtbWFyRGV0YWlsLCBncmFtbWFyUGhyYXNlT2Zmc2V0LCBmYWxzZSk7CkBA
IC01NDIsMTUgKzUzNSwxNSBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRp
Y2FsKCkgY29uc3QKICAgICBpZiAoZ3JhbW1hclBocmFzZU9mZnNldCA+IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uID49IDApOwot
ICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxlbmd0aCA+IDApOworICAgIEFTU0VSVChncmFtbWFy
RGV0YWlsLnJhbmdlLmxvY2F0aW9uID49IDApOworICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJh
bmdlLmxlbmd0aCA+IDApOwogCiAgICAgLy8gQmFkIGdyYW1tYXIsIGJ1dCBzdGFydCBvZiBkZXRh
aWwgKGUuZy4gdW5ncmFtbWF0aWNhbCB3b3JkKSBkb2Vzbid0IG1hdGNoIHN0YXJ0IG9mIHJhbmdl
Ci0gICAgaWYgKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQor
ICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uICsgZ3JhbW1hclBocmFzZU9mZnNl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIEJhZCBncmFtbWFyIGF0IHN0
YXJ0IG9mIHJhbmdlLCBidXQgZW5kIG9mIGJhZCBncmFtbWFyIGlzIGJlZm9yZSBvciBhZnRlciBl
bmQgb2YgcmFuZ2UKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdyYW1tYXJEZXRhaWwu
bGVuZ3RoKSAhPSBjaGFyYWN0ZXJDb3VudChtX3JhbmdlKSkKKyAgICBpZiAoZ3JhbW1hckRldGFp
bC5yYW5nZS5sZW5ndGggIT0gY2hhcmFjdGVyQ291bnQobV9yYW5nZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsIHRvIGJlIGRp
c3BsYXlpbmcgdGhpcyBlcnJvciAod2hldGhlciBvciBub3QgdGhlIHNwZWxsaW5nIHBhbmVsIGlz
IG9uIHNjcmVlbikuCkBAIC01OTQsOCArNTg3LDggQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNr
aW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wK
ICAgICBjaGVja1RleHRPZlBhcmFncmFwaCgqbV9jbGllbnQudGV4dENoZWNrZXIoKSwgcGFyYWdy
YXBoLnRleHQoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cywgY3VycmVudFNlbGVjdGlvbik7CiAK
ICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50
eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKSB7Ci0gICAgICAgICAg
ICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmcoKTsK
KyAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYm
IHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQucmFuZ2UpKSB7CisgICAgICAg
ICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGguY2hlY2tpbmdTdWJzdHJpbmco
KS50b1N0cmluZygpOwogICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgp
KTsKICAgICAgICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCktPmdldEd1ZXNzZXNGb3JXb3Jk
KG1pc3NwZWxsZWRXb3JkLCBTdHJpbmcoKSwgY3VycmVudFNlbGVjdGlvbiwgZ3Vlc3Nlcyk7CiAg
ICAgICAgICAgICBtX2NsaWVudC51cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1p
c3NwZWxsZWRXb3JkKTsKQEAgLTYwOCwxMiArNjAxLDEyIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRD
aGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShi
b29sCiAgICAgICAgIHJldHVybiBndWVzc2VzOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBy
ZXN1bHRzKSB7Ci0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpH
cmFtbWFyICYmIHBhcmFncmFwaC5pc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LmxvY2F0
aW9uLCByZXN1bHQubGVuZ3RoKSkgeworICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hciAmJiBwYXJhZ3JhcGguaXNDaGVja2luZ1JhbmdlQ292ZXJlZEJ5
KHJlc3VsdC5yYW5nZSkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgZGV0YWlsIDogcmVzdWx0
LmRldGFpbHMpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLmxlbmd0aCA+IDApOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlTWF0Y2hlcyhyZXN1bHQubG9jYXRpb24g
KyBkZXRhaWwubG9jYXRpb24sIGRldGFpbC5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJpbmcocmVzdWx0
LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2Uu
bG9jYXRpb24gPj0gMCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlTWF0Y2hlcyh7IHJlc3VsdC5yYW5nZS5sb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2NhdGlv
biwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKHJlc3VsdC5yYW5n
ZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCkudG9TdHJpbmcoKTsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGd1ZXNzIDogZGV0YWlsLmd1ZXNzZXMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBndWVzc2VzLmFwcGVuZChndWVzcyk7CkBAIC02MzEsNyArNjI0LDcgQEAgdm9p
ZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYg
Zmlyc3RNaXNzcGVsbGluZ1JhbmcKIHsKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJl
IG9mIGZpbmRGaXJzdE1pc3NwZWxsaW5nLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgdGhl
ICJvdXQgcGFyYW1ldGVyIjsKICAgICAvLyBhbGwgd2UgbmVlZCB0byBkbyBpcyBtYXJrIGV2ZXJ5
IGluc3RhbmNlLgotICAgIGludCBpZ25vcmVkT2Zmc2V0OworICAgIHVpbnQ2NF90IGlnbm9yZWRP
ZmZzZXQ7CiAgICAgZmluZEZpcnN0TWlzc3BlbGxpbmcoaWdub3JlZE9mZnNldCwgdHJ1ZSwgZmly
c3RNaXNzcGVsbGluZ1JhbmdlKTsKIH0KIApAQCAtNjQxLDcgKzYzNCw3IEBAIHZvaWQgVGV4dENo
ZWNraW5nSGVscGVyOjptYXJrQWxsQmFkR3JhbW1hcigpCiAgICAgLy8gVXNlIHRoZSAibWFya0Fs
bCIgZmVhdHVyZSBvZiBvZmluZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFs
dWUgYW5kICJvdXQgcGFyYW1ldGVycyI7IGFsbCB3ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFy
ayBldmVyeSBpbnN0YW5jZS4KICAgICBHcmFtbWFyRGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWls
OwotICAgIGludCBpZ25vcmVkT2Zmc2V0OworICAgIHVpbnQ2NF90IGlnbm9yZWRPZmZzZXQ7CiAg
ICAgZmluZEZpcnN0QmFkR3JhbW1hcihpZ25vcmVkR3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNl
dCwgdHJ1ZSk7CiB9CiAjZW5kaWYKQEAgLTY2OCw3ICs2NjEsNyBAQCB2b2lkIGNoZWNrVGV4dE9m
UGFyYWdyYXBoKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0
aW9uU2V0PAogICAgIGlmIChjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OkdyYW1tYXIpKSB7CiAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQu
bGVuZ3RoKCk7CiAgICAgICAgIGZvciAoYXV0byYgbWlzcGVsbGluZyA6IG1pc3BlbGxpbmdzKQot
ICAgICAgICAgICAgZ3JhbW1hckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1t
YXJDaGVja0xlbmd0aCwgbWlzcGVsbGluZy5sb2NhdGlvbik7CisgICAgICAgICAgICBncmFtbWFy
Q2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNw
ZWxsaW5nLnJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNs
aWVudCwgdGV4dC5zdWJzdHJpbmcoMCwgZ3JhbW1hckNoZWNrTGVuZ3RoKSwgZ3JhbW1hdGljYWxF
cnJvcnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmgKaW5kZXggM2YzOWU4NjhkOTk0MWU1Yjg4MWIwNjE2ZGRmYzE2YjM0MDE1MTFkNC4uNmQy
YmNkMmQ4OTQ4YzkzODhhM2JkZjFiMzUwYmRhMzBkZWUyOTM2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzYsMzQgKzM2LDI4IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYm
IGNoZWNraW5nQW5kQXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgZXhwbGljaXQgVGV4
dENoZWNraW5nUGFyYWdyYXBoKFJlZjxSYW5nZT4mJiBjaGVja2luZ1JhbmdlLCBSZWY8UmFuZ2U+
JiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgUmVmUHRyPFJhbmdlPiYmIHBhcmFncmFwaFJh
bmdlKTsKIAotICAgIGludCByYW5nZUxlbmd0aCgpIGNvbnN0OwotICAgIFJlZjxSYW5nZT4gc3Vi
cmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBjb25zdDsKLSAg
ICBFeGNlcHRpb25PcjxpbnQ+IG9mZnNldFRvKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CisgICAg
dWludDY0X3QgcmFuZ2VMZW5ndGgoKSBjb25zdDsKKyAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKENo
YXJhY3RlclJhbmdlKSBjb25zdDsKKyAgICBFeGNlcHRpb25Pcjx1aW50NjRfdD4gb2Zmc2V0VG8o
Y29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICB2b2lkIGV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhpcyB0byByZXR1cm4gYSBTdHJp
bmdWaWV3LgotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGFuZCBqdXN0IGhhdmluZyB0aGUgY2FsbGVyIHVzZSB0
ZXh0KCkgZGlyZWN0bHkuCi0gICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiB0ZXh0
KCkubGVuZ3RoKCk7IH0KLSAgICBTdHJpbmcgdGV4dFN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdCB7IHJldHVybiB0ZXh0KCkuc3Vic3RyaW5nKHBv
cywgbGVuKTsgfQotICAgIFVDaGFyIHRleHRDaGFyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biB0ZXh0KClbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KV07IH0KKyAgICBTdHJpbmdWaWV3
IHRleHQoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgaW50IGNo
ZWNraW5nU3RhcnQoKSBjb25zdDsKLSAgICBpbnQgY2hlY2tpbmdFbmQoKSBjb25zdDsKLSAgICBp
bnQgY2hlY2tpbmdMZW5ndGgoKSBjb25zdDsKLSAgICBTdHJpbmcgY2hlY2tpbmdTdWJzdHJpbmco
KSBjb25zdCB7IHJldHVybiB0ZXh0U3Vic3RyaW5nKGNoZWNraW5nU3RhcnQoKSwgY2hlY2tpbmdM
ZW5ndGgoKSk7IH0KKyAgICB1aW50NjRfdCBjaGVja2luZ1N0YXJ0KCkgY29uc3Q7CisgICAgdWlu
dDY0X3QgY2hlY2tpbmdFbmQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBjaGVja2luZ0xlbmd0aCgp
IGNvbnN0OworICAgIFN0cmluZ1ZpZXcgY2hlY2tpbmdTdWJzdHJpbmcoKSBjb25zdCB7IHJldHVy
biB0ZXh0KCkuc3Vic3RyaW5nKGNoZWNraW5nU3RhcnQoKSwgY2hlY2tpbmdMZW5ndGgoKSk7IH0K
IAogICAgIC8vIERldGVybWluZXMgdGhlIHJhbmdlIGluIHdoaWNoIHdlIGFsbG93IGF1dG9tYXRp
YyB0ZXh0IHJlcGxhY2VtZW50LiBJZiBhbiBhdXRvbWF0aWMgcmVwbGFjZW1lbnQgcmFuZ2UgaXMg
bm90IHBhc3NlZCB0byB0aGUKICAgICAvLyB0ZXh0IGNoZWNraW5nIHBhcmFncmFwaCwgdGhpcyBk
ZWZhdWx0cyB0byB0aGUgc3BlbGwgY2hlY2tpbmcgcmFuZ2UuCi0gICAgaW50IGF1dG9tYXRpY1Jl
cGxhY2VtZW50U3RhcnQoKSBjb25zdDsKLSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5n
dGgoKSBjb25zdDsKKyAgICB1aW50NjRfdCBhdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29u
c3Q7CisgICAgdWludDY0X3QgYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSBjb25zdDsKIAot
ICAgIGJvb2wgY2hlY2tpbmdSYW5nZU1hdGNoZXMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBj
b25zdCB7IHJldHVybiBsb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgbGVuZ3RoID09IGNo
ZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNvdmVyZWRCeShpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uIDw9IGNoZWNraW5n
U3RhcnQoKSAmJiBsb2NhdGlvbiArIGxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2lu
Z0xlbmd0aCgpOyB9Ci0gICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKGludCBsb2NhdGlvbiwg
aW50IGxlbmd0aCkgY29uc3QgeyByZXR1cm4gbG9jYXRpb24gPCBjaGVja2luZ0VuZCgpICYmIGxv
Y2F0aW9uICsgbGVuZ3RoID4gY2hlY2tpbmdTdGFydCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1Jh
bmdlTWF0Y2hlcyhDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9j
YXRpb24gPT0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxlbmd0aCA9PSBjaGVja2luZ0xlbmd0
aCgpOyB9CisgICAgYm9vbCBpc0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkoQ2hhcmFjdGVyUmFuZ2Ug
cmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxvY2F0aW9uIDw9IGNoZWNraW5nU3RhcnQoKSAm
JiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+PSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVj
a2luZ0xlbmd0aCgpOyB9CisgICAgYm9vbCBjaGVja2luZ1JhbmdlQ292ZXJzKENoYXJhY3RlclJh
bmdlIHJhbmdlKSBjb25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA8IGNoZWNraW5nRW5kKCkg
JiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7IH0KICAg
ICBSYW5nZSYgcGFyYWdyYXBoUmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTc1LDExICs2
OSwxMCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX3BhcmFncmFwaFJh
bmdlOwogICAgIG11dGFibGUgUmVmUHRyPFJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV90ZXh0OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2NoZWNraW5n
U3RhcnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdFbmQ7Ci0gICAgbXV0
YWJsZSBPcHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdMZW5ndGg7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxpbnQ+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PHVpbnQ2NF90PiBtX2NoZWNraW5nU3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDx1aW50NjRf
dD4gbV9jaGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2F1
dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDx1aW50NjRfdD4g
bV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aDsKIH07CiAKIGNsYXNzIFRleHRDaGVja2luZ0hl
bHBlciB7CkBAIC04OCwxMSArODEsMTEgQEAgcHVibGljOgogICAgIFRleHRDaGVja2luZ0hlbHBl
cihFZGl0b3JDbGllbnQmLCBSYW5nZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdIZWxwZXIoKTsKIAot
ICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZz
ZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
LSAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dy
YW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCk7CisgICAgU3RyaW5nIGZpbmRGaXJzdE1pc3Nw
ZWxsaW5nKHVpbnQ2NF90JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJl
ZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgU3RyaW5nIGZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1Nw
ZWxsaW5nLCB1aW50NjRfdCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0
R3JhbW1hckRldGFpbCk7CiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5n
ZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCi0g
ICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRl
dGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0Owor
ICAgIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsIHVpbnQ2NF90JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNv
bnN0OwogICAgIHZvaWQgbWFya0FsbEJhZEdyYW1tYXIoKTsKICAgICBib29sIGlzVW5ncmFtbWF0
aWNhbCgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMDQsNyArOTcsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3Q7CiAjaWYgVVNFKEdSQU1NQVJf
Q0hFQ0tJTkcpCi0gICAgaW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdy
YW1tYXJEZXRhaWw+JiwgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OworICAgIGludCBmaW5kRmly
c3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIHVpbnQ2NF90IGJh
ZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIHVpbnQ2NF90IGVu
ZE9mZnNldCwgYm9vbCBtYXJrQWxsKSBjb25zdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGJhMWI3MjBhZWYwMzQ4YmZhOWZlZGQ3ZDNk
NjY3MDI4NDA0MDY3YjUuLjIxODY0YzhmNGZjMDVjYjM5YTE5NzA0ZDI1NDQwM2U3ZWE2ODE3ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIzNDMsMjAgKzIz
NDMsMTQgQEAgc2l6ZV90IFNlYXJjaEJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKIAogLy8gLS0tLS0t
LS0KIAotQ2hhcmFjdGVyQ291bnQgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3VpbnQ2NF90IGNoYXJhY3RlckNv
dW50KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZp
b3IpCiB7Ci0gICAgQ2hhcmFjdGVyQ291bnQgbGVuZ3RoID0gMDsKKyAgICB1aW50NjRfdCBsZW5n
dGggPSAwOwogICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLCBiZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3Ro
KCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUmVmPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnN1
YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJh
Y3RlckNvdW50KQotewotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGVudGlyZVJhbmdlSXRlcmF0b3Io
ZW50aXJlUmFuZ2UpOwotICAgIHJldHVybiBjaGFyYWN0ZXJTdWJyYW5nZShlbnRpcmVSYW5nZS5v
d25lckRvY3VtZW50KCksIGVudGlyZVJhbmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hh
cmFjdGVyQ291bnQpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVSZXBsYWNlZEVs
ZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0
RW5kKCkpOwpAQCAtMjM2NSw4OCArMjM1OSw2NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNp
ZGVSZXBsYWNlZEVsZW1lbnQoVGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKICAgICByZXR1cm4gbm9k
ZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVyKCkpOwogfQogCi1S
ZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29u
dGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJv
b2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorY29uc3RleHByIHVpbnQ2NF90IGNsYW1wZWRB
ZGQodWludDY0X3QgYSwgdWludDY0X3QgYikKIHsKLSAgICBSZWY8UmFuZ2U+IHJlc3VsdFJhbmdl
ID0gc2NvcGUtPmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKLQotICAgIGludCBkb2NUZXh0UG9z
aXRpb24gPSAwOwotICAgIGludCByYW5nZUVuZCA9IHJhbmdlTG9jYXRpb24gKyByYW5nZUxlbmd0
aDsKLSAgICBib29sIHN0YXJ0UmFuZ2VGb3VuZCA9IGZhbHNlOwotCi0gICAgUmVmPFJhbmdlPiB0
ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKnNjb3BlKTsKLQotICAgIFRleHRJdGVyYXRv
ciBpdCh0ZXh0UnVuUmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9y
RGVmYXVsdEJlaGF2aW9yKTsKLSAgICAKLSAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sg
c2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODk+LgotICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAh
cmFuZ2VMZW5ndGggJiYgaXQuYXRFbmQoKSkgewotICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3Rh
cnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmVzdWx0UmFu
Z2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDApOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0UmFuZ2U7Ci0gICAgfQorICAgIGF1dG8gc3VtID0gYSArIGI7CisgICAgcmV0
dXJuIHN1bSA+PSBhID8gc3VtIDogc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
OworfQogCi0gICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAg
aW50IGxlbmd0aCA9IGl0LnRleHQoKS5sZW5ndGgoKTsKLSAgICAgICAgdGV4dFJ1blJhbmdlID0g
Y3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpOworU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzY29wZSwgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UsIFRl
eHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQoreworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBT
aW1wbGVSYW5nZSB7IHJhbmdlLmxvY2F0aW9uID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQsIChy
YW5nZS5sb2NhdGlvbiB8fCByYW5nZS5sZW5ndGgpID8gc2NvcGUuZW5kIDogc2NvcGUuc3RhcnQg
fTsKKyAgICBhdXRvIHJhbmdlRW5kID0gY2xhbXBlZEFkZChyYW5nZS5sb2NhdGlvbiwgcmFuZ2Uu
bGVuZ3RoKTsKKyAgICB1aW50NjRfdCBsb2NhdGlvbiA9IDA7CisgICAgZm9yIChUZXh0SXRlcmF0
b3IgaXQoc2NvcGUsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CisgICAgICAgIGF1dG8g
dGV4dFJ1blJhbmdlID0gaXQucmFuZ2UoKTsKIAotICAgICAgICBib29sIGZvdW5kU3RhcnQgPSBy
YW5nZUxvY2F0aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1Rl
eHRQb3NpdGlvbiArIGxlbmd0aDsKLSAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49
IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7
CisgICAgICAgIGF1dG8gZm91bmQgPSBbJl0gKHVpbnQ2NF90IHRhcmdldExvY2F0aW9uKSAtPiBi
b29sIHsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlvbiA+PSBsb2NhdGlvbiAmJiB0
YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGxlbmd0aDsKKyAgICAgICAgfTsKKyAgICAgICAg
Ym9vbCBmb3VuZFN0YXJ0ID0gZm91bmQocmFuZ2UubG9jYXRpb24pOworICAgICAgICBib29sIGZv
dW5kRW5kID0gZm91bmQocmFuZ2VFbmQpOwogCiAgICAgICAgIGlmIChmb3VuZEVuZCkgewotICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0
IHRoZSBlbmQgb2YgYSBydW4gaXMgb2Z0ZW4gYXQgdGhlIHdyb25nCi0gICAgICAgICAgICAvLyBw
b3NpdGlvbiBmb3IgZW1pdHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJl
bnQgbm9kZSBpcyBhIHJlcGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBv
ZnRlbiBhdCB0aGUgd3JvbmcgcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3Mgb3IgaWYgdGhlIHJl
bmRlcmVyIG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgYSByZXBsYWNlZCBlbGVtZW50LgorICAgICAg
ICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGNvbnRyb2xsaW5nIHRoaXMgd2l0aCBUZXh0SXRlcmF0
b3JCZWhhdmlvciBpbnN0ZWFkIG9mIGRvaW5nIGl0IHVuY29uZGl0aW9uYWxseSB0byBoZWxwIHVz
IGV2ZW50dWFsbHkgcGhhc2UgaXQgb3V0IGV2ZXJ5d2hlcmUuCiAgICAgICAgICAgICBpZiAobGVu
Z3RoID09IDEgJiYgKGl0LnRleHQoKVswXSA9PSAnXG4nIHx8IGlzSW5zaWRlUmVwbGFjZWRFbGVt
ZW50KGl0KSkpIHsKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBp
dC5yYW5nZSgpLnN0YXJ0OwotICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVu
ZChXVEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0
UnVuUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24g
cnVuRW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKCpydW5FbmQuY29udGFpbmVyTm9k
ZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWl0LmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS5l
bmQgPSBpdC5yYW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBlbmQgPSBtYWtlQm91bmRhcnlQb2ludChWaXNpYmxlUG9zaXRp
b24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHRleHRSdW5SYW5nZS5zdGFydCkpLm5leHQo
KS5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5n
ZS5lbmQgPSAqZW5kOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7Ci0gICAgICAgICAgICBzdGFydFJhbmdlRm91
bmQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIo
KS5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmFuZ2VMb2Nh
dGlvbiAtIGRvY1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0
U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQgKyB0ZXh0UnVuUmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAocmFuZ2VMb2NhdGlvbiA9PSBkb2NUZXh0UG9zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5lbmRD
b250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CisgICAgICAgIGF1dG8gYm91
bmRhcnkgPSBbJl0gKHVpbnQ2NF90IHRhcmdldExvY2F0aW9uKSAtPiBCb3VuZGFyeVBvaW50IHsK
KyAgICAgICAgICAgIGlmIChpczxUZXh0Pih0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyKSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9uIDw9IGRv
d25jYXN0PFRleHQ+KHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIuZ2V0KCkpLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0UnVuUmFuZ2Uuc3RhcnQu
b2Zmc2V0ICsgdGFyZ2V0TG9jYXRpb24gLSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB0ZXh0UnVuUmFuZ2Uuc3RhcnQuY29udGFpbmVyLmNvcHlSZWYoKSwgb2Zmc2V0IH07CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRMb2NhdGlv
biA9PSBsb2NhdGlvbiA/IHRleHRSdW5SYW5nZS5zdGFydCA6IHRleHRSdW5SYW5nZS5lbmQ7Cisg
ICAgICAgIH07CiAKKyAgICAgICAgaWYgKGZvdW5kU3RhcnQpCisgICAgICAgICAgICByZXN1bHRS
YW5nZS5zdGFydCA9IGJvdW5kYXJ5KHJhbmdlLmxvY2F0aW9uKTsKICAgICAgICAgaWYgKGZvdW5k
RW5kKSB7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlz
VGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZUVuZCAtIGRv
Y1RleHRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRS
dW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgb2Zmc2V0ICsgdGV4dFJ1blJhbmdlLT5zdGFydE9m
ZnNldCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJhbmdl
RW5kID09IGRvY1RleHRQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2Ut
PnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHRleHRSdW5SYW5nZS0+c3Rh
cnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+ZW5kQ29udGFpbmVyKCksIHRleHRSdW5S
YW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZG9jVGV4dFBv
c2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLmVuZCA9IGJvdW5kYXJ5
KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgZG9j
VGV4dFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgbG9jYXRpb24gKz0gbGVuZ3RoOwogICAg
IH0KLSAgICAKLSAgICBpZiAoIXN0YXJ0UmFuZ2VGb3VuZCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCi0gICAgaWYgKHJhbmdlTGVuZ3RoICYmIHJhbmdlRW5kID4gZG9jVGV4dFBvc2l0
aW9uKSAvLyByYW5nZUVuZCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgIHJlc3VsdFJhbmdlLT5z
ZXRFbmQodGV4dFJ1blJhbmdlLT5lbmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZz
ZXQoKSk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogfQogCitCb3VuZGFyeVBvaW50
IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgc2NvcGUsIHVpbnQ2
NF90IGxvY2F0aW9uLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICByZXR1
cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCB7IGxvY2F0aW9uLCAwIH0sIGJlaGF2aW9y
KS5zdGFydDsKK30KKwogYm9vbCBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UsIHNpemVfdCYgbG9jYXRpb24s
IHNpemVfdCYgbGVuZ3RoKQogewogICAgIGxvY2F0aW9uID0gbm90Rm91bmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAwOTE0ZjdiY2E2MTUwOWZiNWMzZGVlYWM5ZDM4
Y2U0ZDRjMzg5NjRiLi5lMTYwMjg3NWIyZjc1ZWQzMWU3NTAxY2FhMzAwYjRjOGY2MzliZjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDaGFyYWN0ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZp
bmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IlNpbXBsZVJhbmdlLmgiCkBAIC0xMDIsMTAgKzEwMyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBU
ZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQmIGNvcHlhYmxlVGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFh
dEVuZCgpKTsgcmV0dXJuIG1fY29weWFibGVUZXh0OyB9CiAgICAgdm9pZCBhcHBlbmRUZXh0VG9T
dHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0IHsgY29weWFibGVUZXh0
KCkuYXBwZW5kVG9TdHJpbmdCdWlsZGVyKGJ1aWxkZXIpOyB9CiAKLSAgICAvLyBGSVhNRTogTW92
ZSB0aGVzZSB0byBTaW1wbGVSYW5nZSwgQ2hhcmFjdGVyUmFuZ2UsIGFuZCBDaGFyYWN0ZXJDb3Vu
dCBhbmQgbW92ZSBvdXQgb2YgdGhpcyBjbGFzcyB0byB0aGUgdG9wIGxldmVsIChib3R0b20gb2Yg
dGhpcyBmaWxlKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9j
YXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0g
ZmFsc2UpOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gU2ltcGxlUmFuZ2UgYW5kIENoYXJh
Y3RlclJhbmdlIGFuZCBtb3ZlIG91dCBvZiB0aGlzIGNsYXNzIHRvIHRoZSB0b3AgbGV2ZWwuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFu
Z2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBs
ZW5ndGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJh
bmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoKTsKQEAgLTI4OSwxMyArMjg4LDkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZGlkTG9va0FoZWFkIHsgdHJ1ZSB9OwogfTsKIAotdXNpbmcgQ2hh
cmFjdGVyQ291bnQgPSBzdGQ6OnNpemVfdDsKIAotc3RydWN0IENoYXJhY3RlclJhbmdlIHsKLSAg
ICBDaGFyYWN0ZXJDb3VudCBsb2NhdGlvbiB7IDAgfTsKLSAgICBDaGFyYWN0ZXJDb3VudCBsZW5n
dGggeyAwIH07Ci19OwotCi1XRUJDT1JFX0VYUE9SVCBDaGFyYWN0ZXJDb3VudCBjaGFyYWN0ZXJD
b3VudChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJh
dG9yRGVmYXVsdEJlaGF2aW9yKTsKK1dFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGNoYXJhY3RlckNv
dW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCByZXNvbHZl
Q2hhcmFjdGVyTG9jYXRpb24oY29uc3QgU2ltcGxlUmFuZ2UmLCB1aW50NjRfdCwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBP
UlQgU2ltcGxlUmFuZ2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Q2hhcmFjdGVyUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDJiOTMxN2IxNzEzZjI2MGEyZGFm
MzhjNWIxZmJhNGUwODRhYjdjYTYuLjk5ZTYxNTljY2E2NzY5NTlhOTgwYTQxMjk1NmI4YzVkM2Yz
MzY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRl
dGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKFZpc2libGVQb3NpdGlvbgogICAgICAgICBDRlJh
bmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwogICAg
ICAgICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYg
KGhpdExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFu
Z2VJbkNvbnRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29u
dGV4dFJhbmdlLCByZXN1bHRSYW5nZUluQ29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNv
bnRleHQubGVuZ3RoKTsKKyAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9IGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0UmFuZ2VJbkNv
bnRleHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTA4LDkg
KzUwOCwxMiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShS
ZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICBWZWN0b3I8UmVmUHRy
PFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4
IGZyYWdtZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7Ci0gICAgICAgIGlm
IChmcmFnbWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCi0gICAgICAgICAg
ICBmcmFnbWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJh
bmdlLCBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVl
cnlSYW5nZS5zdGFydC5vZmZzZXQpKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChmcmFn
bWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpIHsKKyAgICAgICAgICAgIENo
YXJhY3RlclJhbmdlIGZyYWdtZW50UmFuZ2U7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlLmxv
Y2F0aW9uID0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJh
bmdlLmxlbmd0aCA9IHF1ZXJ5UmFuZ2UuZW5kLm9mZnNldCAtIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zm
c2V0OworICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmN1cnJlbnRSYW5nZSwgZnJhZ21lbnRSYW5nZSkpKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQp
CiAgICAgICAgICAgICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGN1cnJlbnRSYW5nZSk7CiAg
ICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rp
b25hcnlMb29rdXAubW0KaW5kZXggZDY0OGZkNzBmYzM4ZmM5MmMyNGU1MTc4OTA0N2NlZjYyNjNm
YTUwOS4uNDdhZDQ3YTczZGRjM2U3MjUxZmIxZjMwNTViYjEyMGNjOWUxZjA5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjg3
LDEwICsyODcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjbwogCiAgICAgUmVmUHRyPFJhbmdl
PiBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFw
aEVuZCk7CiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoZnVsbENoYXJhY3RlclJh
bmdlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8UlZJdGVtPiBpdGVtID0gYWRvcHROUyhbYWxsb2NS
Vkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFu
Z2VUb1Bhc3NdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdo
bGlnaHRSYW5nZTsKKyAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NS
Vkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6cmFu
Z2VUb1Bhc3NdKS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIAotICAgIHJldHVybiB7IFRleHRJdGVy
YXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRp
b24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCksIG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxp
dmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxp
Z2h0UmFuZ2UpKSwgbmlsIH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBA
IC0zNTgsMTMgKzM1NywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFy
eSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIE5TUmFuZ2Ug
c2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4
OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0
aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsKIAogICAgIFN0cmluZyBpdGVt
U3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2UpOwotICAgIFJldGFpblB0cjxS
Vkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0
Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSk7Ci0gICAgTlNSYW5nZSBo
aWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CisgICAgYXV0byBoaWdo
bGlnaHRSYW5nZSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6
aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKS5nZXQoKS5oaWdobGlnaHRS
YW5nZTsKIAogICAgIGlmIChoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kIHx8
ICFoaWdobGlnaHRSYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9
OwogICAgIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFyYWN0
ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24sIGhpZ2hsaWdodFJhbmdlLmxlbmd0aCks
IG5pbCB9OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgaGlnaGxpZ2h0UmFuZ2UpKSwgbmlsIH07CiAgICAgCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggYTJiODE4Mjg3N2Iy
OGFmMjljOGEwNjM5NTRkMzc0Y2Q1YWE1YTVkYS4uNWI0M2NhMzNlOTBmYWEyZTZmZTE4NDVjOTIz
N2IwYTlmZWE3NDNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGlj
dGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGlj
dGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRGljdGF0aW9uQ29tbWFuZElP
Uzo6RGljdGF0aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0b3I8
U3RyaW4KIAogdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKIHsKLSAgICBDaGFy
YWN0ZXJDb3VudCByZXN1bHRMZW5ndGggPSAwOworICAgIHVpbnQ2NF90IHJlc3VsdExlbmd0aCA9
IDA7CiAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbnMgOiBtX2RpY3RhdGlvblBocmFzZXMp
IHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBmaXJzdEludGVycHJldGF0aW9uID0gaW50ZXJwcmV0
YXRpb25zWzBdOwogICAgICAgICByZXN1bHRMZW5ndGggKz0gZmlyc3RJbnRlcnByZXRhdGlvbi5s
ZW5ndGgoKTsKQEAgLTcyLDExICs3Miw4IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9B
cHBseSgpCiAgICAgaWYgKGVuZE9mZnNldCA8IHJlc3VsdExlbmd0aCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgocm9vdCwgZW5kT2Zmc2V0IC0gcmVzdWx0TGVuZ3RoLCBlbmRPZmZzZXQpOwot
ICAgIGlmICghcmVzdWx0UmFuZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50KCku
bWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcigqcmVzdWx0UmFuZ2UsIG1fbWV0YWRh
dGEpOworICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgeyBlbmRPZmZzZXQgLSByZXN1bHRMZW5n
dGgsIGVuZE9mZnNldCB9KTsKKyAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25S
ZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UsIG1fbWV0YWRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9u
YXJ5TG9va3VwTGVnYWN5Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cExlZ2FjeS5tbQppbmRleCA1MTM1YjkwNmRlZTE4ZTAxNzc5ZWM2MTE0NzQzMWM3OTVl
MzhhNThlLi42NWQ1ZGQ1NjJlOTM3MGNlYmZjZTUzYzMyMjVlMjczNWM1NWI1ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0KQEAgLTE0MiwxNCArMTQyLDE0IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0
aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0CiAKICAgICBO
U1JhbmdlIHJhbmdlVG9QYXNzID0gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoeyAqZnVsbENo
YXJhY3RlclN0YXJ0LCAqcG9zaXRpb25Cb3VuZGFyeSB9KSwgMCk7CiAgICAgTlNEaWN0aW9uYXJ5
ICpvcHRpb25zID0gbmlsOwotICAgIE5TUmFuZ2UgZXh0cmFjdGVkUmFuZ2UgPSB0b2tlblJhbmdl
KHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpLCByYW5nZVRvUGFzcywgJm9wdGlv
bnMpOworICAgIGF1dG8gZXh0cmFjdGVkUmFuZ2UgPSBtYWtlQ2hhcmFjdGVyUmFuZ2UodG9rZW5S
YW5nZShwbGFpblRleHQoZnVsbENoYXJhY3RlclJhbmdlLmdldCgpKSwgcmFuZ2VUb1Bhc3MsICZv
cHRpb25zKSk7CiAKICAgICAvLyB0b2tlblJhbmdlIHNvbWV0aW1lcyByZXR1cm5zIHtOU05vdEZv
dW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIGdvb2Qgc3RyaW5nLgogICAg
IC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayBmb3IgemVybyBs
ZW5ndGggaGVyZS4KLSAgICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3Vu
ZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQorICAgIGlmICghZXh0cmFjdGVkUmFuZ2UgfHwg
IWV4dHJhY3RlZFJhbmdlLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9
OwogCi0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJh
bmdlLCBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiwgZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSwgb3B0
aW9ucyB9OworICAgIHJldHVybiB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgKmV4dHJhY3RlZFJhbmdlKSksIG9wdGlvbnMgfTsKIH0K
IAogc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9uQnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlvbiAq
c2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIE5TSW50ZWdl
ciYgY2hhcmFjdGVyc0FkZGVkQmVmb3JlU3RhcnQsIE5TSW50ZWdlciYgY2hhcmFjdGVyc0FkZGVk
QWZ0ZXJFbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMGIwZDNhMTkw
ZjI4NzJmNGI5OWUzMTc0NjJjMzkwMmI1ZmVkYjE0MS4uNGVmNjdkMmYyMmI3NjQ4ZTlhYWMyMjA4
ZWQyNzM4OTkyMjg0ODU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
NjU0LDcgKzY1NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRU
cmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAgICAgcmV0dXJuIHVwZGF0
ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwg
ZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25Nb3VzZURvd24oKnRhcmdldE5vZGUsIG5l
d1NlbGVjdGlvbiksIFBhcmFncmFwaEdyYW51bGFyaXR5KTsKIH0KIAotc3RhdGljIENoYXJhY3Rl
ckNvdW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9u
JiBlbmQpCitzdGF0aWMgdWludDY0X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIHsKICAgICBhdXRvIHN0YXJ0Qm91bmRhcnkgPSBtYWtl
Qm91bmRhcnlQb2ludChzdGFydCk7CiAgICAgYXV0byBlbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFy
eVBvaW50KGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBjYjMwNzFiYzQzMjhlNGVlM2Q0NWMz
ZjJjM2FiZDJiNWJmMWFjMDk3Li45ZjBhNDA2ZGU0MTQ5MTgzZjg1MTE2MTI0YjNlZDVjMTliMWVm
MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgwMyw4ICs4MDMsNyBAQCB1bnNpZ25lZCBQYWdl
Ojpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZwogCiBzdHJ1Y3QgRmluZFJlcGxhY2VtZW50UmFuZ2UgewogICAgIFJlZlB0cjxD
b250YWluZXJOb2RlPiByb290OwotICAgIHNpemVfdCBsb2NhdGlvbiB7IG5vdEZvdW5kIH07Ci0g
ICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKIH07CiAK
IHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRS
ZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCkK
QEAgLTgxNiwxMCArODE1LDEwIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFn
ZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICAvLyBFbnN1cmUgdGhhdCByYW5nZXMgYXJlIHNv
cnRlZCBieSB0aGVpciBlbmQgb2Zmc2V0cywgcGVyIGVkaXRpbmcgY29udGFpbmVyLgotICAgICAg
ICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGg7
CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5yYW5nZS5sb2NhdGlvbiAr
IHJhbmdlLnJhbmdlLmxlbmd0aDsKICAgICAgICAgYXV0byBpbnNlcnRpb25JbmRleCA9IHJhbmdl
TGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlTGlzdC5yYmVn
aW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VMaXN0LnJlbmQoKTsgKytpdGVyYXRvcikgewotICAgICAg
ICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNlcnRpb25JbmRleCA9IGl0ZXJhdG9yLT5sb2Nh
dGlvbiArIGl0ZXJhdG9yLT5sZW5ndGg7CisgICAgICAgICAgICBhdXRvIGVuZE9mZnNldEJlZm9y
ZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPnJhbmdlLmxvY2F0aW9uICsgaXRlcmF0b3ItPnJh
bmdlLmxlbmd0aDsKICAgICAgICAgICAgIGlmIChlbmRPZmZzZXRGb3JSYW5nZSA+PSBlbmRPZmZz
ZXRCZWZvcmVJbnNlcnRpb25JbmRleCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGluc2VydGlvbkluZGV4LS07CkBAIC04NjIsMTEgKzg2MSwxMSBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5n
ZT4mIHJhbmdlcwogICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdoIHJhbmdlcyB3
aGVuIHJlcGxhY2luZyB0ZXh0LCBzdWNoIHRoYXQgZWFybGllciB0ZXh0IHJlcGxhY2VtZW50cyBk
b24ndCBjbG9iYmVyIHJlcGxhY2VtZW50IHJhbmdlcyBsYXRlciBvbi4KICAgICAgICAgYXV0byYg
cmFuZ2VzID0gcmFuZ2VzQnlDb250YWluZXJOb2RlLmZpbmQoY29udGFpbmVyKS0+dmFsdWU7CiAg
ICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlcy5yYmVnaW4oKTsgaXRlcmF0b3IgIT0g
cmFuZ2VzLnJlbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLmdldCgpLCBp
dGVyYXRvci0+bG9jYXRpb24sIGl0ZXJhdG9yLT5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFy
YW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCisgICAgICAgICAgICBhdXRvIHJhbmdlID0gcmVz
b2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqY29udGFp
bmVyKSwgaXRlcmF0b3ItPnJhbmdlKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS5jb2xsYXBzZWQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2Vs
ZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5nZShyYW5nZSkucHRyKCksIERP
V05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1l
bnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBs
YWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQpOwogICAgICAgICB9CiAgICAg
fQpAQCAtODk4LDcgKzg5Nyw3IEBAIHVpbnQzMl90IFBhZ2U6OnJlcGxhY2VSYW5nZXNXaXRoVGV4
dChjb25zdCBWZWN0b3I8UmVmPFJhbmdlPj4mIHJhbmdlc1RvUmVwbGFjZSwKICAgICAgICAgaWYg
KHJlcGxhY2VtZW50TG9jYXRpb24gPT0gbm90Rm91bmQgfHwgIXJlcGxhY2VtZW50TGVuZ3RoKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5k
KHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxhY2VtZW50
TGVuZ3RoIH0pOworICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZNb3ZlKGhp
Z2hlc3RSb290KSwgeyByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCB9IH0p
OwogICAgIH0KIAogICAgIHJlcGxhY2VSYW5nZXMoKnRoaXMsIHJlcGxhY2VtZW50UmFuZ2VzLCBy
ZXBsYWNlbWVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNr
aW5nLmgKaW5kZXggZDBkMDBjNmJkNTczMjc3M2MwYTM3ZThiYjUzNjU3ZWIzNDc3ZGViMy4uZDI0
NWNjZDllYzkxMjAyZWMzZDBmNDllZDU1NGMzMDUwZWU5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMCArMzEsOSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYzLDE2
ICs2MiwxNCBAQCBlbnVtIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHsKIH07CiAKIHN0cnVjdCBH
cmFtbWFyRGV0YWlsIHsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsKKyAgICBD
aGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwogICAgIFN0
cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsK
ICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7Ci0gICAgaW50IGxvY2F0aW9uOwotICAgIGludCBs
ZW5ndGg7CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPEdyYW1tYXJEZXRh
aWw+IGRldGFpbHM7CiAgICAgU3RyaW5nIHJlcGxhY2VtZW50OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZjI3Yjk5ZjM4N2MxMjhhZmZiNDM2OWFiNGVjM2E5YzBi
ZmZjMjk4Li4xMzRlYTMxZmNlOGY5ODg5MTEyY2MxNGMwN2ZkMTc0ZGJlNWJjZTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDQ0LDkgKzIwNDQsOSBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJbnRlcm5hbHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAgIHJldHVy
biB7IH07CiB9CiAKLVJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCkKK1JlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChF
bGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFuZ2VMZW5n
dGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoJnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0
ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKHNjb3BlKSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9CiAKIHVu
c2lnbmVkIEludGVybmFsczo6bG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUsIGNvbnN0
IFJhbmdlJiByYW5nZSkKQEAgLTIwNzUsOSArMjA3NSw5IEBAIFN0cmluZyBJbnRlcm5hbHM6OnJh
bmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQog
ICAgIHJldHVybiBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3Rpbmco
cmFuZ2UpOwogfQogCi1SZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2UmIHJhbmdl
LCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmPFJhbmdlPiBJbnRlcm5h
bHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWdu
ZWQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocmFu
Z2UsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxl
bmd0aCB9KSk7CiB9CiAKIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3RyaW5nTmVh
ckxvY2F0aW9uKGNvbnN0IFJhbmdlJiBzZWFyY2hSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1
bnNpZ25lZCB0YXJnZXRPZmZzZXQpCkBAIC0yNDMyLDggKzI0MzIsNyBAQCB2b2lkIEludGVybmFs
czo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIHVuc2ln
bmVkIGxvY2F0aQogCiAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQu
dHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Ok5vbmU7Ci0gICAgcmVzdWx0LmxvY2F0aW9uID0gbG9j
YXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXN1bHQucmFuZ2UgPSB7
IGxvY2F0aW9uLCBsZW5ndGggfTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7
CiAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBl
MjM1MjM0MWRiOGMxNWQ0MjlmOWNlZmQyODlkZjUyMjcwZTVhYzdjLi5jZjc5ZTUwYzdiODQ3M2Y2
ZmUyNTJmOGNjNzY4NTljNmY5MTU3MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTI5NSwxMiArMjk1LDEyIEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGlu
dmFsaWRhdGVDb250cm9sVGludHMoKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFu
Z2VMZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
RWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVu
Z3RoKTsKICAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwgY29u
c3QgUmFuZ2UmKTsKICAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUs
IGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0KGNvbnN0IFJhbmdlJik7CiAg
ICAgU3RyaW5nIHJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFu
Z2UmKTsKLSAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgaW50IHJhbmdlTG9jYXRpb24s
IGludCByYW5nZUxlbmd0aCk7CisgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIHVuc2ln
bmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICBFeGNlcHRpb25P
cjxSZWZQdHI8UmFuZ2U+PiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGludCB4
LCBpbnQgeSk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nTmVhckxvY2F0aW9uKGNv
bnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggMTYyZmFmNDk0NmVhYWRkOTgwZTU3ODlhMThiYmRlYzU1ODNm
NjMyMy4uMzc1NzkwNzcwNGY5MzEzZTY4NDE0YzAwNTU5MTc0MWU0NmEyNWRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzI1LDEyICszMjUsMTIgQEAgZW51bSBDb21w
b3NpdGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Nyb2xsRWxl
bWVudFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcg
aCk7CiAKLSAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29w
ZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5nZT8gcmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgdW5zaWduZWQgbG9uZyByYW5n
ZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAgICB1bnNp
Z25lZCBsb25nIGxlbmd0aEZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAg
ICAgRE9NU3RyaW5nIHJhbmdlQXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJpbmcgcmFu
Z2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihSYW5nZSByYW5nZSk7Ci0gICAgUmFu
Z2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxl
bmd0aCk7CisgICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIHVuc2lnbmVkIGxvbmcgcmFu
Z2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgW01heVRocm93RXhj
ZXB0aW9uXSBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihsb25nIHgs
IGxvbmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFuZ2UgcmFu
Z2UsIERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0aW5nUmFuZ2UuY3BwCmluZGV4IGI4OTkzM2ZmYTFiZjI4NDNjMjZmZGJkNjZkMjkyNmVk
MDBjNWY2YTEuLjc2ZWY0NzIyZDc1MWNmNmU1OWFhYjllZGZhYjY2NTZlNzA0ZjE2ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtMzMsNDIgKzMzLDMyIEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6
dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2Us
IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYg
ZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBFZGl0aW5nUmFuZ2VJc1Jl
bGF0aXZlVG8gYmFzZSkKIHsKLSAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQp
OworICAgIEFTU0VSVChlZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOworICAgIFdl
YkNvcmU6OkNoYXJhY3RlclJhbmdlIHJhbmdlIHsgZWRpdGluZ1JhbmdlLmxvY2F0aW9uLCBlZGl0
aW5nUmFuZ2UubGVuZ3RoIH07CiAKLSAgICAvLyBTYW5pdGl6ZSB0aGUgaW5wdXQsIGJlY2F1c2Ug
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0YWtlcyBzaWduZWQgaW50
ZWdlcnMuCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaW50IGxlbmd0aDsKLSAgICBpZiAocmFuZ2UubGVuZ3RoIDw9IElOVF9N
QVggJiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGggPD0gSU5UX01BWCkKLSAgICAgICAg
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sZW5ndGgpOwotICAgIGVsc2UKLSAgICAg
ICAgbGVuZ3RoID0gSU5UX01BWCAtIHJhbmdlLmxvY2F0aW9uOwotCi0gICAgaWYgKGVkaXRpbmdS
YW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9v
dCkgeworICAgIGlmIChiYXNlID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVS
b290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBj
b2RlIHBhdGggaXMgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgICAgICAvLyBjb25j
ZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgogICAgICAg
ICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFy
ZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QKICAgICAgICAgLy8gZGlyZWN0bHkgaW4gdGhl
IGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0
aW9uIGlzCiAgICAgICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRo
ZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAgICAgLy8gVGhh
dCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChm
cmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwg
c3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgICAgIGF1dG8q
IGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJh
bmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKSk7CiAg
ICAgfQogCi0gICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFu
Z2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7Ci0KLSAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBpZiAoIXNlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoYmFzZSA9PSBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CiAKLSAgICBhdXRvIHBhcmFncmFw
aFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCkpKTsKKyAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9p
bnQoc3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJl
ZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRleCA9IFdl
YkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBoU3RhcnQg
fSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgcmFuZ2UubG9jYXRpb24s
IGxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5l
bmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpyZXNvbHZlQ2hhcmFjdGVy
UmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQpIH0sIHJh
bmdlKSk7CiB9CiAKIEVkaXRpbmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3Jl
OjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJhbmdlKiByYW5nZSwgRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmgKaW5kZXggOTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJjNmI5MzA2
OS4uZTA0M2Y5NzI0MGU0MjVlY2QyNWE0MjdlZGQ5MjdhY2I3NDVlMzYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBFZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8gOiB1aW50OF90IHsKICAgICBQYXJhZ3JhcGgsCiB9OwogCisvLyBG
SVhNRTogUmVwbGFjZSB0aGlzIHdpdGggT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+Lgogc3RydWN0
IEVkaXRpbmdSYW5nZSB7CiAgICAgRWRpdGluZ1JhbmdlKCkKICAgICAgICAgOiBsb2NhdGlvbihu
b3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJlODFhYmMxYTkxODAuLjQyNTc3
NTc5ZmQ3ZTViMTQ4ZGYwZDIyYmNjZGQxNTFmZThlZDQ4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExOCw2ICsxMTgsOCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8vIEZJWE1F
OiBTZWVtcyBsaWtlIHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRoZSBjb2Rl
IGJlbG93IGEgbG90IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENhY2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENh
Y2hlUXVlcnlPcHRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENoYXJhY3Rl
clJhbmdlJiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
YW5nZS5sb2NhdGlvbik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmFu
Z2UubGVuZ3RoKTsKK30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8
Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDx1aW50NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAgICBpZiAo
IWxvY2F0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKmxvY2F0
aW9uLCAqbGVuZ3RoIH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsK
QEAgLTIwNTMsMjIgKzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAogdm9pZCBB
cmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgR3JhbW1hckRldGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxvY2F0
aW9uOwotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8IGRldGFp
bC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29kZXIgPDwg
ZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJn
dW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwotICAg
IGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRp
b25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAoIWxlbmd0
aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2RlciA+PiBy
YW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIwOTgsNyBA
QCBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpsb2NhdGlv
biksIFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1c2VyRGVz
Y3JpcHRpb24pIH19OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwg
V1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBU
ZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBUZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVz
dWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYg
cmVzdWx0KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0gICAgZW5j
b2RlciA8PCByZXN1bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVuZ3RoOwor
ICAgIGVuY29kZXIgPDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0LmRldGFp
bHM7CiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5LDE0ICsy
MTQ1LDkgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlv
bmFsPGludD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBpZiAoIWxv
Y2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8aW50
PiBsZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgpCisgICAg
T3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFuZ2U7Cisg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2MCw3IEBA
IE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIFdURk1v
dmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1v
dmUoKnJlcGxhY2VtZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92
ZSgqZGV0YWlscyksIFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQgQXJndW1l
bnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBV
c2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0
YTIxNmU4NGYwMTcuLjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2MjdkMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjks
NiArNjksNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKwogY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYsNiArMTE3
LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsK
IAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3Ry
dWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwog
c3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IFZl
bG9jaXR5RGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CiAgICAgCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJl
Y3RFZGdlczxmbG9hdD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsyMTgsMTEg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q2hhcmFjdGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdl
YkNvcmU6OkNoYXJhY3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDBmZDJlNTYyODk1YjMxNjNl
ZjZlNzk2YjgzZGEwZmU1NjI0MThjMWUuLmVlYzk5ZGMxZjg4MmMwMDkyMTU2YzY1N2JhZjQwNmRh
MzI1MGRmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCkBAIC0zMzY2LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkKIAogc3Rh
dGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAg
IE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVUZXh0Q2hl
Y2tpbmdUeXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgcmVzdWx0LnJhbmdlID0gbnNSZXN1bHQucmFuZ2U7CiAgICAgcmVzdWx0LnJlcGxh
Y2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKaW5kZXgg
NmVlNDQxYjExYTIzOTA1ZTMzYzM5ZDhhOWUwMGQzOTdmOTZmNTJiMS4uMzAyMTE0ZDkzNzVjMDY3
MGNhOTY2NTc5ZjI1YjNkMTdhNmZmOTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTQ0LDggKzQ0LDcgQEAgUmVmPFdlYkdyYW1tYXJEZXRh
aWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWls
JiBncmEKIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbChpbnQgbG9jYXRpb24s
IGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2Ny
aXB0aW9uKQogewotICAgIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGxvY2F0aW9uOwotICAg
IG1fZ3JhbW1hckRldGFpbC5sZW5ndGggPSBsZW5ndGg7CisgICAgbV9ncmFtbWFyRGV0YWlsLnJh
bmdlID0gQ2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CiAKICAgICBzaXplX3QgbnVt
R3Vlc3NlcyA9IGd1ZXNzZXMtPnNpemUoKTsKICAgICBtX2dyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5y
ZXNlcnZlQ2FwYWNpdHkobnVtR3Vlc3Nlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
cmFtbWFyRGV0YWlsLmgKaW5kZXggYzliNzU1M2NkN2IwOGVlYWM3ZDgyMzM4YjExMGY0YWVkZDll
ZjZhYy4uMzkwYjRhNWY3YjllYWM2MzFmZDczMjQxNjU3ZTIyMWRhNWMxOTVkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtNDIsOCArNDIsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoaW50IGxvY2F0
aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJE
ZXNjcmlwdGlvbik7CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogCi0gICAgaW50IGxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uOyB9Ci0gICAgaW50IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sZW5ndGg7IH0KKyAgICBpbnQgbG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb247IH0KKyAgICBp
bnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aDsg
fQogICAgIFJlZjxBUEk6OkFycmF5PiBndWVzc2VzKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5n
JiB1c2VyRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwudXNlckRl
c2NyaXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9U
ZXh0Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwCmluZGV4IDQxMDhmYWQ2ZDI2NjU3ZWFkZTkwODZjMTZjZmRmMjE4MTA3Y2NiMjUu
LmJiMDk0NTg5MzZjNDY2ODA0NDYxOWY3OGM2YWIxNGYwMmI1ZDZiMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcApAQCAtMjY5LDggKzI2OSw3
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IG1pc3NwZWxsaW5nUmVzdWx0OwogICAgICAgICBtaXNzcGVsbGluZ1Jlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIG1pc3NwZWxsaW5nUmVzdWx0LmxvY2F0
aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKLSAgICAgICAgbWlzc3BlbGxpbmdS
ZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAgIG1pc3NwZWxsaW5nUmVz
dWx0LnJhbmdlID0gQ2hhcmFjdGVyUmFuZ2Uob2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwg
bWlzc3BlbGxpbmdMZW5ndGgpOwogICAgICAgICBwYXJhZ3JhcGhDaGVja2luZ1Jlc3VsdC5hcHBl
bmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBHZW5lcmFsbHksIHdlIGVuZCB1
cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUgdG8gdGhlIGFkamFjZW50IHdv
cmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5k
ZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4NjhkYzQ4ODMwYWZmZGM0NzFmZS4uZjAwN2YyZjI0ZmZi
ZDk3YmVlZmFiYjE4YTA5MmE3N2ExODMzNGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpAQCAtMjEyLDggKzIxMiw3IEBAIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERv
Y3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgcmVz
dWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQu
bGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsKKyAgICAgICAgcmVzdWx0LnJhbmdlID0g
bWlzc3BlbGxlZFJhbmdlOwogICAgICAgICByZXN1bHRzLmFwcGVuZChXVEZNb3ZlKHJlc3VsdCkp
OwogCiAgICAgICAgIG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uICsgbWlz
c3BlbGxlZFJhbmdlLmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0
Q2hlY2tlck1hYy5tbQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNhMGQ0MTRhYjRmZmI4NGVl
NjM0Li4wZDE5ZTRiZTUxOGY5YmQ4YTJkOTRhOTUzMjMwMDk3YTVjNmVjZjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC0zMzQsMjIgKzMz
NCwyMCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnRob2dyYXBoeTpO
VUxMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZvciAoTlNUZXh0Q2hlY2tp
bmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBO
U1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNU
ZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07
Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAg
ICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5j
b21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VS
VChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRS
YW5nZSA9IGluY29taW5nUmVzdWx0LnJhbmdlOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3Bl
bGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlv
bjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRD
aGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5n
VHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJE
ZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9u
OwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAg
ICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgZm9yIChOU0Rp
Y3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0
YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRD
aGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAg
ICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJh
bmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9u
ICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxl
bmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFu
Z2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFu
Z2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9IGRldGFpbE5TUmFuZ2U7
CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFp
bCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAg
ICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1t
YXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4g
Z3Vlc3NlcykKQEAgLTM3MCwzNiArMzY3LDMxIEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYm
IGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24g
PSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1
bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsK
ICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBh
YnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYg
Y2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7
CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hl
Y2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAg
ICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
VGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50
U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBj
aGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewog
ICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSBy
ZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jl
c3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1
bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBl
Q29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNv
cnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAg
ICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAg
ICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQg
PSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtNDQzLDE3ICs0MzUsMjAgQEAgdm9pZCBU
ZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChTcGVsbERvY3Vt
ZW50VGFnLCBjb25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdp
dGhHcmFtbWFyU3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1h
clBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0
YWlsLmd1ZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3Jh
bW1hckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1
ZXNzXTsKKyAgICBhdXRvIGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1tYXJEZXRhaWwuZ3Vlc3Nl
cykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1ZXNzOworICAgICAgICBb
Y29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAgIH0KIAotICAgIE5TUmFu
Z2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3Jh
bW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5nICpncmFtbWFyVXNlckRlc2NyaXB0aW9u
ID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gZ3JhbW1hckRldGFpbERpY3QgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5n
ZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2Vy
RGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLmdldCgpLCBOU0dyYW1tYXJDb3JyZWN0aW9ucywgbmls
XSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBncmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbjsKKyAgICBOU0RpY3Rpb25hcnkgKmRldGFpbCA9IEB7CisgICAgICAgIE5T
R3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5n
ZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJp
bmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMuZ2V0KCksCisg
ICAgfTsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVT
cGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3Jh
bW1hckRldGFpbERpY3QuZ2V0KCldOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBo
cmFzZSBkZXRhaWw6ZGV0YWlsXTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tlcjo6Z2V0R3Vlc3Nlc0Zv
cldvcmQoU3BlbGxEb2N1bWVudFRhZyBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCwgVmVjdG9y
PFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKaW5kZXggOWNlNWRiYWMxMTRhNDk1ZmVhNGE5ZTk1M2Q5YmZmYzgx
ZWJkNzZjZC4uMjkyZGRiOTA3MWY0Mjg2ZWQzNzE1MWY3OGM2NTQ4NjQ4NmQ0MmQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6
R3JhbQogICAgICpiYWRHcmFtbWFyTGVuZ3RoID0gcmVzdWx0TGVuZ3RoOwogfQogCi1zdGF0aWMg
Q2hhcmFjdGVyQ291bnQgaW5zZXJ0aW9uUG9pbnRGcm9tQ3VycmVudFNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQorc3RhdGljIHVpbnQ2NF90IGluc2Vy
dGlvblBvaW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3Vy
cmVudFNlbGVjdGlvbikKIHsKICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gY3VycmVudFNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0Qm91bmRhcnkgPSBt
YWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb25TdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHkubW0KaW5kZXggZjE4Y2FhNzJjYmQ5NjUzMTc1NWU5MmVjZmIyMGVmNGRi
OGNhNTNhZi4uNjU5ZDVhZmYzMWQzOTEzZWY0ODE0YjJhNjIxMGExZWI3ODZjNWQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtNzMsMTIgKzczLDE1IEBA
IHN0YXRpYyBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IHJlbGV2YW50TWFy
a2VyVHlwZXMoKQogT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFu
ZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJlbGF0
aXZlVG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBG
cmFtZSYgZnJhbWUgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgY29uc3QgRnJhbWVTZWxlY3Rpb24mIGZyYW1lU2VsZWN0aW9u
ID0gZnJhbWUuc2VsZWN0aW9uKCk7Ci0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCk7CisgICAgYXV0byYgZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZVNlbGVj
dGlvbi5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0byByb290ID0gZnJhbWVTZWxlY3Rpb24ucm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFyb290KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgYXV0byByYW5nZSA9IHNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIHJhbmdlLT5jb2xsYXBzZSh0cnVlKTsKIApAQCAtODcs
NyArOTAsNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5k
T2Zmc2V0PiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogICAgIFRleHRJdGVyYXRvcjo6Z2V0
TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9vdCwgcmFuZ2UuZ2V0KCksIHNlbGVjdGlvbkxv
Y2F0aW9uLCBzZWxlY3Rpb25MZW5ndGgpOwogICAgIHNlbGVjdGlvbkxvY2F0aW9uICs9IG9mZnNl
dDsKIAotICAgIHJldHVybiB7eyBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uLCBsZW5ndGgpLCBzZWxlY3Rpb25Mb2NhdGlvbiB9
fTsKKyAgICByZXR1cm4geyB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgeyBzZWxlY3Rpb25Mb2NhdGlv
biwgbGVuZ3RoIH0pKSwgc2VsZWN0aW9uTG9jYXRpb24gfSB9OwogfQogCiB2b2lkIFRleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oQXR0cmlidXRl
ZFN0cmluZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRf
dCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3Qg
cmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTk1LDYgKzk4LDggQEAgdm9pZCBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJpYnV0
ZWRTdHJpbmcgYW4KICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgRnJhbWVTZWxlY3Rpb24mIGZy
YW1lU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCk7CiAgICAgYXV0byByb290ID0gZnJhbWVT
ZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFyb290KQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJhbmdlQW5kT2Zmc2V0ID0gcmFu
Z2VBbmRPZmZzZXRSZWxhdGl2ZVRvU2VsZWN0aW9uKHNlbGVjdGlvbk9mZnNldCwgbGVuZ3RoKTsK
ICAgICBpZiAoIXJhbmdlQW5kT2Zmc2V0KQpAQCAtMTEzLDM1ICsxMTgsMzYgQEAgdm9pZCBUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKEF0dHJp
YnV0ZWRTdHJpbmcgYW4KICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJhbmdl
QW5kT2Zmc2V0T2ZSZXBsYWNlbWVudC0+cmFuZ2U7CiAgICAgICAgICAgICBpZiAocmVwbGFjZW1l
bnRSYW5nZSkgewogICAgICAgICAgICAgICAgIGJvb2wgcmVzdG9yZVNlbGVjdGlvbiA9IGZyYW1l
U2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzUmFuZ2UoKTsKKwogICAgICAgICAgICAgICAgIGZyYW1l
LmVkaXRvcigpLnJlcGxhY2VSYW5nZUZvclNwZWxsQ2hlY2tpbmcoKnJlcGxhY2VtZW50UmFuZ2Us
IFtbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBzdHJpbmddIHN1YnN0cmluZ1dpdGhSYW5nZTpOU01h
a2VSYW5nZShyZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHJlbGF0aXZlUmVwbGFjZW1lbnRM
ZW5ndGggKyBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdIC0gbGVuZ3RoKV0pOwogCi0g
ICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID0gbG9jYXRp
b25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVT
ZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBsb2NhdGlvbkluUm9vdCAr
IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jlc3RvcmUgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9u
VG9SZXN0b3JlLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRv
KHNlbGVjdGlvblRvUmVzdG9yZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVT
ZWxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2VsZWN0aW9uTG9jYXRp
b25Ub1Jlc3RvcmUgPSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9mZnNldDsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlID4gbG9jYXRpb25JblJv
b3QgKyByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24gKyByZWxhdGl2ZVJlcGxhY2VtZW50TGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblRvUmVzdG9yZSA9
IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCpyb290KSwgeyBzZWxlY3Rpb25Mb2NhdGlvblRvUmVzdG9yZSwgMCB9KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oc2VsZWN0aW9u
VG9SZXN0b3JlLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIFthbm5vdGF0ZWRTdHJp
bmcuc3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIFthbm5v
dGF0ZWRTdHJpbmcuc3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0
aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0tleSwgaWQ+ICphdHRycywgTlNSYW5nZSBhdHRyaWJ1
dGVSYW5nZSwgQk9PTCAqc3RvcCkgewotICAgICAgICBhdXRvIGF0dHJpYnV0ZUNvcmVSYW5nZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdCwgbG9jYXRpb25J
blJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoKTsK
LSAgICAgICAgaWYgKCFhdHRyaWJ1dGVDb3JlUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIHsgbG9jYXRpb25JblJvb3QgKyBh
dHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVuZ3RoIH0pOwogCiAgICAg
ICAgIFthdHRycyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU0F0dHJpYnV0
ZWRTdHJpbmdLZXkga2V5LCBpZCB2YWx1ZSwgQk9PTCAqc3RvcCkgewogICAgICAgICAgICAgaWYg
KCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtYXJrZXJzLmFkZFBsYXRmb3JtVGV4dENoZWNraW5nTWFy
a2VyKCphdHRyaWJ1dGVDb3JlUmFuZ2UsIGtleSwgKE5TU3RyaW5nICopdmFsdWUpOworICAgICAg
ICAgICAgbWFya2Vycy5hZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtlcihhdHRyaWJ1dGVDb3Jl
UmFuZ2UsIGtleSwgKE5TU3RyaW5nICopdmFsdWUpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTog
U3dpdGNoIHRvIGNvbnN0YW50cyBhZnRlciByZGFyOi8vcHJvYmxlbS80ODkxNDE1MyBpcyByZXNv
bHZlZC4KICAgICAgICAgICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAIk5TU3BlbGxpbmdT
dGF0ZSJdKSB7CiAgICAgICAgICAgICAgICAgTlNTcGVsbGluZ1N0YXRlIHNwZWxsaW5nU3RhdGUg
PSAoTlNTcGVsbGluZ1N0YXRlKVt2YWx1ZSBpbnRlZ2VyVmFsdWVdOwogICAgICAgICAgICAgICAg
IGlmIChzcGVsbGluZ1N0YXRlICYgTlNTcGVsbGluZ1N0YXRlU3BlbGxpbmdGbGFnKQotICAgICAg
ICAgICAgICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcigqYXR0cmlidXRlQ29yZVJhbmdlLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmFkZE1h
cmtlcihhdHRyaWJ1dGVDb3JlUmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAgICAg
ICAgICAgICAgICAgaWYgKHNwZWxsaW5nU3RhdGUgJiBOU1NwZWxsaW5nU3RhdGVHcmFtbWFyRmxh
ZykgewogICAgICAgICAgICAgICAgICAgICBOU1N0cmluZyAqdXNlckRlc2NyaXB0aW9uID0gW2F0
dHJzIG9iamVjdEZvcktleTpAIk5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiJdOwotICAgICAgICAg
ICAgICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcigqYXR0cmlidXRlQ29yZVJhbmdlLCBEb2N1bWVu
dE1hcmtlcjo6R3JhbW1hciwgdXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya2Vycy5hZGRNYXJrZXIoYXR0cmlidXRlQ29yZVJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3Jh
bW1hciwgdXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH1dOwpAQCAtMTk5LDExICsyMDUsMTEgQEAgQXR0cmlidXRlZFN0cmluZyBUZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlv
bnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYgdGV4dENo
ZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2lu
Z0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50VGV4dFJhbmdlKSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0gbWFya2VyLT5zdGFydE9m
ZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoY3VycmVudFRleHRSYW5nZSwgeyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5k
T2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgfSk7CiAKICAgICAgICAgICAgIHNpemVf
dCBzdWJyYW5nZUxvY2F0aW9uOwogICAgICAgICAgICAgc2l6ZV90IHN1YnJhbmdlTGVuZ3RoOwot
ICAgICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShj
b21tb25BbmNlc3Rvci5nZXQoKSwgJnN1YnJhbmdlLmdldCgpLCBzdWJyYW5nZUxvY2F0aW9uLCBz
dWJyYW5nZUxlbmd0aCk7CisgICAgICAgICAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5k
TGVuZ3RoRnJvbVJhbmdlKGNvbW1vbkFuY2VzdG9yLmdldCgpLCBjcmVhdGVMaXZlUmFuZ2Uoc3Vi
cmFuZ2UpLnB0cigpLCBzdWJyYW5nZUxvY2F0aW9uLCBzdWJyYW5nZUxlbmd0aCk7CiAKICAgICAg
ICAgICAgIEFTU0VSVChzdWJyYW5nZUxvY2F0aW9uID4gZW50aXJlUmFuZ2VMb2NhdGlvbik7CiAg
ICAgICAgICAgICBBU1NFUlQoc3VicmFuZ2VMb2NhdGlvbiArIHN1YnJhbmdlTGVuZ3RoIDwgZW50
aXJlUmFuZ2VMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkMmIzYTE0YjU5YTRlNzg4NDI3Y2Y5MTRiN2IyMzJkYTEwYzI4MDVhLi4x
ZWEzMWRiZjgwNzgyNDEyZjIzMWVmYzg5ZGM0MjMzZTRhYzExMDNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQyMCwyMCArNTQyMCwyMSBA
QCB2b2lkIFdlYlBhZ2U6OmRlbGV0ZVN1cnJvdW5kaW5nKGludDY0X3Qgb2Zmc2V0LCB1bnNpZ25l
ZCBjaGFyYWN0ZXJDb3VudCkKICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSB0YXJnZXRGcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgYXV0byYgc2VsZWN0aW9uID0gdGFyZ2V0RnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCk7CiAgICAgYXV0byBzdXJyb3VuZGluZ1JhbmdlID0gbWFrZVJhbmdlKHN0
YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3RhcnQpLCBzZWxlY3Rpb25TdGFydCk7Ci0g
ICAgYXV0byBjdXJzb3JQb3NpdGlvbiA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KCpzdXJyb3Vu
ZGluZ1JhbmdlKTsKLSAgICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5kaW5nUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBhdXRvIHNlbGVjdGlvblJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCgmcm9vdE5vZGUs
IGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7Ci0gICAgaWYgKCFzZWxl
Y3Rpb25SYW5nZSkKKyAgICBpZiAoIXN1cnJvdW5kaW5nUmFuZ2UpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+c3RhcnRDb250YWluZXIo
KS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIGF1dG8gY2hhcmFjdGVyUmFuZ2UgPSBXZWJD
b3JlOjpDaGFyYWN0ZXJSYW5nZShXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCgqc3Vycm91bmRpbmdS
YW5nZSkgKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICBhdXRvIHNlbGVjdGlvblJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhy
b290Tm9kZSksIGNoYXJhY3RlclJhbmdlKTsKKwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5z
ZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqc2VsZWN0aW9uUmFuZ2UsIFNFTF9E
RUZBVUxUX0FGRklOSVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklU
WSkpOwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnRE
ZWxldGUoZmFsc2UpOwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rp
b25DaGFuZ2VzKGZhbHNlKTsKICAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
YTg3ZGJlZjU0NzIwNzE1MTc1Y2U3MjU2NGM2YThmNWFhYzE0MWM3Yi4uYWRjZWE4YzdkZTYzYjNj
NjdhYjQxZTkzMTEyMDYyNzJkZWU0ZDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2MywxMiArMjYzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCkgY29uc3QKICAgICAvLyB0byBhdm9pZCB0aGUgbmVlZCB0byBmb3JjZSBhIHN5
bmNocm9ub3VzIGxheW91dCBoZXJlIHRvIGNvbXB1dGUgdGhlc2UgZW50cmllcy4gSWYgd2UKICAg
ICAvLyBoYXZlIGEgY29tcG9zaXRpb24gb3IgYXJlIHVzaW5nIGEgaGFyZHdhcmUga2V5Ym9hcmQg
dGhlbiB3ZSBzZW5kIHRoZSBmdWxsIGVkaXRvciBzdGF0ZQogICAgIC8vIGltbWVkaWF0ZWx5IHNv
IHRoYXQgdGhlIFVJUHJvY2VzcyBjYW4gdXBkYXRlIFVJLCBpbmNsdWRpbmcgdGhlIHBvc2l0aW9u
IG9mIHRoZSBjYXJldC4KLSAgICBib29sIG5lZWRzTGF5b3V0ID0gdmlldy0+bmVlZHNMYXlvdXQo
KTsKLSAgICBib29sIHJlcXVpcmVzUG9zdExheW91dERhdGEgPSBmcmFtZS5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICByZXF1aXJlc1Bv
c3RMYXlvdXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOwotI2VuZGlmCi0gICAgaWYgKG5l
ZWRzTGF5b3V0IHx8IHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKKyAgICBpZiAodmll
dy0+bmVlZHNMYXlvdXQoKSB8fCByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlv
dXREYXRhKCk7CkBAIC00MDc2LDggKzQwNzEsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1NlbGVjdGlvbkxvY2F0aW9u
LnVuc2FmZUdldCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0KCkpKQotICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgRE9XTlNUUkVB
TSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJU
cmlnZ2VyZWQpOworICAgIGF1dG8gbmV3U2VsZWN0aW9uUmFuZ2UgPSBDaGFyYWN0ZXJSYW5nZShu
ZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0aW9uTGVuZ3RoLnVuc2Fm
ZUdldCgpKTsKKyAgICBhdXRvIHJlc29sdmVkUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgbmV3U2VsZWN0aW9uUmFuZ2Up
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlZFJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KQEAgLTQxOTIsMTYgKzQxODgsMTUgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCByZXF1ZXMKICAgICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3RDb250YWluZXJOb2Rl
ID0gcm9vdE5vZGUtPmlzQ29udGFpbmVyTm9kZSgpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4o
cm9vdE5vZGUuZ2V0KCkpIDogcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgVGV4dEl0
ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290Q29udGFpbmVyTm9kZS5n
ZXQoKSwgcmFuZ2VPZkludGVyZXN0LmdldCgpLCByYW5nZU9mSW50ZXJlc3RMb2NhdGlvbiwgcmFu
Z2VPZkludGVyZXN0TGVuZ3RoKTsKIAotICAgICAgICBDaGVja2VkU2l6ZSBtaWRwb2ludExvY2F0
aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKKyAgICAgICAgQ2hlY2tlZDx1aW50NjRf
dCwgUmVjb3JkT3ZlcmZsb3c+IG1pZHBvaW50TG9jYXRpb24geyByYW5nZU9mSW50ZXJlc3RMb2Nh
dGlvbiB9OwogICAgICAgICBtaWRwb2ludExvY2F0aW9uICs9IHJhbmdlT2ZJbnRlcmVzdExlbmd0
aCAvIDI7CiAgICAgICAgIGlmIChtaWRwb2ludExvY2F0aW9uLmhhc092ZXJmbG93ZWQoKSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWlkcG9pbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdENvbnRhaW5lck5vZGUuZ2V0KCksIG1pZHBv
aW50TG9jYXRpb24udW5zYWZlR2V0KCksIDApOworICAgICAgICBhdXRvIG1pZHBvaW50ID0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3RDb250YWluZXJOb2RlKSwgbWlkcG9pbnRMb2Nh
dGlvbi51bnNhZmVHZXQoKSkpOwogCi0gICAgICAgIGF1dG8gbWlkcG9pbnQgPSBtaWRwb2ludFJh
bmdlLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNl
bGVjdGlvbiA9IHN0YXJ0T2ZXb3JkKG1pZHBvaW50KTsKICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA8IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0KSB7CiAgICAgICAg
ICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBlbmRPZldvcmQobWlkcG9p
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGNhNDc5MzEwNTRiODAyNjI2ODczZTNmNTNmYjVl
ZTMwNTRlOTg1MTMuLjY5MmVlMDc4MDYyNDE2MTJiOGRmOGI1YmE3MjFlNTRjNDliYmI4MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KQEAgLTg2NSwxMiArODY1LDExIEBAIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmll
dyBzdHJpCiAKICAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW21fd2ViVmlldyBfVUlL
aXREZWxlZ2F0ZUZvcndhcmRlcl0gY2hlY2tTcGVsbGluZ09mU3RyaW5nOnN0cmluZy5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldOwogICAgIGZvciAoTlNWYWx1ZSAqaW5jb21p
bmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFu
Z2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRS
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwor
ICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJhbmdlVmFsdWUubGVuZ3Ro
ID4gMCk7CiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSBpbmNvbWluZ1Jlc3VsdC5y
YW5nZVZhbHVlOwogICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgIH0KIApAQCAt
OTM5LDExICs5MzgsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogICAgICAgICBHcmFtbWFy
RGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgICAgIE5TVmFsdWUgKmRldGFpbFJhbmdlQXNOU1Zh
bHVlID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyUmFuZ2VdOwogICAgICAgICBBU1NF
UlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUpOwotICAgICAgICBOU1JhbmdlIGRldGFpbE5TUmFuZ2Ug
PSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07Ci0gICAgICAgIEFTU0VSVChkZXRh
aWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAgICBBU1NFUlQoZGV0YWls
TlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGRl
dGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIGdyYW1tYXJEZXRhaWwubGVuZ3RoID0gZGV0
YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgIEFTU0VSVChkZXRhaWxSYW5nZUFzTlNWYWx1ZS5y
YW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAgICBBU1NFUlQoZGV0YWls
UmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKKyAgICAgICAgZ3JhbW1hckRl
dGFpbC5yYW5nZSA9IGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFsdWU7CiAgICAgICAgIGdy
YW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFt
bWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgTlNBcnJheSAqZ3Vlc3NlcyA9IFtkZXRhaWwg
b2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAgICAgZm9yIChOU1N0cmlu
ZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk1NywyMiArOTU0LDIwIEBAIHN0YXRpYyBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9u
U2V0PFRleHRDCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKIAogICAg
IGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVz
dWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJh
bmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdS
ZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOwor
ICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAg
ICAgICAgYXV0byByZXN1bHRSYW5nZSA9IGluY29taW5nUmVzdWx0LnJhbmdlOwogICAgICAgICBp
ZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAg
VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRS
YW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVj
a2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29t
aW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJl
c3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJh
bmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAg
ICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAg
IEdyYW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtOTgxLDggKzk3Niw3IEBAIHN0YXRpYyBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgT3B0aW9u
U2V0PFRleHRDCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFp
bFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRh
aWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2Nh
dGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxl
bmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5n
ZSA9IGRldGFpbE5TUmFuZ2U7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlv
biA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9u
XTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9i
amVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk5MywzNiArOTg3LDMxIEBAIHN0YXRpYyBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywg
T3B0aW9uU2V0PFRleHRDCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRD
aGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAg
ICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAg
ICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJl
c3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFu
Z2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5j
b21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hl
Y2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBl
OjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAg
ICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAg
ICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJh
bmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5j
b21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNr
aW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpE
YXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAg
ICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0
Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9
IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5n
UmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJl
c3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5
cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsK
ICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7
Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAg
ICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNl
bWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0g
TlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2Uu
bG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3Ro
OworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICBy
ZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTA0OSwx
NiArMTAzOCwxOCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBXZWJFZGl0b3JDbGllbnQ6
OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYgYmFk
R3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAg
ICBOU011dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2Vz
W2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBOU011dGFi
bGVBcnJheSAqY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAo
YXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAgICAgICAgTlNTdHJpbmcg
Kmd1ZXNzTlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpn
dWVzc05TU3RyaW5nXTsKICAgICB9Ci0gICAgTlNSYW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VS
YW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLmxlbmd0aCk7Ci0gICAg
TlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNj
cmlwdGlvbjsKLSAgICBOU0RpY3Rpb25hcnkqIGdyYW1tYXJEZXRhaWxEaWN0ID0gW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdl
OmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9uLCBO
U0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLCBOU0dyYW1tYXJDb3JyZWN0aW9u
cywgbmlsXTsKLSAgICAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0g
dXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0
YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25OU1N0cmlu
ZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlw
dGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25z
IDogY29ycmVjdGlvbnMsCisgICAgfTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxs
Q2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1tYXJQ
aHJhc2UgZGV0YWlsOmRpY3Rpb25hcnldOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRX
b3JkKQpAQCAtMTE5NCw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0IGEKICAgICBp
ZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgewogICAgICAgICB1
bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50
Lmxlbmd0aCgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7Ci0gICAgICAg
ICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0
ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAgICAgTlNSYW5nZSByZXBs
YWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUucmFuZ2UubG9jYXRpb24s
IHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ugc29mdFNwYWNlUmFuZ2Ug
PSBOU01ha2VSYW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0gMSwgMSk7CiAgICAgICAg
ICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoIiAiKSkKICAg
ICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFuZ2U6c29m
dFNwYWNlUmFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggZWQ1ZWQyMDQwMjk1NTc4ZWJlOTllYjgwNzc0MmQ3ZTA2YjA0OWUzMC4uZmU2NmQx
YjU0Zjc1ZDdmZGM5ZjU2OGQyMmNkNDllZmZkNGRjOTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MTksMTIgKzgxOSwxMCBAQCAtIChSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCiAg
ICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpuc3JhbmdlIHJhbmdlSXNSZWxhdGl2
ZVRvOldlYlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3RdOwogfQogCi0tIChSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlIHJhbmdl
SXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbworLSAo
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ug
cmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRv
CiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQorICAgIGlmIChyYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAo
bnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxl
bmd0aCA+IElOVF9NQVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFu
Z2UubG9jYXRpb247CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1Jl
bGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIgY3JpdGljYWwgYXNzdW1w
dGlvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhv
ZHMgdGhhdApAQCAtODM2LDcgKzgzNCw3IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2Nv
bnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAg
ICAgIGF1dG8qIGVsZW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVsZW1lbnQsIG5zcmFuZ2Uu
bG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5n
ZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpl
bGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFuZ2VJc1JlbGF0aXZlVG8g
PT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC04NDQsMTAgKzg0Miw5IEBA
IC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5z
cmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VC
b3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0
YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiByb290Tm9kZSA9IHBhcmFn
cmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CiAKLSAgICBhdXRv
IHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpjaGFyYWN0ZXJDb3VudCh7IHsgcm9vdE5v
ZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0pOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9kZSwgcGFyYWdyYXBoU3Rh
cnRJbmRleCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBhdXRvIHNj
b3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5j
b250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAgICByZXR1cm4gY3JlYXRl
TGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBhcmFn
cmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsKIH0KIAogLSAoRE9NUmFu
Z2UgKilfY29udmVydE5TUmFuZ2VUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZGRmMjNlY2YzY2JhNWI5
YmM5ZWE5ZjI2ZWVkY2YwMzc5OTU2ODhjLi5jMzU5NTIxYzZkZGM3N2Y2NmExMzU2Y2FhMTkxZjY1
ODcwM2VmZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC03Mjc4LDEyICs3Mjc4LDkgQEAgY29uc3RleHByIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeXBlIHR5cGUKIAogc3RhdGlj
IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRGcm9tTlNUZXh0
Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQogewotICAgIE5T
UmFuZ2UgcmVzdWx0UmFuZ2UgPSBuc1Jlc3VsdC5yYW5nZTsKLQogICAgIFdlYkNvcmU6OlRleHRD
aGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBjb3JlVGV4dENoZWNraW5n
VHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRS
YW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwor
ICAgIHJlc3VsdC5yYW5nZSA9IG5zUmVzdWx0LnJhbmdlOwogICAgIHJlc3VsdC5yZXBsYWNlbWVu
dCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCA4ZGYxYzcyMWJiNjhmNmUwMTAxN2U2NTUyNGM5M2MwZGZl
ZTI4ODQ2Li5lZmVkYTQ0YTk4MTk4MDk1ZDAxN2EwOTBiZmM3YWE3ZTg3MjhkZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTc5MCwxNCArNzkwLDE4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0
YWlsCiAgICAgICAgIGlmIChlbnVtRGV0YWlsc09iai0+TmV4dCgxLCAmZGV0YWlsT2JqLCAmZmV0
Y2hlZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEdyYW1tYXJEZXRh
aWwgZGV0YWlsOwotICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+bGVuZ3RoKCZkZXRhaWwu
bGVuZ3RoKSkpCisgICAgICAgIGludCBsZW5ndGg7CisgICAgICAgIGlmIChGQUlMRUQoZGV0YWls
T2JqLT5sZW5ndGgoJmxlbmd0aCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
IChGQUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmZGV0YWlsLmxvY2F0aW9uKSkpCisgICAgICAg
IGludCBsb2NhdGlvbjsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmxvY2F0aW9uKCZs
b2NhdGlvbikpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEJTdHJpbmcgdXNlckRl
c2M7CiAgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT51c2VyRGVzY3JpcHRpb24oJnVzZXJE
ZXNjKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHcmFtbWFyRGV0YWlsIGRl
dGFpbDsKKyAgICAgICAgZGV0YWlsLnJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxl
bmd0aCk7CiAgICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBTdHJpbmcodXNlckRlc2Ms
IFN5c1N0cmluZ0xlbih1c2VyRGVzYykpOwogCiAgICAgICAgIENPTVB0cjxJRW51bVNwZWxsaW5n
R3Vlc3Nlcz4gZW51bUd1ZXNzZXNPYmo7CkBAIC04MjYsNyArODMwLDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgY28KICAgICAgICAgZ3Vlc3Nlc0JTVFJzLmFwcGVuZChndWVzcy5yZWxlYXNlKCkp
OwogICAgIH0KICAgICBCU3RyaW5nIHVzZXJEZXNjcmlwdGlvbkJTVFIoZGV0YWlsLnVzZXJEZXNj
cmlwdGlvbik7Ci0gICAgZWQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhCU3Ry
aW5nKHN0cmluZyksIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCwgdXNlckRlc2NyaXB0
aW9uQlNUUiwgZ3Vlc3Nlc0JTVFJzLmRhdGEoKSwgKGludClndWVzc2VzQlNUUnMuc2l6ZSgpKTsK
KyAgICBlZC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKEJTdHJpbmcoc3RyaW5n
KSwgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoLCB1c2VyRGVzY3Jp
cHRpb25CU1RSLCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNzZXNCU1RScy5zaXplKCkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBndWVzc2VzQlNUUnMuc2l6ZSgpOyBpKysp
CiAgICAgICAgIFN5c0ZyZWVTdHJpbmcoZ3Vlc3Nlc0JTVFJzW2ldKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKaW5kZXggZDcwNTNlYzMyMDRjYWFlZTBlNDlhODFlMTViZTExMjgz
NDk4Y2RjNC4uNGYyMzI0Nzc3NTg5MjY3NTBkZjVlMDIxNDBmMjBlYTk3MTljMjI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTc3NjEsMjMgKzc3NjEsMTkgQEAgSFJFU1VM
VCBXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoVUlOVCBsb2Nh
dGlvbiwgVUlOVCBsZW5ndGgKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIEludFJlY3QgcmVzdWx0SW50UmVjdDsKLSAgICByZXN1bHRJbnRSZWN0LnNldExv
Y2F0aW9uKEludFBvaW50KDAsIDApKTsKLSAgICByZXN1bHRJbnRSZWN0LnNldFNpemUoSW50U2l6
ZSgwLCAwKSk7Ci0gICAgCi0gICAgaWYgKGxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBhdXRvJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Cisg
ICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRP
ckRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKLSAgICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCBsb2NhdGlvbiArIGxlbmd0aCA+IElO
VF9NQVgpCi0gICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSBsb2NhdGlvbjsKLSAgICAgICAgCi0g
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50
T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisKKyAgICBhdXRvIGNoYXJh
Y3RlclJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgY2hhcmFjdGVyUmFuZ2UpKTsK
IAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgIAorCiAgICAg
SW50UmVjdCByZWN0ID0gZnJhbWUuZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpOwotICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
cmVjdCk7CisgICAgSW50UmVjdCByZXN1bHRJbnRSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50
c1RvV2luZG93KHJlY3QpOwogCiAgICAgcmVzdWx0SW50UmVjdC5zY2FsZShkZXZpY2VTY2FsZUZh
Y3RvcigpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQ4MTgwMTZjZTQ3NmQ2ZTc3ODljNmEwZGVjYjFkYzczMmUzNTRk
MTEuLmZmYzZjYmRmZjlkNTQwZmE2YmQ0MWU1NDEzOGUzNDYwMWY5YjkxOTggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wMy0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9m
ZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgRml4IE1hYy1zcGVjaWZpYyBmaXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3
OTkwNzE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1j
cmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtl
ci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sOgorICAgICAgICBVcGRhdGVkIHRv
IGV4cGVjdCB0ZXh0TWFya2VyRm9ySW5kZXggdG8gY2xhbXAgcmF0aGVyIHRoYW4gcmV0dXJuaW5n
IHNvbWV0aGluZyBpbnZhbGlkLgorCisgICAgICAgICogZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRp
bmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWw6CisgICAg
ICAgIFVwZGF0ZWQgdGVzdCBvdXRwdXQgdG8gaW5jbHVkZSB3aGF0IGlzIGJlaW5nIHRlc3RlZCwg
bm90IGp1c3QgdGhlIHRlc3QgcmVzdWx0LgorICAgICAgICBVcGRhdGVkIHRlc3QgcmVzdWx0cyB0
byBleHBlY3QgY2xhbXBpbmcgcmF0aGVyIHRoYW4gYW4gZW1wdHkgcmVjdGFuZ2xlLCBmb3IgdmFs
dWVzCisgICAgICAgIHRoYXQgYXJlIG91dCBvZiBib3VuZHMuIEFsc28gZ290IHJpZCBvZiBkdW1w
aW5nIG9mIGVpZHRpbmcgY2FsbGJhY2tzIHNpbmNlIHRoZXJlIGlzCisgICAgICAgIG5vIHJlYXNv
biB0byBpbmNsdWRlIHRoZW0gaW4gdGhpcyB0ZXN0LgorCisgICAgICAgICogZWRpdGluZy9tYWMv
aW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbDoKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnM6IFNpbmNlIG91ciBvbGRlc3Qgc3VwcG9ydGVkIHJlbGVhc2UgaXMgTW9q
YXZlLCBkZWxldGVkCisgICAgICAgIGFsbCBydWxlcyB3aXRoIFNpZXJyYSBvciBIaWdoU2llcnJh
IGNvbmRpdGlvbmFscyBzaW5jZSB0aG9zZSBjb25kaXRpb25zIGFyZSBhbHdheXMgZmFsc2UsCisg
ICAgICAgIGFuZCByZW1vdmVkIGFueSBjb25kaXRpb25hbHMgdGhhdCBzYWlkIFNpZXJyYSssIEhp
Z2hTaWVycmErLCBvciBNb2phdmUrIGJlY2F1c2UgdGhvc2UKKyAgICAgICAgY29uZGl0aW9ucyBh
cmUgYWx3YXlzIHRydWUuIE9uZSB0ZXN0LCBmaXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHls
ZWQuaHRtbCwgaGFkIHJlc3VsdHMKKyAgICAgICAgY2hlY2tlZCBpbiB0aGF0IHdlcmUgY29ycmVj
dCBmb3IgTW9qYXZlIGJ1dCBpbmNvcnJlY3QgZm9yIENhdGFsaW5hLiBGb3IgdGhhdCB0ZXN0LCB0
aGUKKyAgICAgICAgcmVzdWx0cyBhcmUgbm93IGNvcnJlY3QgZm9yIENhdGFsaW5hLCBzbyB1cGRh
dGVkIGV4cGVjdGF0aW9ucyBmb3IgdGhhdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9uczogRGl0dG8uIEFsc28gc29tZSB0ZXN0cyB0aGF0IGNsYWltZWQgSW1h
Z2VPbmx5RmFpbHVyZQorICAgICAgICBhcmUgZmxha3kgYW5kIHNvbWV0aW1lcyBwYXNzaW5nLCBz
byBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgSW1hZ2VPbmx5RmFpbHVyZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4gQWxzbyBzb21lIHRl
c3RzIG1hcmtlZCBGYWlsdXJlIHdlcmUgZmxha3kgYW5kCisgICAgICAgIHNvbWV0aW1lcyBwYXNz
aW5nLCBzbyBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgRmFpbHVyZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICBUaGlzIGlzIGFscmVh
ZHkgYSBNYWMtc3BlY2lmaWMgdGVzdDsgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGhhdmUgYW4g
YWRkaXRpb25hbAorICAgICAgICBNYWMtc3BlY2lmaWMgb3ZlcnJpZGRlbiByZXN1bHQgc2luY2Ug
dGhlIGJhc2UgcmVzdWx0IGlzIGFscmVhZHkgTWFjLXNwZWNpZmljLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVk
LXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sOgorICAgICAgICBVcGRhdGVkIHRoaXMgdGVz
dCB0byBleHBlY3QgdGhlIGVtcHR5IHN0cmluZywgbm90ICJ1bmRlZmluZWQiIGZvciBhbiBvdXQg
b2YgcmFuZ2UsCisgICAgICAgIHNpbmNlIHdlIG5vdyBjbGFtcCBpbnN0ZWFkIG9mIGZhaWxpbmcg
aW4gc3VjaCBjYXNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWw6Cisg
ICAgICAgIERpdHRvLgorCiAyMDIwLTAzLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbjogZmFzdC9oaWRwaS9pbWFnZS1z
cmNzZXQtc3ZnLWNhbnZhcy0yeC5odG1sIGlzIGZhaWxpbmcgY29uc2lzdGVudGx5IG9uIGlPUyBF
V1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXIt
Zm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFz
aC1leHBlY3RlZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGExNjA3YjljNTg3MmVmZTFk
ZTcyYy4uMjM0ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFhMGYxNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0
LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQKLVRoaXMgdmVyaWZpZXMg
dGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4
IG91dCBvZiBib3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9y
IG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiAyXjMxCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0
ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZhbHNlCitQQVNTIGl0ZW0x
LmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkp
IGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1m
b3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sCmlu
ZGV4IDBhYjJmMTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcyYTEuLjZhYzdmOWY2NzJj
YjY4NTE1ZTA3YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLWZvci1p
bmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsxNCwxMiBAQCB0ZXh0CiAK
IDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB0aGF0IHRleHRNYXJr
ZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5kZXggb3V0IG9mIGJvdW5k
cyIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQgdGV4dE1hcmtlckZvcklu
ZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVhdGVyIHRoYW4gMl4zMSIp
OwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAgICAgICB2YXIgaXRl
bTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgc2hv
dWxkQmVGYWxzZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvcklu
ZGV4KDk5OTk5OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaXRlbTEu
aXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSki
KTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Ut
cGxhaW4tZXhwZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdlM2QzY2M2NDQ5NzQzYmRi
NTZlMDM5YTIuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlkMzQ2NmIzYmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9p
bnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBlY3RlZC50eHQKQEAgLTEs
MjAgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2YgQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRp
bmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4
LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIs
OCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwxOAotMTgsNTcyLDQw
LDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJldCBhdCB0aGUgYmVn
aW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJh
Y3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYs
MCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMTAwKSwgKDU4
LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4LDE4KQorbGFzdCBj
aGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3RlcjogKDUsMiksICg1
MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcyLDgsMTgpCitmaXJz
dCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcy
LDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIsNDgsMTgpCitmaXJz
dCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2NzI5NSksICgxOCw1
NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgs
NTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAo
NTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAo
NTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5
NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRt
bAppbmRleCA3OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIyNmQ2MGRlLi42MmNkYzli
ODI2Zjk2NWY4NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3Rl
cnJhbmdlLXBsYWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdD
YWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsgbWFyZ2luOiAxMDsgcGFk
ZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkgeyBtYXJnaW46IDEwOyBw
YWRkaW5nOiAwIH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1NgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjEsNDAg
KzE1LDQyIEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIAkJaXRlbS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJCWNvbnNvbGVfbWVzc2Fn
ZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rpb24gbG9nUmVjdChjb21t
ZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNvbW1lbnQgKyAiOiAoIiAr
IHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAgICArIHRleHRJbnB1dENv
bnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQsIGxlbmd0aCkgKyAiKSIp
OworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkKIAkJdHJ5IHsKLQkJCiAJ
CQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJl
Z2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxv
Zyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsg
Ly8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5m
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0
IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAv
LyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRD
b250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8g
LSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFj
dGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsg
Ly8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KKwkJCXdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKIAorCQkJbG9nUmVjdCgi
Y2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIg
dGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVu
ZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUi
LCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dS
ZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIi
LCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1Jl
Y3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsK
KwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZp
cnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJ
CQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJ
CWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOwor
CQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJ
CQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3
Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3Jp
cHRpb24pOwogCQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgicCIpOwogCQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwogCQlkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVsc2UgewogCQlkb2N1bWVu
dC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1z
dHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dAppbmRleCBhY2ZkNTJmMGI5
NDhhNjUzZmMwNmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEyMGU4MDcwZjIwNDVkYTM2
NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0
eWxlZC1leHBlY3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBJID4gQiA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4gQiA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAotNTgs
NTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3Miw4
LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0OCwx
OAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitjYXJl
dCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIgdGhl
IGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQg
b2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGluZTog
KDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3Miw4
LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJhY3Rl
cjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAsNTcy
LDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6ICgw
LDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1NzIs
NDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5NDk2
NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQ6
ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJh
bmdlLXN0eWxlZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlkODc3MWNkMmZiMGRiYTYz
MGYyMWUuLmU1YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlkZWZhOTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJh
bmdlLXN0eWxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEwICsxLDUgQEAKIDxodG1s
PgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICB0ZXN0UnVu
bmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQogPHN0eWxlPgogYm9keSB7
IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIxLDMzICsxNiwzNiBAQCBi
b2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21lc3NhZ2VzLmFwcGVuZENo
aWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3QoY29tbWVudCwgc3RhcnQs
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjogKCIgKyBzdGFydCArICIs
IiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsgIikiKTsKKyAgICB9CisK
IAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0JCQogCQkJdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24oZG9jdW1lbnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNl
dE1hcmtlZFRleHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGJlZ2lubmlu
ZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciAKLQkJCWxvZyh0ZXh0
SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDYsIDApKTsgLy8gY2Fy
ZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7IC8vIGZpcnN0IGNoYXJh
Y3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUsIDEwMCkpOyAvLyAtIi0K
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAs
IDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9s
bGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5NjcyOTUpKTsgLy8gLSItCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgxLCA0
Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyCi0J
CQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAw
KSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwMDAsIDApKTsgLy8gLSIt
Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg3
LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJbG9nUmVjdCgiY2FyZXQg
YXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYWZ0ZXIgdGhlIGZp
cnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGVuZCBvZiBs
aW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5kIG9mIGxpbmUiLCA2LCAx
MDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7CisJCQlsb2dSZWN0KCJs
YXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBjaGFyYWN0ZXIiLCA1LCAy
KTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsKKwkJCWxvZ1JlY3QoImZp
cnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA3KTsKKwkJCWxv
Z1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxp
bmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2NzI5NSk7CisJCQlsb2dS
ZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCAwKTsKKwkJCWxvZ1Jl
Y3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEwMDAsIDApOworCQkJbG9n
UmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwgNywgMSk7CisJCQlsb2dS
ZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3LCA0Mjk0OTY3Mjk1KTsK
IAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24p
OwogCQl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggOWIzZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUwMTNlMC4uODFmZjFkYTMw
NzFlYjgxNDAyMTk4MjAxNzdjZTZkYzY0MjdhNmIyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIsOSArOTIsNiBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQvcmVh
ZHlTdGF0ZS8wMDYuaAogIyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzIG5vdCB5ZXQgc3VwcG9ydGVk
IGluIFdLMQogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5IFsgU2tpcCBdCiAKLVsgU2llcnJhIF0g
YWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hT
aWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktc2Vzc2lvbi12NC5odG1sIFsgU2tp
cCBdCi0KICMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIHlldC4KIHdlYmtp
dC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxv
YWQtc2V0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzOCwy
NiArMjM1LDExIEBAIHdlYmtpdC5vcmcvYi8xNTUwNjcgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tYWJvcnQtcHJpdmF0ZS5odG1sIFsgUGFzcyBDcmFzCiAKIHdlYmtpdC5vcmcvYi8xNzIw
OTIgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2Fkb3B0aW9uLWFnZW5jeS11bmxvYWQtaWZyYW1lLTQu
aHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC5odG1sIFsgUGFzcyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWh0dHAtdXJsLWFsbG93ZWQtYnktY3Nw
LW1lZGlhLXNyYy1zdGFyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3
MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20t
cmVtb3RlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJy
YSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWFjY2Vzc3NhbWVvcmln
aW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0g
aHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMv
bWVkaWEvYXV0b3BsYXktaWYtYXVkaW8taXMtcGxheWluZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
LXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxv
YWQtdHdpY2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2ll
cnJhIF0gaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3QuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9zZWN1
cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmcuaHRtbCBbIFBhc3MgVGltZW91dCBdCiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFsLWVudGl0eS54bWwgWyBT
a2lwIF0KIAotIyByZGFyOi8vcHJvYmxlbS8yMDAwMTk4NQotWyBTaWVycmEgXSBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotCiAjIHJkYXI6Ly9w
cm9ibGVtLzM0NzE2MTYzIEJyZWFrcyBzdWJzZXF1ZW50IHRlc3RzIHVzaW5nIHJlc3BvbnNlLnht
bAotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmFuZ2UtdGVzdC5o
dG1sIFsgU2tpcCBdCisjIEZJWE1FOiBTaG91bGQgYmUgZml4ZWQgaW4gQ2F0YWxpbmE7IG5lZWQg
dG8gcmUtZW5hYmxlLgoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yYW5nZS10ZXN0Lmh0bWwg
WyBTa2lwIF0KIAogIyBXSzEgZG9lcyBub3Qgc3VwcG9ydCBzeW5jIFhIUiByZWRpcmVjdGlvbnMg
YXMgZG9lcyBXSzIKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Vw
Z3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1zeW5jLXhoci1pbi1tYWlu
LWZyYW1lLmh0bWwgWyBTa2lwIF0KQEAgLTQxMyw3ICszOTUsNyBAQCBodHRwL3Rlc3RzL211bHRp
cGFydC9tdWx0aXBhcnQtYXN5bmMtaW1hZ2UuaHRtbAogCiBmYXN0L3J1YnkvcnVieS1leHBhbnNp
b24tY2prLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi1bIFNpZXJyYSsgXSBjc3MzL21h
c2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Citjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTIxNzggZmFzdC9yZXBsYWNlZC9yZXBsYWNlZC1i
cmVha2luZy5odG1sIFsgRmFpbHVyZSBdCiAKQEAgLTUyMCwxOSArNTAyLDE5IEBAIGZhc3QvcmVw
YWludC92ZXJ0aWNhbC10ZXh0LXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTU4NTg1IHdlYmdsL3dlYmdsLWJhY2tpbmctc3RvcmUtc2l6ZS11cGRhdGUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI0ODE4NzEyPgotWyBTaWVycmEr
IF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQtaHRtbC5odG1sIFsgUGFzcyBUaW1l
b3V0IF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0bWwuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI2Mzk5NTk4PgotWyBTaWVycmErIF0gZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJlIF0KLVsgU2llcnJh
KyBdIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZh
aWx1cmUgXQorZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWlsdXJl
IF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBbIEZh
aWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDkyMz4gVGhlIHJlc3VsdCBpcyBwcm9i
YWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5CiAjIHRvIGhhdmUgcGxh
dGZvcm0gc3BlY2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiBXSzEgYW5k
IFdLMi4KLVsgU2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMu
aHRtbCBbIEZhaWx1cmUgXQotWyBTaWVycmErIF0gYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRl
Lmh0bWwgWyBGYWlsdXJlIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2RvY3VtZW50LWF0dHJpYnV0ZXMu
aHRtbCBbIEZhaWx1cmUgXQorYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwgWyBGYWls
dXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNjQ3ODI5NgotWyBTaWVycmErIF0gc3ZnL2hpeGll
L3RleHQvMDAzLmh0bWwgWyBGYWlsdXJlIF0KK3N2Zy9oaXhpZS90ZXh0LzAwMy5odG1sIFsgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTk4OTMgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMveGhyL2V2ZW50LXJlYWR5c3RhdGVjaGFuZ2UtbG9hZGVkLmFueS5qcyBb
IFBhc3MgRmFpbHVyZSBdCiAKQEAgLTU0MSwxMyArNTIzLDEzIEBAIHdlYmtpdC5vcmcvYi8xNjAx
MDEgdXNlcnNjcmlwdHMvd2luZG93LW9uZXJyb3ItZm9yLWlzb2xhdGVkLXdvcmxkLTMuaHRtbCBb
IFBhc3MKIHdlYmtpdC5vcmcvYi8xMDU4NzAgWyBEZWJ1ZyBdIHdlYmF1ZGlvL2F1ZGlvbm9kZS1j
b25uZWN0LW9yZGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNzcy
MzcxOAotWyBTaWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvY2hpbGQtdHJhbnNm
b3JtLXdpdGgtYW5jaG9yLXBvaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVk
L2JsaW5rL2NvbXBvc2l0aW5nL2NoaWxkLXRyYW5zZm9ybS13aXRoLWFuY2hvci1wb2ludC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjEwNTYgZ2FtZXBhZCBbIFNr
aXAgXQogCi13ZWJraXQub3JnL2IvMTYyNTkyIFsgU2llcnJhKyBdIGNzczMvZmlsdGVycy9iYWNr
ZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2MjU5MSBbIFNpZXJyYSsgXSBjc3MzL2ZpbHRlcnMv
YmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtcmVmbGVjdGlvbi1hZGQtYmFja2Ryb3AuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYyNTkxIFsgU2llcnJh
KyBdIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9u
LXZhbHVlLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xNjI1OTIgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLXJlZmxl
Y3Rpb24uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYyNTkx
IGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLWFk
ZC1iYWNrZHJvcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8x
NjI1OTEgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLXJlZmxlY3Rp
b24tdmFsdWUtY2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTYxMzYwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9icm93c2luZy10aGUtd2ViL2hpc3RvcnktdHJhdmVyc2FsL3BlcnNpc3RlZC11c2VyLXN0YXRl
LXJlc3RvcmF0aW9uL3Njcm9sbC1yZXN0b3JhdGlvbi1mcmFnbWVudC1zY3JvbGxpbmctY3Jvc3Mt
b3JpZ2luLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC01NzYsNyArNTU4LDcgQEAgd2Via2l0
Lm9yZy9iLzE2NDkzMyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtb3ZlcmxhcC1leHRlbnQtcnRsLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1vdmVyZmxvdy5odG1sIFsgRmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNTQ2MTIgWyBTaWVycmErIF0gY29tcG9zaXRpbmcvcmVw
YWludC9maXhlZC1iYWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xNTQ2MTIgY29tcG9zaXRpbmcvcmVwYWludC9maXhlZC1iYWNrZ3JvdW5kLXNjcm9s
bC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NTU4OSBwb2ludGVyLWxv
Y2svbG9jay1sb3N0LW9uLWVzYy1pbi1mdWxsc2NyZWVuLmh0bWwgWyBTa2lwIF0KIApAQCAtNjM0
LDggKzYxNiw2IEBAIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAgXQogCiB3ZWJraXQub3Jn
L2IvMTc1MzQ1IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1zY3JvbGxpbmctY3Jhc2guaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzU1NTQgWyBTaWVycmEgXSBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1sZWdhY3kuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdl
YmtpdC5vcmcvYi8xNzQyMTggc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWxpc3QtcHJvcGVydHkt
aW5zdGFuY2VzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzI4Nzcgc3Zn
L2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWJhY2tncm91bmQuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC02NDksMjMgKzYyOSwyMyBAQCB3ZWJraXQub3JnL2IvMTc2
OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9waXBpbmcvZXJyb3It
cHJvcGFnYQogd2Via2l0Lm9yZy9iLzE3NTg4NiBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxl
bWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
MjkyMDE2OTg+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkNvcmVHcmFwaGlj
czogQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YSArIDM3NwotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2Fu
dmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtcG90ZW50aWFsbHktc3Vi
c2FtcGxlZC1pbWFnZS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxseS1zdWJzYW1wbGVkLWltYWdlLmh0bWwg
WyBDcmFzaCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBSRUdSRVNTSU9OPyAoRm9u
dFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0qIGFuZCBzdmcvVzNDLVNW
Ry0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzND
LVNWRy0xLjEvZm9udHMtZWxlbS0wNC1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4x
L2ZvbnRzLWVsZW0tMDQtYi5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzE4
OTM3MTQ+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L211bHRpcGxlLWNvZGV1bml0
LXZlcnRpY2FsLXVwcmlnaHQuaHRtbCBpcyBmYWlsaW5nIG9uIFdLMQotWyBIaWdoU2llcnJhKyBd
IGZhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJpZ2h0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK2Zhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJp
Z2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzE4OTUx
OTI+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLkltYWdlSU8uZnJhbWV3b3Jr
OiBJSU9EaWN0aW9uYXJ5OjpnZXRCb29sRm9yS2V5ICsgMAotWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvbWlzYy9zbG93LWxvYWRpbmctYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsgU2tpcCBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzMzNTIyNDIwPiBDcmFzaDogTXVsdGlwbGUgTGF5b3V0IHRlc3Qg
aW4gZmFzdC9ldmVudHMgYW5kIGZhc3QvZm9ybXMgYW5kIGZhc3QvdGV4dCBhcmUgY3Jhc2hpbmcK
LVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWNvZGUuaHRtbCBbIENy
YXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWtleS5odG1s
IFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tleWRvd24tbGVmdHJpZ2h0
LWtleXMuaHRtbCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2Zvcm1zL3RleHRhcmVh
LW1heGxlbmd0aC5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvdGV4dC9zeXN0
ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVudHMva2V5Ym9h
cmRldmVudC1jb2RlLmh0bWwgWyBDcmFzaCBdCitmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LWtl
eS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVudHMva2V5ZG93bi1sZWZ0cmlnaHQta2V5cy5odG1s
IFsgQ3Jhc2ggXQorZmFzdC9mb3Jtcy90ZXh0YXJlYS1tYXhsZW5ndGguaHRtbCBbIENyYXNoIF0K
K2Zhc3QvdGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQogCiB3
ZWJraXQub3JnL2IvMTc5Nzc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2Zp
cmluZy1ldmVudHMtaHR0cC1uby1jb250ZW50LWxlbmd0aC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IApAQCAtNzMxLDMyICs3MTEsMzIgQEAgd2Via2l0Lm9yZy9iLzE4NzU1NyBbIERlYnVnIF0gbWVk
aWEvbWVkaWEtZnJhZ21lbnRzL1RDMDA5MS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xODc3MTEgWyBEZWJ1ZyBdIHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEtYi5zdmcgWyBQ
YXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MjYyNTY1Nz4KLVsgTW9qYXZlKyBd
IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNr
aXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3VuZC1pbWFn
ZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hc3luYy1p
bWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1h
Z2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsgU2tpcCBdCi1b
IE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRlLXZp
ZXdwb3J0Lmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kZS1yZW5k
ZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMv
ZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFz
dC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lw
IF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFz
eW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL3Nw
cml0ZS1zaGVldC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2FuaW1hdGVk
LWdpZi1wYWludC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYXN5
bmMtaW1hZ2UtYmFja2dyb3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBdCitmYXN0L2lt
YWdlcy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1h
Z2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsgU2tpcCBdCitm
YXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRlLXZpZXdwb3J0Lmh0bWwg
WyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBb
IFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNr
aXAgXQorZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWltYWdlLmh0
bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0ZS1keW5hbWljLWFzeW5j
LXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL3Nwcml0ZS1zaGVldC1pbWFn
ZS1kcmF3Lmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI2Mjc1NjI+Ci1bIE1v
amF2ZSsgXSBtZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1hdXRvcGxheS1ub3QtYWxs
b3dlZC1zb3VyY2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gbWVkaWEvdmlkZW8tcmVzdHJp
Y3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQuaHRtbCBbIFNraXAgXQorbWVkaWEv
dmlkZW8tcmVzdHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQtc291cmNlLmh0
bWwgWyBTa2lwIF0KK21lZGlhL3ZpZGVvLXJlc3RyaWN0ZWQtaW52aXNpYmxlLWF1dG9wbGF5LW5v
dC1hbGxvd2VkLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI3MzYyMTM+Ci1b
IE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVy
ZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy5odG1s
IFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRy
YW5zZm9ybXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZGlzcGxheWxpc3RzL2xheWVy
LWRpc3BheS1saXN0Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGRpc3BsYXlsaXN0cy9y
ZXBsYXktc2tpcC1jbGlwcGVkLXJlY3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2Nh
bnZhcy1kaXNwbGF5LWxpc3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2V4dGVudC1p
bmNsdWRlcy1zaGFkb3cuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxpc3RzL2V4dGVudC1pbmNs
dWRlcy10cmFuc2Zvcm1zLmh0bWwgWyBGYWlsdXJlIF0KK2Rpc3BsYXlsaXN0cy9sYXllci1kaXNw
YXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCitkaXNwbGF5bGlzdHMvcmVwbGF5LXNraXAtY2xpcHBl
ZC1yZWN0Lmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDYxMSBjb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9maXhlZC1vdmVybGFwLWV4dGVudC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI5MDQ3ODA+Ci1bIE1vamF2ZSsgUmVsZWFzZSBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2Rlcml2ZV9iaXRzX2tl
eXMvaGtkZi5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQorWyBSZWxlYXNlIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cy9o
a2RmLmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODkwODcg
c3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51bWVyaWMtcHJlY2lzaW9uLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC03NzIsNyArNzUyLDcgQEAgd2Via2l0Lm9yZy9iLzE5
MTM1NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3L3Njcm9s
bC1iZWhhdmkKIAogd2Via2l0Lm9yZy9iLzE4OTkwOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Jlc291cmNlLXRpbWluZy9yZXNvdXJjZV90aW1pbmcud29ya2VyLmh0bWwgWyBGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzE4OTc1NiBbIE1vamF2ZSsgXSBjb21wb3NpdGluZy9maWx0
ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9yLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4OTc1NiBjb21wb3NpdGlu
Zy9maWx0ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRvLWFuY2VzdG9y
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTg5NzIzIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXhzbC1yZWRpcmVjdC1CTE9DS0VELmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCkBAIC03ODIsNyArNzYyLDcgQEAgd2Via2l0Lm9yZy9iLzE5MDgz
MiBbIERlYnVnIF0gZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0ZWQtY29udHJv
bHMuaHQKIAogd2Via2l0Lm9yZy9iLzE5MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9w
dGlvbnMveC1mcmFtZS1vcHRpb25zLW11bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNv
bXBvc2l0aW5nL2lmcmFtZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzE4NjQwNiBjb21wb3NpdGluZy9pZnJhbWVzL2Rpc3BsYXktbm9u
ZS1zdWJmcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5MDM4MyBm
YXN0L2ltYWdlcy9hbmltYXRlZC1naWYtbG9vcC1jb3VudC5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTAzODMgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtcG5nLWxv
b3AtY291bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC03OTAsNyArNzcwLDcg
QEAgd2Via2l0Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kaWZmZXJl
bnQtZGVzdC1zaXplLmh0bWwgWyBQYXNzIEkKIAogd2Via2l0Lm9yZy9iLzE5MTYzOSBpbXBvcnRl
ZC9ibGluay9jb21wb3NpdGluZy9zcXVhc2hpbmcvc3F1YXNoaW5nLWludG8tYW5jZXN0b3ItcGFp
bnRlZC1sYXllci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9i
LzE5MDYyNyBbIE1vamF2ZSsgXSBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBh
dGgtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzE5MDYyNyBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5v
LXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTcyMzg0IGZh
c3QvaGlkcGkvaGlkcGktbG9uZy1wYWdlLXdpdGgtaW5zZXQtZWxlbWVudC5odG1sIFsgU2tpcCBd
CiAKQEAgLTgyNiwxMCArODA2LDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvcmFuZ2Utc2V0CiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS9kaXNwbGF5LW5vbmUtaW5s
aW5lLWltZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQy
NjI1NjU3PiBSRUdSRVNTSU9OIChNb2phdmUpOiAxMiBmYXN0L2ltYWdlcyB0ZXN0cyB0aW1pbmcg
b3V0IG9uIFdLMQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5o
dG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJp
ZnkuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsg
U2tpcCBdCitmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJpZnkuaHRtbCBbIFNraXAgXQog
Ci13ZWJraXQub3JnL2IvMjAwMDAyIFsgTW9qYXZlKyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5rL3N0
b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0KK3dl
YmtpdC5vcmcvYi8yMDAwMDIgWyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhl
ZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0KIAogIyBTa2lwIElzTG9n
Z2VkSW4KIGh0dHAvdGVzdHMvaXMtbG9nZ2VkLWluLyBbIFNraXAgXQpAQCAtODQ5LDcgKzgyOSw3
IEBAIHdlYmtpdC5vcmcvYi8yMDM1MTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXNpemluZy9keW5hbWljLWF2YWlsCiAjIFN0YWxlLXdoaWxlLXJldmFsaWRhdGUgaXMg
bm90IHN1cHBvcnRlZCBvbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjA1MzE0
IFsgQ2F0YWxpbmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5n
ZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBlZGl0aW5nL21hYy9pbnB1dC9m
aXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
cmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBdCiAKQEAgLTk2Myw0ICs5
NDMsNCBAQCB3ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRzL21vdXNlLWN1cnNvci1uby1t
b3VzZW1vdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDk1NjAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1yZXNwb25zZS11cGxvYWQtZXZl
bnQtcHJvZ3Jlc3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIw
OTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFjay1mb3J3YXJkLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcv
Yi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVyLWJhY2stZm9yd2FyZC5o
dG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhY2IxZWY2YzMzZjFkY2Y0OTZiNmRhN2FmZTc1YWVkZDcxMWFh
ZTlkLi45ODRhNGQwYzI1NTk1ZjljYjg2ZDA3ZmU4ZjRmYjY4ZGQ0ZDM0MThhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMywyNiArMzMs
MTQgQEAgZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUtaW4tc3ViZnJh
bWVzLmh0bWwgWyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5o
dG1sIFsgUGFzcyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11
cGRhdGUuaHRtbCBbIFBhc3MgXQogCi1bIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBh
eS8gWyBQYXNzIF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlC
dXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5
L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25WMy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAv
dGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBTa2lwIF0KLVsgU2ll
cnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUuaHRtbCBbIFNr
aXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVz
dHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdBZGRyZXNzQ2hhbmdlRXZlbnRFcnJvcnNW
My5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGFjY2Vzc2liaWxpdHkvbWFjL2FwcGxl
LXBheS1sYWJlbHMuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wv
YXBwbGVwYXkvQXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBo
dHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNC5odG1sIFsgU2tpcCBdCi1b
IEhpZ2hTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNS5o
dG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXkt
c2Vzc2lvbi12NC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS8gWyBQYXNz
IF0KIAogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12aWV3cG9ydC1yZWN0cy5o
dG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJiYW5kaW5nLXZpZXdwb3J0
LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0KIAotWyBTaWVycmErIF0gaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdCBbIFBhc3MgXQotWyBTaWVycmErIF0gaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcGF5bWVudHJlcXVlc3QgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVz
dCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVl
c3QgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9hbGxvd3BheW1lbnRy
ZXF1ZXN0LWF0dHJpYnV0ZS1jcm9zcy1vcmlnaW4tYmMtY29udGFpbmVycy5odHRwcy5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvbm8tYXR0cmlidXRlLWNyb3Nz
LW9yaWdpbi1iYy1jb250YWluZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
NzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxs
b3dwYXltZW50cmVxdWVzdC9yZW1vdmluZy1hbGxvd3BheW1lbnRyZXF1ZXN0Lmh0dHBzLnN1Yi5o
dG1sIFsgU2tpcCBdCkBAIC03MCw3ICs1OCw3IEBAIGFwcGxpY2F0aW9ubWFuaWZlc3QvIFsgUGFz
cyBdCiAKIHdlYmtpdC5vcmcvYi8xODcxODMgaHR0cC90ZXN0cy9zZWN1cml0eS9wYXN0ZWJvYXJk
LWZpbGUtdXJsLmh0bWwgWyBQYXNzIF0KIAotWyBNb2phdmUrIF0gZmFzdC9jYW52YXMvd2ViZ2wv
Y29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0bWwgWyBQYXNzIF0KK2Zh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5o
dG1sIFsgUGFzcyBdCiAKIGZhc3QvbWlzYy92YWxpZC1wcmltYXJ5LXNjcmVlbi1kaXNwbGF5SUQu
aHRtbCBbIFBhc3MgXQogCkBAIC03OSwxMSArNjcsMTEgQEAgaHR0cC90ZXN0cy93ZWJBUElTdGF0
aXN0aWNzIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODQ1Njkgc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKLVsgTW9qYXZlKyBdIGZhc3QvZXZlbnRzL2RldGVjdC1jYXBzLWxvY2suaHRtbCBbIFBh
c3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2NhcHMtbG9jay1p
bmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1dG8tZmlsbC1zdHJvbmct
cGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZm9ybXMvYXV0
by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUtdmlzaWJsZS13
aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUuaHRtbCBbIFBh
c3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3JvbGxlZC1hZnRlci1jYXBz
LWxvY2stdG9nZ2xlZC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTk0MTcwIFsgTW9qYXZl
KyBSZWxlYXNlIF0gZmFzdC9yZXBhaW50L3BsYWNlaG9sZGVyLWFmdGVyLWNhcHMtbG9jay1oaWRk
ZW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kZXRlY3QtY2Fwcy1sb2NrLmh0
bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNh
dG9yLXNob3VsZC1iZS12aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3
b3JkLWJ1dHRvbi5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2F1dG8tZmlsbC1idXR0b24vY2Fw
cy1sb2NrLWluZGljYXRvci1zaG91bGQtbm90LWJlLXZpc2libGUtd2hlbi1hdXRvLWZpbGwtc3Ry
b25nLXBhc3N3b3JkLWJ1dHRvbi1pcy12aXNpYmxlLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMv
cGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRvZ2dsZWQuaHRtbCBbIFBhc3MgXQor
d2Via2l0Lm9yZy9iLzE5NDE3MCBbIFJlbGVhc2UgXSBmYXN0L3JlcGFpbnQvcGxhY2Vob2xkZXIt
YWZ0ZXItY2Fwcy1sb2NrLWhpZGRlbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogZmFzdC9ldmVu
dHMvaW5hY3RpdmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQYXNzIF0KIApAQCAtMjIz
LDkgKzIxMSw5IEBAIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92
ZS1jdXJzb3ItdG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0CiB3ZWJraXQub3JnL2IvMTA1NjE2
IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1hZnRlci1hY2NlcHRpbmct
YXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtY2FuZGlkYXRlLWFsbG93
cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNv
cmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1oeXBoZW4uaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMt
aW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbWFya2VyLWlu
Y2x1ZGVzLWh5cGhlbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJzLWluLW92ZXJsYXBwaW5n
LWxpbmVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYx
NiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMt
bGFyZ2UtZm9udC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdpdGgtc3BlbGxpbmctbWFy
a2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFzdC93
cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIApAQCAtNDkyLDEzICs0ODAsMTIgQEAgd2Via2l0Lm9yZy9iLzE0
MTA4NSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0KLVsgU2llcnJhKyBd
IGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3MgXQoraHR0cC93cHQvYmVh
Y29uL2NvbnRlbnRleHRlbnNpb25zIFsgUGFzcyBdCiAKICMgVGhlIGZvbGxvd2luZyB0ZXN0cyBh
cmUgZmxha3kuCiB3ZWJraXQub3JnL2IvMTc5NTU3IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY29udGVudGV4dGVuc2lvbnMvdXBncmFkZS13b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTY4MDgxIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvYXN5
bmMteGhyLW9uZXJyb3IuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTQ2NDAw
IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY2hhcmFjdGVyLXNldC1iYXNpYy1zdXBwb3J0
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2ODA4MiBbIFNpZXJyYSBdIGh0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvaW52YWxpZC1zZWxlY3Rvci5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAogIyBXZWJLaXQxLW9ubHkgZmFpbHVyZS4KIHdlYmtpdC5vcmcv
Yi8xMDM4NTcgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLWNoYW5nZS5odG1sIFsgUGFzcyBdCkBA
IC01MTAsNTYgKzQ5Nyw1NiBAQCBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMvZ2V0
LXVybC1ub3RpZnktb24tcmVtb3ZhbC5odG1sIFsgUGFzcyBUaW1lb3V0CiBpbXBvcnRlZC9ibGlu
ay9mYXN0L211bHRpY29sL25ld211bHRpY29sL211bHRpY29sLWJlY29tZXMtcmVndWxhci1ibG9j
ay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL2JsaW5rL2Zhc3QvdHJh
bnNmb3Jtcy90cmFuc2Zvcm0tdXBkYXRlLWZyYW1lLW92ZXJmbG93Lmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTU1NzU3IFsgU2llcnJhKyBdIG1lZGlhL21l
ZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTU1NzU3IG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTc1ODkgZmFzdC90ZXh0LWF1dG9zaXppbmcv
aW9zL3RleHQtYXV0b3NpemluZy1hZnRlci1iYWNrLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAj
IFBpUCB0ZXN0cyBhcmUgb25seSBlbmFibGVkIGZvciBTaWVycmEgV2ViS2l0Mi4KICMgcmRhcjov
L3Byb2JsZW0vMjc1NzQzMDMKLVsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL3BpY3R1cmUtaW4t
cGljdHVyZS5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTcwNjIwIFsgU2llcnJhKyBdIG1l
ZGlhL2NvbnRyb2xzL3BpcC1wbGFjZWhvbGRlci13aXRob3V0LXZpZGVvLWNvbnRyb2xzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQotWyBTaWVycmErIF0gbWVkaWEvZWxlbWVudC1jb250YWluaW5nLXBp
cC12aWRlby1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJr
aXQub3JnL2IvMTcyOTk4IFsgU2llcnJhKyBdIG1lZGlhL2Z1bGxzY3JlZW4tYXBpLWVuYWJsZWQt
bWVkaWEtd2l0aC1wcmVzZW50YXRpb24tbW9kZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMTczMTk5IFsgU2llcnJhKyBdIG1lZGlhL25hdmlnYXRlLXdpdGgtcGlwLXNob3VsZC1ub3Qt
Y3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBtZWRpYS9waXAtdmlkZW8t
Z29pbmctaW50by1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIG1lZGlhL3Bp
Y3R1cmUtaW4tcGljdHVyZSBbIFBhc3MgXQorbWVkaWEvY29udHJvbHMvcGljdHVyZS1pbi1waWN0
dXJlLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzA2MjAgbWVkaWEvY29udHJvbHMvcGlw
LXBsYWNlaG9sZGVyLXdpdGhvdXQtdmlkZW8tY29udHJvbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CittZWRpYS9lbGVtZW50LWNvbnRhaW5pbmctcGlwLXZpZGVvLWdvaW5nLWludG8tZnVsbHNjcmVl
bi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xNzI5OTggbWVkaWEvZnVsbHNj
cmVlbi1hcGktZW5hYmxlZC1tZWRpYS13aXRoLXByZXNlbnRhdGlvbi1tb2RlLmh0bWwgWyBGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8xNzMxOTkgbWVkaWEvbmF2aWdhdGUtd2l0aC1waXAtc2hvdWxk
LW5vdC1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK21lZGlhL3BpcC12aWRlby1nb2luZy1p
bnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgXQorbWVkaWEvcGljdHVyZS1pbi1waWN0dXJlIFsg
UGFzcyBdCiAKICMgUlRMIFNjcm9sbGJhcnMgYXJlIGVuYWJsZWQgb24gU2llcnJhIFdlYktpdDIu
Ci13ZWJraXQub3JnL2IvMTc5NDU1IFsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtc2ltcGxlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBd
IGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWNvbnRlbnRzLmh0bWwgWyBQ
YXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93
LWRpci1ydGwuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNj
cm9sbGJhcnMtb3ZlcmZsb3ctcGFkZGluZy5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1zaW1wbGUuaHRtbCBbIFBhc3MgXQot
WyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3cuaHRtbCBb
IFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZs
b3ctZWxlbWVudEZyb21Qb2ludC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsgUGFz
cyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy10
ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Nj
cm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIFsgUGFzcyBdCi1b
IFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1maXhlZC5o
dG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy10
ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Nj
cm9sbGluZy9ydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1pZnJhbWUtb2Zmc2V0Lmh0bWwg
WyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWVsZW1l
bnRGcm9tUG9pbnQtc3RhdGljLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xs
aW5nL3J0bC1zY3JvbGxiYXJzLWlmcmFtZS1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJy
YSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmluZy5odG1sIFsgUGFz
cyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNj
cm9sbC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qv
c2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0bWwgWyBQYXNz
IF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2lt
cGxlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWxpc3Rib3guaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtcG9zaXRpb25lZC1pbnRlcnNlY3Qtc2Nyb2xsYmFycy5odG1sIFsgUGFzcyBd
Ci1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUtYm9k
eS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC5odG1sIFsgUGFz
cyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5hdGUt
Ym9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNlbWVudC0yLmh0bWwg
WyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNjI2MzggWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcv
cnRsLXNjcm9sbGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVw
ZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQot
WyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYW5pbWF0aW9uLXByb3Bl
cnR5Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzk0NTUgZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGlu
Zy9ydGwtc2Nyb2xsYmFycy1zaW1wbGUuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtb3ZlcmZsb3ctY29udGVudHMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctZGlyLXJ0bC5odG1sIFsgUGFzcyBdCitmYXN0L3Nj
cm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0bWwgWyBQYXNzIF0KK2Zh
c3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBsZS5odG1sIFsgUGFzcyBd
CitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy5odG1sIFsgUGFzcyBdCitm
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1lbGVtZW50RnJvbVBvaW50Lmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXBvc2l0
aW9uLWFic29sdXRlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LW92ZXJmbG93LXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRlLmh0bWwgWyBQYXNzIF0KK2Zh
c3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWZpeGVkLmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9u
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlmcmFtZS1vZmZz
ZXQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtZWxlbWVudEZy
b21Qb2ludC1zdGF0aWMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtaWZyYW1lLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLXBvc2l0aW9uaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtcmlnaHQuaHRtbCBbIFBhc3MgXQorZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUuaHRtbCBbIFBhc3MgXQor
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sIFsgUGFzcyBdCitmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWludGVyc2VjdC1zY3JvbGxiYXJz
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1i
b2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1ib2R5LWRpci1h
dHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50LTIuaHRtbCBbIFBhc3MgXQor
d2Via2l0Lm9yZy9iLzE2MjYzOCBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbHRlcm5h
dGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1l
bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1hbmltYXRpb24tcHJvcGVydHkuaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJv
YmxlbS8yNTA2MzEyOD4KLVsgU2llcnJhKyBdIG1lZGlhL21lZGlhLWNvbnRyb2xzLWRyYWctdGlt
ZWxpbmUtc2V0LWNvbnRyb2xzLXByb3BlcnR5Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQorbWVkaWEv
bWVkaWEtY29udHJvbHMtZHJhZy10aW1lbGluZS1zZXQtY29udHJvbHMtcHJvcGVydHkuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKICMgSGl0dGluZyAiVGhlIGNlcnRpZmljYXRlIGZvciB0aGlzIHNl
cnZlciBpcyBpbnZhbGlkIiBsb2FkaW5nIGVycm9yIChub3QgaGFwcGVuaW5nIGluIFdLMSkKLXdl
YmtpdC5vcmcvYi8xNjA0NDUgWyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJl
LWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTYwNDQ1IFsg
U2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3Jh
ZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1tYWluLWZyYW1l
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjA0NDUgaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRl
LWluc2VjdXJlLWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTYwNDQ1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUt
aW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1pbi1tYWluLWZyYW1lLmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NzYwNyBbIERlYnVnIF0gaHR0cC90ZXN0
cy9pbnNwZWN0b3Ivd29ya2VyL2Jsb2Itc2NyaXB0LXdpdGgtY3Jvc3MtZG9tYWluLWltcG9ydGVk
LXNjcmlwdHMuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKQEAgLTU4Miw4ICs1NjksNiBAQCB3ZWJr
aXQub3JnL2IvMTYyMDgxIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1saW5rLmh0bWwg
WyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2MDAxNyBqcy9yZWdyZXNzLTEzOTU0OC5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE2MjUyNCBbIFNpZXJyYSBSZWxlYXNl
IF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVkaXJlY3QuaHRtbCBb
IFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNjE5MjYgc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtY3Vyc29yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAKQEAgLTU5OSw4ICs1ODQsNiBA
QCB3ZWJraXQub3JnL2IvMTYyOTc1IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9tZW1vcnkt
Y2FjaGUtcmV2YWxpZGF0aW9uLXVwZGF0ZQogCiB3ZWJraXQub3JnL2IvMTYxNjUzIFsgRGVidWcg
XSBzdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQog
Ci13ZWJraXQub3JnL2IvMTYzNDUzIFsgU2llcnJhIFJlbGVhc2UgXSBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL2Jhc2lj
LXVwZ3JhZGUtY29ycy5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9i
LzE2MzcwMiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3RhdGUuaHRtbCBbIEZhaWx1
cmUgXQogCiB3ZWJraXQub3JnL2IvMTY0ODcwIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJjdXJzb3JfaXRlcmF0aW5nLmh0bSBbIFBhc3MgRmFp
bHVyZSBdCkBAIC02MTEsOCArNTk0LDYgQEAgd2Via2l0Lm9yZy9iLzE2NTM1MiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXJlc2l6ZS1jb250ZW50cy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Vi
a2l0Lm9yZy9iLzE2NzY1MyBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Jsb2NrLWV2ZXJ5
dGhpbmctdW5sZXNzLWRvbWFpbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9i
LzE2NzIwNiBbIFNpZXJyYSBSZWxlYXNlIF0gbWF0aG1sL29wZW50eXBlL2xhcmdlLW9wZXJhdG9y
cy1kaXNwbGF5c3R5bGUtZHluYW1pYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzE2ODA2NSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9oZWFwLXNuYXBzaG90Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8xNjgyMzUgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvdGV4dC1s
ZXZlbC1zZW1hbnRpY3MvdGhlLWEtZWxlbWVudC9hLWRvd25sb2FkLWNsaWNrLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQpAQCAtNjM4LDE2ICs2MTksMTAgQEAgd2Via2l0Lm9yZy9iLzE3MTc2MyBjb21w
b3NpdGluZy90aWxpbmcvbm9uLWFjdGl2ZS13aW5kb3ctdGlsZXMtc2l6ZS5odG1sIFsgUGFzcwog
CiB3ZWJraXQub3JnL2IvMTcxODM3IFsgRGVidWcgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJr
aXQub3JnL2IvMTcxOTM5IFsgU2llcnJhIFJlbGVhc2UgXSBtZWRpYS90cmFjay90cmFjay1jdWUt
cmVuZGVyaW5nLW9uLXJlc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQotd2Via2l0Lm9yZy9i
LzE3MTk0NyBbIFNpZXJyYSBSZWxlYXNlIF0gdHJhbnNpdGlvbnMvZXh0cmEtdHJhbnNpdGlvbi5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MDY5OSBbIFJlbGVhc2UgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy90aW1lcnMvbmVn
YXRpdmUtc2V0dGltZW91dC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2
ODkzNyAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtaWZyYW1lLWxhdGNoZWQt
bWFpbmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcyMDU0IFsg
U2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtc2l6ZS1pZnJh
bWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNzI0NTQgaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8xNzMxODggZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtZ3JhbnQtcGVyc2lzdGVu
Y3kzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtNjYxLDEwICs2MzYsMTAgQEAgd2Via2l0Lm9y
Zy9iLzE4NzY0OSBlZGl0aW5nL3NlbGVjdGlvbi91cGRhdGUtc2VsZWN0aW9uLWJ5LXN0eWxlLWNo
YW5nZS5odG1sIFsgUGEKICMgVG91Y2ggZXZlbnRzIGFyZSBub3QgYXZhaWxhYmxlIG9uIG9wZW4g
c291cmNlIGJvdHMsIHRodXMgb25seSB0ZXN0ZWQgb24gTWFjLgogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24taW4tY3Jvc3Mtb3JpZ2luLXN1Yi1mcmFt
ZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1p
bnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzLyBbIFBhc3MgXQot
WyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFu
dC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1jcm9zcy1zaXRlLXNob3VsZC1ub3QtaGF2ZS1hY2Nlc3Mt
ZGF0YWJhc2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVy
ZS5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNz
L2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS1kYXRhYmFzZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRoZW4tbmF2aWdhdGUtY3Jv
c3Mtc2l0ZS1zaG91bGQtbm90LWhhdmUtYWNjZXNzLWRhdGFiYXNlLmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQoraHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3Qt
cHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
ZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJlLWRhdGFiYXNlLmh0bWwg
WyBTa2lwIF0KIAogIyBFbmFibGUgYWdhaW4gd2hlbiBmaXhpbmcgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMC4KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9o
YXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi10aGlyZC1wYXJ0eS1oYXMtY29va2llcy1lcGhlbWVy
YWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQpAQCAtNjkzLDggKzY2OCw2IEBAIHdlYmtpdC5vcmcv
Yi8xNzM2NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9odHRwLWNhY2hl
L2ludmFsaWRhdGUuCiAKIHdlYmtpdC5vcmcvYi8xNzM1MDAgaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJr
aXQub3JnL2IvMTcyODI5IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBs
YWNlc3RhdGUtc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzE3NTc4
MSBzdmcvaW4taHRtbC9ieS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xNzYwNTQgbWVkaWEvdmlkZW8tY29udHJvbHMtaW4tbWVkaWEtZG9jdW1lbnQuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCkBAIC03MTMsMzAgKzY4NiwzMCBAQCB3ZWJraXQub3JnL2IvMTg1
OTk0IGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctZmFtaWx5Lmh0bWwgWyBQ
YXNzIEltYQogd2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9u
dHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQogCiAjIFJlZW5hYmxlZCB0ZXN0cyBmb3Igc3VwcG9ydGVkIHBsYXRmb3JtcwotWyBNb2phdmUr
IF0gZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci5odG1s
IFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZXh0
ZW5kZWQtY2hhcmFjdGVyLXdpdGgtdXNlci1mb250Lmh0bWwgWyBQYXNzIF0KK2Zhc3QvdGV4dC91
c2VyLWluc3RhbGxlZC1mb250cy9leHRlbmRlZC1jaGFyYWN0ZXIuaHRtbCBbIFBhc3MgXQorZmFz
dC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJhY3Rlci13aXRoLXVzZXIt
Zm9udC5odG1sIFsgUGFzcyBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1MDEwMzA3PgotWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFBh
c3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvblYzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVzdHMv
c3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY1Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJy
YSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVlc3RTaGlwcGluZ0NvbnRh
Y3RWMy5odHRwcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zc2wv
YXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVudEVycm9yc1YzLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1w
YXktbGFiZWxzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2Fw
cGxlLXBheS1zZXNzaW9uLXY0Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvc3NsL2FwcGxlcGF5
L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uVjMuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uVjQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uVjUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBw
bGVQYXlSZXF1ZXN0U2hpcHBpbmdDb250YWN0VjMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraHR0cC90
ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVudEVycm9y
c1YzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2FwcGxlLXBheS1sYWJl
bHMuaHRtbCBbIFBhc3MgXQorYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LXNlc3Npb24tdjQu
aHRtbCBbIFBhc3MgXQogIyA8cmRhcjovL3Byb2JsZW0vMzE2MzQ0NTE+Ci1bIEhpZ2hTaWVycmEr
IF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBQYXNz
IF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9u
LXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHkt
Y29udGV4dC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCi1b
IEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5vdC1y
ZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBl
cnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3Rv
cmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hT
aWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVy
LXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwgWyBQYXNzIF0KLVsgSGln
aFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJy
ZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCi1bIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1t
YXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
b29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRo
aXJkLXBhcnR5LWNvbnRleHQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRp
cmVjdC5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xl
YXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQt
c3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJl
ZGlyZWN0cy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
c3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsg
UGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1h
Z2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAKICMgVGhlIFNhbWVTaXRl
IGNvb2tpZSBBUEkgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQ2F0YWxpbmEgYW5kIGFib3Zl
LgogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFs
bC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFBhc3MgXQpAQCAtNzQ0LDkgKzcx
Nyw2IEBAIHdlYmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRz
L3NoYWRvdy1wb3N0c2NyaXB0LWZhbWlseS5odG1sCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBl
Y3RhdGlvbnMgc2luY2UgdGhleSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIG1lZGlh
L2RlYWN0aXZhdGUtYXVkaW8tc2Vzc2lvbi5odG1sIFsgUGFzcyBdCiAKLSMgTGluayBwcmVjb25u
ZWN0IGlzIGRpc2FibGVkIG9uIHByZS1IaWdoIFNpZXJyYSBiZWNhdXNlIHRoZSBDRk5ldHdvcmsg
U1BJIGlzIG1pc3NpbmcuCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAg
XQotCiB3ZWJraXQub3JnL2IvMTc3Njg3IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2Utc2l6ZXMtbWVtb3J5LWNhY2hlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTc4NDcyIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQt
cmVzb3VyY2UtaGFuZGxlZC1rZXlkb3duLmh0bWwgWyBTa2lwIF0KQEAgLTc1NCwxMCArNzI0LDYg
QEAgd2Via2l0Lm9yZy9iLzE3ODQ3MiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LXJlc291cmNlLXdpdGgtdXMKIAogd2Via2l0Lm9yZy9iLzE3Njg4MSBwbHVnaW5z
L2pzLWZyb20tZGVzdHJveS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3
ODU1MyBbIEhpZ2hTaWVycmEgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9kb20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5pbmctdGhlLWlucHV0LXN0
cmVhbS8wMTEuaHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTY1NjIwIFsgU2llcnJhIF0g
aHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVxdWVzdC1oZWFkZXJzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTc5NzczIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L3NlcnZpY2V3b3JrZXItaW50ZXJjZXB0
ZWQuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzYwNzggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tb25u
ZWdvdGlhdGlvbm5lZWRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAgLTc5Miw5ICs3NTgsNyBA
QCB3ZWJraXQub3JnL2IvMTgwOTgyIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZQogCiB3ZWJraXQub3JnL2IvMTgyMTc2IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2Fw
cGNhY2hlLW9yZGVyaW5nLW1haW4uaHR0cHMuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2Iv
MTgzODY5IFsgSGlnaFNpZXJyYSsgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2Vlay1i
YWNrd2FyZC1zdXBwb3J0L3NlZWstYmFja3dhcmQtc3VwcG9ydC5odG1sIFsgUGFzcyBGYWlsdXJl
IENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzE4Mzg2MCBbIFNpZXJyYSBSZWxlYXNlIF0gaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3RoaXJkLXBhcnR5LXJlZ2lzdHJhdGlvbi5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xODM4NjkgbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xz
L3NlZWstYmFja3dhcmQtc3VwcG9ydC9zZWVrLWJhY2t3YXJkLXN1cHBvcnQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xODQyNDUgaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2VydmljZS13b3JrZXItY2FjaGUtYXBpLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCkBAIC04NDUsMTcgKzgwOSwxNSBAQCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVu
dC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAgXQogCi0jIE5GQyBzdXBw
b3J0IHJlcXVpcmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBIaWdoU2llcnJh
IGFuZCBNb2phdmUuCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vY3Rh
cC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0g
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLW5m
Yy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1s
IFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhp
Z2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCisjIE5GQyBzdXBwb3J0IHJlcXVp
cmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBNb2phdmUuCitbIE1vamF2ZSBd
IGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMuaHRtbCBbIFNraXAgXQor
WyBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIF0gaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLW5mYy5odHRwcy5odG1s
IFsgU2tpcCBdCitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgXSBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbmZjLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE4Mzg3OCBtZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC11cC1jbGljay1vdmVyLW1lZGlhLWRv
ZXMtbm90LWRpbWlzcy1tZWRpYS1jb250cm9scy13aGVuLW1lZGlhLWlzLXBsYXlpbmcuaHRtbCBb
IFBhc3MgVGltZW91dCBdIAogCi13ZWJraXQub3JnL2IvMTkxNjU4IFsgU2llcnJhIFJlbGVhc2Ug
XSBmYXN0L2xheWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4tYWRkZWQtYWZ0ZXItdHJh
bnNmb3JtLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTk0
ODI2IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtYmxvY2stdG9wLWxl
dmVsLW5hdmlnYXRpb24tcmVkaXJlY3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5v
cmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtODkwLDE2ICs4NTIsMTYgQEAgd2Via2l0Lm9yZy9iLzE5
ODY2MyBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRo
ZW4tbmF2aWcKIAogd2Via2l0Lm9yZy9iLzE3NjAzMCBbIERlYnVnIF0gaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9zZW5kLW9iamVjdC10b3N0cmluZy1jaGVjay5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5ODkyMSBbIE1vamF2ZSsgXSB3ZWJncHUvYmxlbmQt
Y29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmdsZS1zdHJpcC5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5OTY1MSBbIE1vamF2ZSBE
ZWJ1ZyBdIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1sIFsgU2xvdyBdCiAKLXdl
YmtpdC5vcmcvYi8xOTkwODkgWyBNb2phdmUrIERlYnVnIF0gcGx1Z2lucy93aW5kb3ctb3Blbi5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTk5MDg5IFsgRGVidWcgXSBwbHVnaW5zL3dpbmRv
dy1vcGVuLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNTY1MDYwNjM+IExheW91
dCBUZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25u
ZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZSAo
MjAzMjU2KQogd2Via2l0Lm9yZy9iLzIwMzI1NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVjdGlvblN0YXRl
Lmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA1MzAxIFsgTW9q
YXZlKyBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1MzAxIGluc3BlY3Rvci9jYW52YXMvcmVx
dWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMDU4MDggZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdW5pY29kZS1iaWRpLW90aGVyLW5l
dXRyYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC0xMDc0LDQgKzEwMzYsNCBAQCB3ZWJr
aXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2ZpeGVk
L2ZvdXItYmFycy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5NjcyIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sIFsgUGFz
cyBGYWlsdXJlIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4OCBtZWRpYS9tb2Rlcm4tbWVk
aWEtY29udHJvbHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBwb3J0LWNsaWNrLmh0bWwg
WyBQYXNzIENyYXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2Iv
MjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci1zdXBwb3J0L3NjcnVi
YmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTEwMTExMTMyYzhlYWRlYjgxMGMwMDA2YWZj
YjcxYmFjNmU1ZGQ0Li40MDgwNWUxNGQwODM5ODkzMWRjNjk3NDExYWVlMWI0ODliNTM3ZDliIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQsOCArMzQs
NyBAQCBmYXN0L2V2ZW50cy9kby1ub3QtZHJhZy1hbmQtZHJvcC1kYXRhLWRldGVjdG9ycy1saW5r
Lmh0bWwgWyBQYXNzIF0KIAogaHR0cC90ZXN0cy9nemlwLWNvbnRlbnQtZW5jb2RpbmcgWyBQYXNz
IF0KIAotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ3pp
cC1jb250ZW50LXR5cGUtbm8tY29udGVudC1lbmNvZGluZy5odG1sIFsgRmFpbHVyZSBdCi1bIE1v
amF2ZSsgXSBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2d6aXAtY29udGVudC10eXBlLW5vLWNv
bnRlbnQtZW5jb2RpbmcuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9n
emlwLWNvbnRlbnQtdHlwZS1uby1jb250ZW50LWVuY29kaW5nLmh0bWwgWyBQYXNzIF0KIAogZmFz
dC90ZXh0L21hYyBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MTk2NCBmYXN0L3RleHQvbWFjL3Nl
bGVjdC1jaGFyYWN0ZXItYmVmb3JlLXplcm8td2lkdGgtam9pbmVyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KQEAgLTE0OCw5ICsxNDcsNiBAQCBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWljZS5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLW1lZGlhLXNldHVwLWNhbGxiYWNrcy1zaW5nbGUtZGlhbG9nLmh0bWwgWyBTa2lwIF0KIGZh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMuaHRtbCBbIFNraXAgXQogCi1b
IEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nRW5hYmxlZC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3Iv
cGFnZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIFsgU2tp
cCBdCi0KICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVidWcgXSBmYXN0L2ltYWdlcy9sYXJnZS1z
aXplLWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIApAQCAtNzY2LDcgKzc2Miw3IEBAIHdlYmtp
dC5vcmcvYi8xMzE4NTUgbWVkaWEvZXZlbnQtYXR0cmlidXRlcy5odG1sIFsgUGFzcyBGYWlsdXJl
IFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzEzMzM2MyBtZWRpYS92aWRlby1ydGwuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTMzNjg2IG1lZGlhL3RyYWNrL3cz
Yy9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xMzUwNzEgbWVkaWEvdmlkZW8tc2Vlay13aXRoLW5lZ2F0aXZlLXBsYXliYWNr
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzEzNTE2MCBbIFNpZXJyYSsgXSBt
ZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN1YnRpdGxlcy10b28tbGFyZ2UuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEzNTE2MCBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN1YnRp
dGxlcy10b28tbGFyZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzNTE2MCBtZWRp
YS90cmFjay90cmFjay1sb25nLXdvcmQtY29udGFpbmVyLXNpemluZy5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTM3MzExIG1lZGlhL3ZpZGVvLWZ1bGxzY3JlZW4tb25seS1wbGF5YmFj
ay5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KIHdlYmtpdC5vcmcvYi8xMzk3ODkgbWVkaWEv
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtdXBkYXRlcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAg
LTg1NCw3ICs4NTAsNyBAQCB3ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xz
LWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTIyMDIxIG1l
ZGlhL3ZpZGVvLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMTYyNjYgbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmcuaHRtbCBbIFNraXAg
XQogCi13ZWJraXQub3JnL2IvMTYzMjMxIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL2FpcnBs
YXktcGlja2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE2MzIzMSBtZWRp
YS9jb250cm9scy9haXJwbGF5LXBpY2tlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyAtLS0g
RW5kIG1lZGlhIHRlc3RzIC0tLQogd2Via2l0Lm9yZy9iLzEzNjk5NCBodHRwL3Rlc3RzL21lZGlh
L2hscy92aWRlby1jb29raWUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTAxMyw3ICsxMDA5LDYgQEAg
d2Via2l0Lm9yZy9iLzE0ODYzNiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9yLWR5bmFtaWMtc3BlY2lm
aWNpdHkuaHRtbCBbIFBhc3MgVGltZW8KIHdlYmtpdC5vcmcvYi8xNDg2MzYgaW5zcGVjdG9yL2Nz
cy9zZWxlY3Rvci1zcGVjaWZpY2l0eS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcv
Yi8xNTg3NDIgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1pbi1jb25zdHJ1Y3Rv
ci1iZWZvcmUtc3VwZXIuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTYzNjA0
IGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQotd2Via2l0Lm9yZy9iLzE2ODMzOCBbIFNpZXJyYSBdIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LWFjdGlvbi1kZXRhY2guaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQu
b3JnL2IvMTY1NzcyIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTYxMzg3IGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LWFjdGlvbi13aXRoLWV4Y2VwdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xNjQyOTMgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LXNjb3BlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTA1OSw3ICsxMDU0LDcgQEAgd2Vi
a2l0Lm9yZy9iLzE0OTEyOCBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAjIFRvdWNoIGV2ZW50cyBhcmUgbm90IGVuYWJsZWQgb24gTWFjCiB3ZWJraXQu
b3JnL2IvMTQ5NTkyIGZhc3Qvc2hhZG93LWRvbS90b3VjaC1ldmVudC1pb3MuaHRtbCBbIFNraXAg
XQogCi13ZWJraXQub3JnL2IvMTQ5ODE5IFsgRGVidWcgU2llcnJhKyBdIGNvbXBvc2l0aW5nL3Zp
ZGVvL3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTQ5ODE5
IFsgRGVidWcgXSBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCiB3ZWJraXQub3JnL2IvMTY4OTUzIFsgUmVsZWFzZSBdIGNvbXBvc2l0aW5nL3ZpZGVv
L3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTA5NiwyMSArMTA5MSwy
MSBAQCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3Rpb24tZWxlbWVudC10YWJiaW5nLXRvLWxpbmsu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTI1MDYgd2ViZ2wvMS4wLjMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQogCi13ZWJraXQub3JnL2IvMTU0NzA5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9jcmFzaC1jb21w
bGV4LXRleHQtc3Vycm9nYXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1
NDcwOSBmYXN0L3RleHQvY3Jhc2gtY29tcGxleC10ZXh0LXN1cnJvZ2F0ZS5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NTA5MiBqcy9hcnJheWJ1ZmZlci13cmFwcGVycy5o
dG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE1NTE0MCBqcy9wcm9taXNlcy10
ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xODcxMDMganMvZXJyb3Itc2hvdWxkLW5vdC1zdHJvbmctcmVmZXJlbmNlLWdsb2JhbC1v
YmplY3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE1NTUw
NSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91
c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9i
LzE1NTUwNSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91
c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdl
bnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTU0
Njg4IGluc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUtY29udHJvbGxlci5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE1NjExMiBbIFNpZXJyYSsgXSBtZWRpYS9hdWRpby1j
b250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU2
MTEyIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8xNTYxMTIgWyBTaWVycmErIF0gbWVkaWEvY29udHJvbHMtd2l0aG91
dC1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1NjExMiBtZWRp
YS9hdWRpby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTU2MTEyIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xNTYxMTIgbWVkaWEvY29udHJvbHMtd2l0aG91dC1wcmVsb2FkLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU2MzUxIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0LXByaXZhdGUuaHRtbCBbIFBhc3MgVGltZW91dCBd
CiAKQEAgLTExMjYsNDQgKzExMjEsNDQgQEAgd2Via2l0Lm9yZy9iLzE1ODEwMSBpbXBvcnRlZC9i
bGluay9odHRwL3Rlc3RzL3BsdWdpbnMvZ2V0LXVybC1ub3RpZnktb24tcmVtb3ZhbC4KIHdlYmtp
dC5vcmcvYi8xNTg1MzQgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2R5bmFtaWMtYmFja2Ryb3AtZmls
dGVyLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUaGVzZSB0ZXN0
cyBoYXJkY29kZSBwbGF0Zm9ybS1zcGVjaWZpYyBmb250IGFsaWFzZXMuCi13ZWJraXQub3JnL2Iv
MTU4NjQ5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9jaGluZXNlLWZvbnQtbmFtZS1hbGlhc2VzLTIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1ODY0OSBmYXN0L3RleHQv
Y2hpbmVzZS1mb250LW5hbWUtYWxpYXNlcy0yLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzE1ODg4OSBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4
LWV2ZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKLVsgU2llcnJhKyBdIGZhc3Qv
Y3NzL2FwcGVhcmFuY2UtYXBwbGUtcGF5LWJ1dHRvbi5odG1sIFsgUGFzcyBdCitmYXN0L2Nzcy9h
cHBlYXJhbmNlLWFwcGxlLXBheS1idXR0b24uaHRtbCBbIFBhc3MgXQogCiAjIDxyZGFyOi8vcHJv
YmxlbS8yMzUwMDMyNz4gc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS5odG1sCi1b
IFNpZXJyYSsgXSBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQorc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10YWJsZS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjM1MDQ3NDk+IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0gZmFpbGluZwotWyBTaWVy
cmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvcmVzcG9uc2UtbWV0aG9k
Lmh0bSBbIFBhc3MgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9yZXNwb25zZS1tZXRob2QuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2Js
ZW0vMjM1MDU1ODI+IEZhaWxzIG9uIGlNYWMxMCwxIGFuZCBpTWFjMTEsMQotWyBTaWVycmErIF0g
ZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQorZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1y
ZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFNpZXJyYSBzdXBwb3J0cyB0cnVlIGZv
bnQgZmVhdHVyZSBjb3ZlcmFnZSBxdWVyaWVzLiBXZSB1c2UgdGhlIC1jb3ZlcmFnZSB2ZXJzaW9u
cyBvZiB0aGVzZSB0ZXN0cyBpbnN0ZWFkLgotWyBTaWVycmErIF0gY3NzMy9mb250LXZhcmlhbnQt
c21hbGwtY2Fwcy1zeW50aGVzaXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmEr
IF0gY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBldGl0ZS1jYXBzLXN5bnRo
ZXNpcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1Mjc5
MTg5PiBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJl
LWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBpcyBmbGFreQotWyBTaWVycmErIF0gaHR0
cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFp
bi1mcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1NzgwMDM1PiBDU1AgZG9lcyBub3QgaWdub3Jl
IHBhdGhzIGZvciBtZWRpYSByZWRpcmVjdHMKLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBT
a2lwIF0KLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVv
LXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNjk1
MjYyNwotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13
aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tYWRkLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZp
bHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24uaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgt
Ym9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVy
LXJhZGl1cy1hbmQtcmVmbGVjdGlvbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
IyByZGFyOi8vcHJvYmxlbS8yNzE0MTI5MQotWyBTaWVycmErIF0gZWRpdGluZy9zZWxlY3Rpb24v
dHJpcGxlLWNsaWNrLWluLXByZS5odG1sIFsgRmFpbHVyZSBdCitlZGl0aW5nL3NlbGVjdGlvbi90
cmlwbGUtY2xpY2staW4tcHJlLmh0bWwgWyBGYWlsdXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8z
MTI0MzgyNAogd2Via2l0Lm9yZy9iLzE1ODc0NyBtZWRpYS9yZXN0b3JlLWZyb20tcGFnZS1jYWNo
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAogIyBTZWUgYWxzbyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDk0Ci13ZWJraXQub3JnL2IvMTUxMjg3IFsg
U2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL2lubGluZS1lbGVtZW50cy1kcm9wb2ZmLW9yZGVyLmh0
bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTEyODcgbWVkaWEvY29udHJvbHMvaW5saW5l
LWVsZW1lbnRzLWRyb3BvZmYtb3JkZXIuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTU4NTAwIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLXByaXZhdGUuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKQEAgLTExNzIsMjUgKzExNjcsMjUgQEAgd2Via2l0Lm9yZy9iLzE2MzEy
MiBpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWFmdGVyLWRlbGV0
aW9uLmgKIHdlYmtpdC5vcmcvYi8xMjgzMTIgbWVkaWEvdmlkZW8tbG9hZC1wcmVsb2FkLW1ldGFk
YXRhLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9ibGVtLzI3NDc1MTYyCi1b
IFNpZXJyYSsgXSBjb21wb3NpdGluZy92aWRlby9wb3N0ZXIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vt
b2ppLW51bS1nbHlwaHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJy
YSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItMy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi00Lmh0bWwgWyBQ
YXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdl
bmRlci0yLTUuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBm
YXN0L3RleHQvZW1vamktZ2VuZGVyLTItNi5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5
NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi03Lmh0bWwgWyBQYXNzIF0K
LXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0y
LTguaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3Rl
eHQvZW1vamktZ2VuZGVyLTItOS5odG1sIFsgUGFzcyBdCi0KLXdlYmtpdC5vcmcvYi8xNTk3NTUg
WyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTMuaHRtbCBbIFBhc3MgXQot
d2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZl
MGYtNC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3Qv
dGV4dC9lbW9qaS1nZW5kZXItZmUwZi01Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3
NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTYuaHRtbCBbIFBhc3Mg
XQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVy
LWZlMGYtNy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZh
c3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi04Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8x
NTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTkuaHRtbCBbIFBh
c3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2Vu
ZGVyLmh0bWwgWyBQYXNzIF0KK2NvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci5odG1sIFsgUGFzcyBJ
bWFnZU9ubHlGYWlsdXJlIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamkt
bnVtLWdseXBocy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9l
bW9qaS1nZW5kZXItMi0zLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90
ZXh0L2Vtb2ppLWdlbmRlci0yLTQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBm
YXN0L3RleHQvZW1vamktZ2VuZGVyLTItNS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5
NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi02Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcv
Yi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTcuaHRtbCBbIFBhc3MgXQord2Via2l0
Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOC5odG1sIFsgUGFzcyBdCit3
ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi05Lmh0bWwgWyBQYXNz
IF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtMy5o
dG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
ZmUwZi00Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2pp
LWdlbmRlci1mZTBmLTUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3Rl
eHQvZW1vamktZ2VuZGVyLWZlMGYtNi5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1
IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi03Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcv
Yi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTguaHRtbCBbIFBhc3MgXQord2Vi
a2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtOS5odG1sIFsgUGFz
cyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIuaHRtbCBbIFBh
c3MgXQogCiB3ZWJraXQub3JnL2IvMTYxMTQ0IGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nl
c3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLW1lbnUuaHRtbCBbIFNraXAgXQogCkBAIC0xMTk4LDE4
ICsxMTkzLDE0IEBAIHdlYmtpdC5vcmcvYi8xNjE4ODMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vbm9kZXMvUHJvY2Vzc2luZ0luc3RydWN0CiAKIHdlYmtpdC5vcmcvYi8xNjIz
MDggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtZHVyYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNjI1MjMg
WyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8x
NjI1MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2MjYy
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1saXZlc2Vla2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNjI2
NDcgWyBTaWVycmErIF0gaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmFib3J0LXJlc3BvbnNl
LWdldHRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYyNjQ3IGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvb25hYm9ydC1yZXNwb25zZS1nZXR0ZXJzLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYyODMwIFsgRGVidWcgXSBmYXN0L2V2ZW50cy90
YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBWYXJpYXRp
b24gZm9udHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBlYXJsaWVyIHRoYW4gSGlnaCBTaWVycmEuCi1b
IFNpZXJyYSBdIGZhc3QvdGV4dC92YXJpYXRpb25zIFsgUGFzcyBGYWlsdXJlIEltYWdlT25seUZh
aWx1cmUgXQotWyBTaWVycmEgXSBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucyBbIFBhc3MgRmFp
bHVyZSBJbWFnZU9ubHlGYWlsdXJlIFRpbWVvdXQgXQotCiBbIERlYnVnIF0gZmFzdC9zZWxlY3Rv
cnMvc2xvdy1zdHlsZS1zaGFyaW5nLXdpdGgtbG9uZy1jb3VzaW4tbGlzdC5odG1sIFsgU2tpcCBd
CiAKIHdlYmtpdC5vcmcvYi8xNjE3MjAgWyBEZWJ1ZyBdIHN0b3JhZ2UvaW5kZXhlZGRiL2tleS10
eXBlLWFycmF5Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTMwMSw4ICsxMjkyLDYgQEAgd2Vi
a2l0Lm9yZy9iLzE3MDgzMSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXJ0bC5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE2NTU1MyBtZWRpYS9tZWRpYS1jb250
cm9scy10aW1lbGluZS11cGRhdGVzLXdoZW4taG92ZXJlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzE3MTI3MiBbIFNpZXJyYSBdIGZhc3QvdGV4dC9rYWl0aGkuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcxNDY1IG1lZGlhL3RyYWNrL3Ry
YWNrLWluLWJhbmQtc3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8x
NzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4dC0wMTEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQpAQCAtMTMzNyw5ICsxMzI2LDYgQEAgd2Via2l0Lm9yZy9iLzE2OTE1
OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXN1cHBvcnQvdHJhY2tzLXN1cHBv
cnQtc2gKIAogd2Via2l0Lm9yZy9iLzE3MDkwNyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5cy9oa2RmLmh0dHBzLndv
cmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTczMzI4
IFsgU2llcnJhIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNrLWVtb2ppLmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzMzMjggWyBTaWVycmEgXSBmYXN0L3RleHQvc3lzdGVt
LWZvbnQtZmFsbGJhY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2Iv
MTc4MDgzIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGFpbnQtdG8tY2FudmFzLmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MzA2OCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9nZXRLZXkuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCkBAIC0xMzg3LDEyNiArMTM3MywxMjYgQEAgd2Via2l0Lm9yZy9iLzE2MTQ5MSBt
ZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1zY3JvbGwuaHRtbCBbIFBhc3MgRmFp
bHUKIHdlYmtpdC5vcmcvYi8xNzIwNTIgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmctc2V0aW50ZXJ2YWwuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBSRUdSRVNT
SU9OPyAoRm9udFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0qIGFuZCBz
dmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsg
XSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMS10LnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDMtYi5zdmcgWyBG
YWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNy1i
LnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWlu
dHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4x
L3RleHQtaW50cm8tMDItYi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzND
LVNWRy0xLjEvdGV4dC1pbnRyby0wMy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hT
aWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDMuc3ZnIFsgRmFpbHVyZSBdCi1bIEhp
Z2hTaWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dFBvc2l0aW9uMi5zdmcgWyBGYWlsdXJlIF0K
LVsgSGlnaFNpZXJyYSsgXSBzdmcvY3VzdG9tL2FjaWQzLXRlc3QtNzcuaHRtbCBbIEZhaWx1cmUg
XQotWyBIaWdoU2llcnJhKyBdIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL3dpY2QvdGVzdC1yaWdodHNpemluZy1iLnho
dG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRl
bnQvaW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSAgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDEtdC5zdmcgWyBGYWlsdXJlIF0K
K3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzND
LVNWRy0xLjEvZm9udHMtZWxlbS0wMy1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4x
L2ZvbnRzLWVsZW0tMDctYi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWlu
dHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0wMi1i
LnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDMtYi5zdmcgWyBG
YWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFpbHVyZSBd
CitzdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9iYXRpay90
ZXh0L3RleHRQb3NpdGlvbjIuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL2FjaWQzLXRlc3Qt
NzcuaHRtbCBbIEZhaWx1cmUgXQorc3ZnL2N1c3RvbS9zdmctZm9udHMtZmFsbGJhY2sueGh0bWwg
WyBGYWlsdXJlIF0KK3N2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54aHRtbCBbIEZhaWx1cmUg
XQorZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13
cmFwcGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8z
MDQ5MzkxMD4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0L3dyaXRpbmctbW9kZS9icm9rZW4t
aWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC93
cml0aW5nLW1vZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0bWwgWyBGYWlsdXJlIElt
YWdlT25seUZhaWx1cmUgXQorZmFzdC93cml0aW5nLW1vZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFs
bC1jYXBzLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJv
YmxlbS8zMDE4MjQwMT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLWFib3J0LXJlc2V0cy1wYXJzZXIuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVy
cmErIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hYm9ydC1yZXNldHMtcGFyc2Vy
Lmh0bWwgWyBGYWlsdXJlIF0KK21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWJvcnQt
cmVzZXRzLXBhcnNlci5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMwNTE3
MjgzPiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBzZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwgYW5k
IHNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsg
XSBzZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwKLVsgSGlnaFNpZXJyYSsgXSBzZWN1cml0eS9ibG9j
ay10ZXN0LW5vLXBvcnQuaHRtbAorc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCitzZWN1cml0eS9i
bG9jay10ZXN0LW5vLXBvcnQuaHRtbAogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMTE3Nzk5MD4gUkVH
UkVTU0lPTjogY2FudmFzLzJkLmdyYWRpZW50LiogTGF5b3V0VGVzdHMgZmFpbGluZwogIyBUaGVz
ZSBhcmUgaW1wb3J0ZWQgdGVzdHMsIHNvIHdlJ2xsIGhhdmUgdG8gcHVzaCBjaGFuZ2VzIGJhY2sg
dG8gVzNDLgotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQu
bGluZWFyLnRyYW5zZm9ybS4xLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBv
cnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zvcm0uMi5odG1sIFsgRmFp
bHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5s
aW5lYXIudHJhbnNmb3JtLjMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9y
dGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuYm90dG9tLmh0bWwgWyBGYWls
dXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJh
ZGlhbC5jb25lLmN5bGluZGVyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBv
cnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWls
dXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJh
ZGlhbC5jb25lLnNoYXBlMS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0
ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCBbIEZhaWx1cmUg
XQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFs
Lmluc2lkZTEuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTIuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTMu
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQu
Z3JhZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsg
XSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5vdXRzaWRlMi5odG1sIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVu
dC5yYWRpYWwub3V0c2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9y
dGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5odG1sIFsgRmFpbHVyZSBd
Ci1bIEhpZ2hTaWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWJsZW5kaW5nLWZpbGwtc3R5bGUu
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL2NhbnZhcy1jdXJy
ZW50Q29sb3IuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2FudmFzL3Nl
dC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVu
dC5saW5lYXIudHJhbnNmb3JtLjEuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZh
cy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjIuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0
ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjMuaHRtbCBbIEZhaWx1
cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS5ib3R0b20u
aHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwu
Y29uZS5jeWxpbmRlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdy
YWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuc2hhcGUxLmh0bWwgWyBGYWlsdXJlIF0KK2lt
cG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUudG9wLmh0bWwgWyBGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTEuaHRt
bCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuaW5z
aWRlMi5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJh
ZGlhbC5pbnNpZGUzLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3Jh
ZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUzLmh0bWwgWyBGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5odG1sIFsgRmFp
bHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZmlsbC1zdHlsZS5odG1sIFsgRmFp
bHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwgWyBGYWlsdXJlIF0K
K2Zhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJv
YmxlbS8zMTMyMjQyNT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRpYS92aWRlby1vcmllbnRh
dGlvbi5odG1sIGlzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBtZWRpYS92aWRlby1vcmllbnRh
dGlvbi5odG1sIFsgRmFpbHVyZSBdCittZWRpYS92aWRlby1vcmllbnRhdGlvbi5odG1sIFsgRmFp
bHVyZSBdCiAKICMgV2ViQ3J5cHRvQVBJIGZlYXR1cmVzIHRoYXQgZW5hYmxlZCBvbmx5IGZvciBI
aWdoIFNpZXJyYS9pT1MgMTEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vud3JhcEtl
eS5odHRwcy53b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvd3JhcEtleV91bndyYXBL
ZXkvdGVzdF93cmFwS2V5X3Vud3JhcEtleS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsg
SGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1q
d2stc2hhMS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2Et
cHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hT
aWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNo
YTI1Ni5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVy
cmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTUx
Mi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdl
bmVyYXRlLWV4cG9ydC1rZXktcGtjczguaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNy
eXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFBhc3Mg
XQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1rZXkuaHRt
bCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQt
andrLXByaXZhdGUta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3Vi
dGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVi
bGljLWtleS1zaGExLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxl
L3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTIyNC5odG1sIFsgUGFzcyBdCi1bIEhp
Z2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1z
aGEyNTYuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJy
YSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTUxMi5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlw
dG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNp
ZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBh
c3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtcGtjczgt
a2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
aW1wb3J0LXNwa2kta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmEr
IF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1zcGtpLWtleS5odG1sIFsgUGFzcyBdCi1b
IEhpZ2hTaWVycmErIF0gY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1z
aWduLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vd29ya2Vycy9zdWJ0bGUv
cnNhLXBzcy1pbXBvcnQta2V5LXZlcmlmeS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0g
aHR0cC93cHQvY3J5cHRvL3JzYS1wc3MtY3Jhc2guYW55Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNp
ZXJyYSsgXSBodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkud29ya2VyLmh0bWwgWyBQ
YXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBL
ZXlfdW53cmFwS2V5L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtlci5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dy
YXBLZXlfdW53cmFwS2V5L3Rlc3Rfd3JhcEtleV91bndyYXBLZXkuaHR0cHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2st
c2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0
LWtleS1qd2stc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5l
cmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9y
c2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhNTEyLmh0bWwgWyBQ
YXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNw
a2kuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWtleS5odG1s
IFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wcml2YXRlLWtleS5o
dG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5
LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0
LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBh
c3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGE1MTIu
aHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktc2lnbi1sYXJn
ZS1zYWx0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5LXNp
Z24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5
Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtcGtjczgta2V5Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1rZXktZW1wdHkt
dXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtc3BraS1r
ZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtl
eS1zaWduLmh0bWwgWyBQYXNzIF0KK2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KK2h0dHAvd3B0L2NyeXB0by9yc2EtcHNzLWNyYXNo
LmFueS5odG1sIFsgUGFzcyBdCitodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnkud29y
a2VyLmh0bWwgWyBQYXNzIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzIzNTI3MDI+IFJFR1JFU1NJ
T046IGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMgTGF5b3V0VGVz
dHMgZmFpbGluZwotWyBIaWdoU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0
ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHkuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2
YW5jeS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWFw
cGVhcmFuY2VzLWNhcGFjaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVs
ZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5odG1sIFsgRmFpbHVyZSBd
CiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNjIwMDI0PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFuZCBpbXBvcnRl
ZC93M2MvY2FudmFzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFyZSBmYWlsaW5nCi1bIEhp
Z2hTaWVycmErIF0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXRoLnN0cm9rZS5zY2FsZTIuaHRt
bCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0
aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
cGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMv
MmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2Js
ZW0vMzI3OTk1NzM+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L2lwYS10b25lLWxl
dHRlcnMuaHRtbCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L2lwYS10b25l
LWxldHRlcnMuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC90ZXh0L2lwYS10b25lLWxldHRlcnMuaHRt
bCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMjc5OTYyND4gUkVHUkVTU0lPTjog
TGF5b3V0VGVzdHMgY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lzLWNvdmVy
YWdlLmh0bWwgYW5kIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLWNvdmVy
YWdlLmh0bWwgYXJlIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjc3MzL2ZvbnQtdmFyaWFudC1w
ZXRpdGUtY2Fwcy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
WyBIaWdoU2llcnJhKyBdIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMtc3ludGhlc2lzLWNv
dmVyYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBldGl0
ZS1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3Mz
L2ZvbnQtdmFyaWFudC1zbWFsbC1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNzk5NTk2PiBSRUdSRVNTSU9OOiBM
YXlvdXRUZXN0cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnNv
bGlkLmh0bWwgYW5kIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQuaW50ZXJwb2xhdGUu
c29saWQuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVy
cmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5o
dG1sIFsgRmFpbHVyZSBdCitjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9s
YXRlLnNvbGlkLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGll
bnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxl
bS8zMjgwMDA5NT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBpbXBvcnRlZC9ibGluay9mYXN0L2dy
YWRpZW50cy9ncmFkaWVudC10cmFuc3BhcmVuY3kuaHRtbCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVy
cmErIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtdHJhbnNwYXJlbmN5
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3QvZ3JhZGllbnRz
L2dyYWRpZW50LXRyYW5zcGFyZW5jeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJk
YXI6Ly9wcm9ibGVtLzMyODI2MzkxPiBMYXlvdXRUZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL3NldHJlcXVlc3RoZWFkZXItY29udGVudC10eXBlLmh0bSBpcyBmYWlsaW5n
IG9uIEhpZ2ggU2llcnJhCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRlci1jb250ZW50LXR5cGUuaHRtIFsgRmFpbHVyZSBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZXRyZXF1ZXN0aGVhZGVyLWNv
bnRlbnQtdHlwZS5odG0gWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzI4NjQzMDY+
IFVuc2tpcCBhZnRlciBib3RzIGhhdmUgQ1RGb250Q29weVBoeXNpY2FsRm9udCgpCi1bIEhpZ2hT
aWVycmErIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWphcGFuZXNlLXN5bnRoZXRpYy1pdGFsaWMu
aHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvc3lzdGVtLWZvbnQtamFw
YW5lc2Utc3ludGhldGljLWl0YWxpYy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
IyBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHZhcmlhdGlvbiBmb250cyBhcmUgZGlzYWJsZWQg
b24gT1NlcyB3aGljaCBkb24ndCBzdXBwb3J0IHRoZW0uIFNvLAogIyB0aGUgdGVzdCBzaG91bGQg
YmUgc2tpcHBlZCBvbiBPU2VzIHdoaWNoIGRvIHN1cHBvcnQgdGhlbS4gQXMgc29vbiBhcyBhbGwg
T1NlcyBzdXBwb3J0IHRoZW0sCiAjIHdlIHNob3VsZCBkZWxldGUgdGhlIHRlc3QuCi1bIEhpZ2hT
aWVycmErIF0gZmFzdC90ZXh0L2ZvbnQtdmFyaWF0aW9ucy1mZWF0dXJlLWRldGVjdGlvbi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvZm9udC12YXJpYXRpb25zLWZlYXR1cmUt
ZGV0ZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
MzM0Mzc1OTc+IE11bHRpcGxlIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gg
YXJlIGZhaWxpbmcgb24gSGlnaCBTaWVycmEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55Lndv
cmtlci5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmFueS5odG1sIFsg
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNp
Yy9yZXF1ZXN0LWhlYWRlcnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55
Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM3MzEwODY+Ci1bIEhpZ2hT
aWVycmErIF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RpbWUtbGFiZWxzLXN1cHBvcnQv
ZWxhcHNlZC10aW1lLmh0bWwgWyBTa2lwIF0KK21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy90
aW1lLWxhYmVscy1zdXBwb3J0L2VsYXBzZWQtdGltZS5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzMzODUwMTg5PgotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbCBbIEZhaWx1cmUgXQoraHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1lLXBhcmFtZXRlci5odG1s
IFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzczMTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZm9ybS1lbGVtZW50L2Zvcm0tZWxl
bWVudHMtZmlsdGVyLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtMTUyMCwxOSArMTUwNiw5IEBAIHdl
YmtpdC5vcmcvYi8xNzc4MjYgaW5zcGVjdG9yL2RvbS9jc3AtYmlnNS1oYXNoLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTc1OTk4IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2luc2VjdXJlLWNzcy13aXRoLXNlY3VyZS1jb29raWVzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi0jIEFWQ29udGVudEtleVNlc3Npb24gbm90IGF2YWlsYWJsZSBwcmUtSGlnaCBT
aWVycmEKLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMt
Y3JlYXRlTWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtcmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzLmh0bWwg
WyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9m
cHMtY3JlYXRlU2Vzc2lvbi5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIHBsYXRmb3JtL21hYy9t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBdCi1b
IFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWVuY3J5cHRl
ZC1ldmVudC5odG1sIFsgU2tpcCBdCi0KICMgVXNlci1pbnN0YWxsZWQgZm9udCBpbmZyYXN0cnVj
dHVyZSBpcyBvbnkgcHJlc2VudCBvbiBjZXJ0YWluIE9TZXMuCi13ZWJraXQub3JnL2IvMTgwMDYy
IFsgU2llcnJhIEhpZ2hTaWVycmEgXSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvZGlz
YWJsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3Qv
dGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3QvdGV4dC91c2VyLWluc3RhbGxl
ZC1mb250cy9zaGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE4
NzIyOCBbIFNpZXJyYSBIaWdoU2llcnJhIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRz
L2xvY2FsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogCiB3ZWJraXQub3JnL2IvMTgwNTYw
IGFjY2Vzc2liaWxpdHkvbWFjL2h0bWw1LWlucHV0LW51bWJlci5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIApAQCAtMTU0NiwxMCArMTUyMiw2IEBAIHdlYmtpdC5vcmcvYi8xODE0NzkgaHR0cC90ZXN0
cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsgUGFzcyBJbWFnCiAKIHdl
YmtpdC5vcmcvYi8xODE0OTQgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tdWx0aXBsZS1saXZlcmVn
aW9ucy1ub3RpZmljYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgQSBsb3Qgb2YgR1BV
IGhhcmR3YXJlIHNpbXBseSBjcmFzaGVzIHdpdGggdGhlc2UgdGVzdHMsIHNpbmNlIHRoZXkgYWxs
b2NhdGUgYSBsb3Qgb2YgbWVtb3J5LgotIyBUaGV5IGFyZSBlbmFibGVkIG9uIHN5c3RlbXMgdGhh
dCBpbnN0ZWFkIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZLgotWyBTaWVycmEgXSBmYXN0L2NhbnZh
cy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXdpdGgtc3Vic2VxdWVudC1kcmF3cy5odG1sIFsgU2tp
cCBdCi0KIHdlYmtpdC5vcmcvYi8xODAyNjAgaHR0cC93cHQvcmVzb3VyY2UtdGltaW5nL3J0LXJl
c291cmNlcy1wZXItd29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTgxODMwIFsgRGVidWcgXSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1kZW55
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtMTU2Miw3ICsxNTM0LDcgQEAgd2Via2l0Lm9yZy9i
LzE4MTU2NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb24KIAogd2Via2l0Lm9yZy9iLzE4MTk2OSBmYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTgxODMxIFsgSGlnaFNpZXJyYSsgXSBm
YXN0L2Zvcm1zL3NlYXJjaGZpZWxkLWhlaWdodHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTgxODMxIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVpZ2h0cy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3Mzk0NiBbIERlYnVnIF0gbWVkaWEvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL2Z1bGxzY3JlZW4tc3VwcG9ydC9mdWxsc2NyZWVuLXN1cHBvcnQtcHJl
c3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTE1NzksMTUgKzE1NTEsMTIgQEAgd2Via2l0
Lm9yZy9iLzE4Mzc2NCBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0tY29udHJvbC1jb2xvcnMuaHRtbCBb
IFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTg0MTE2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4Ny1ldmVudF9vcmRlci5o
dG0gWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc3NjE2IFsgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRU
aW1lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE3NzYxNiBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRUaW1lLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTg0NjEwIG1lZGlhL3ZpZGVvLXZvbHVtZS1z
bGlkZXItZHJhZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE4NDYxMiBt
ZWRpYS9hdWRpby1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAot
IyBGb250IGNvbGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGV2ZXJ5IE9TLgotd2Via2l0
Lm9yZy9iLzE4NDYyNCBbIFNpZXJyYSBdIGZhc3QvdGV4dC9mb250LWNvbGxlY3Rpb24uaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg0NDU3IG1lZGlhL3ZpZGVvLWFz
cGVjdC1yYXRpby5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NDYwOSBw
bGF0Zm9ybS9tYWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS12aWRlby10cmFjay1jaGFu
Z2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xNTk5LDEzICsxNTY4LDYgQEAgd2Via2l0Lm9y
Zy9iLzE4NTY1OSBbIERlYnVnIF0gYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHUKICMgbWFjT1MgZG9lc24ndCBoYXZlIElDVSB2NTkKIHdlYmtpdC5vcmcv
Yi8xODUzNzUganMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmh0bWwgWyBGYWls
dXJlIF0KIAotIyA8PSBIaWdoIFNpZXJyYSBkb2Vzbid0IHN1cHBvcnQgTW9kZXJuIEVNRQotWyBI
aWdoU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRl
TWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWNyZWF0ZVNlc3Npb24uaHRtbCBbIFNraXAgXQotWyBIaWdo
U2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtZW5jcnlwdGVk
LWV2ZW50Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hT
aWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Zwcy1yZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQotCiAjIEltcG9ydGVkIGNzcy10ZXh0IHRl
c3Qgc3VpdGUgZnJvbSBXUFQKIHdlYmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQtbGluZS1icmVhay1vcGNs
bnMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODMyNTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQt
bGluZS1icmVhay1vcGNsbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE2Mjks
NTYgKzE1OTEsNTAgQEAgZmFzdC9jc3MvcHNldWRvLXZpc2l0ZWQtYmFja2dyb3VuZC1jb2xvci1v
bi1pbnB1dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODczOTMg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvaW1hZ2ViaXRtYXAvY3Jl
YXRlSW1hZ2VCaXRtYXAtb3JpZ2luLnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotWyBNb2ph
dmUrIF0gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQoraHR0cC90ZXN0cy9j
b29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSA8
cmRhcjovL3Byb2JsZW0vNDcxNjU5Mzk+IGlzIGZpeGVkLgotWyBNb2phdmUrIF0gaHR0cC90ZXN0
cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMuaHRtbCBb
IFNraXAgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSB0aGUgZml4IGZvciA8cmRhcjov
L3Byb2JsZW0vNDIyNTUyNTE+IGlzIHNoaXBwZWQuCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nv
b2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1jcm9zcy1zaXRlLWNvb2tpZXMucGhwIFsg
U2tpcCBdCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL3NldC1maXJz
dC1wYXJ0eS1zYW1lLXNpdGUtY29va2llcy5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY29va2ll
cy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LWNyb3NzLXNpdGUtY29va2llcy5waHAgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LXNhbWUtc2l0
ZS1jb29raWVzLnBocCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zNjYzOTExNz4gUkVH
UkVTU0lPTiAoTW9qYXZlKTogTGF5b3V0VGVzdCBzdmcvY3VzdG9tL3N1YnBhdGhzLW1vdmV0by1v
bmx5LXJlbmRlcmluZy5zdmcgaXMgZmFpbGluZwotWyBNb2phdmUrIF0gc3ZnL2N1c3RvbS9zdWJw
YXRocy1tb3ZldG8tb25seS1yZW5kZXJpbmcuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3VzdG9tL3N1
YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjov
L3Byb2JsZW0vNDA0OTgyOTA+IFJFR1JFU1NJT04gKE1vamF2ZSk6IEhUTUxNZXRlckVsZW1lbnQg
TGF5b3V0VGVzdHMgZmFpbGluZwotWyBNb2phdmUrIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVu
dC9tZXRlci1ib3VuZGFyeS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZmFz
dC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXJlcGFpbnQtb24tdXBkYXRlLXZh
bHVlLmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1l
bnQvbWV0ZXItZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBmYXN0L2RvbS9I
VE1MTWV0ZXJFbGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZl
KyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0bWwgWyBGYWlsdXJl
IF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYm91bmRhcnktdmFsdWVzLmh0bWwg
WyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC1yZXBh
aW50LW9uLXVwZGF0ZS12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJF
bGVtZW50L21ldGVyLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9kb20vSFRNTE1ldGVy
RWxlbWVudC9tZXRlci1vcHRpbXVtcy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0
ZXJFbGVtZW50L21ldGVyLXN0eWxlcy5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9i
bGVtLzQxMTAzMjYwPiBSRUdSRVNTSU9OIChNb2phdmUpOiBUaHJlZSB0ZXh0IHRlc3RzIGZhaWxp
bmcgd2l0aCBzbWFsbCBhbnRpYWxpYXNpbmcoPykgZGlmZnMKLVsgTW9qYXZlKyBdIGZhc3QvaW5s
aW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1bIE1vamF2
ZSsgXSBpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNoYXBpbmct
YXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGltcG9ydGVkL2Js
aW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29t
YmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyA8IE1vamF2ZSB1c2Vz
IGZvbnQgc21vb3RoaW5nLgotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNvbXBvc2l0aW5nL2NvbnRl
bnRzLWZvcm1hdC9zdWJwaXhlbC1hbnRpYWxpYXNlZC10ZXh0Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK2Zhc3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCitpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNoYXBp
bmctYXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5rL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29tYmluaW5nLW1h
cmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8IE1vamF2ZSBkb2Vzbid0IHN1cHBv
cnQgdGhlIENHIG5lZWRlZCBmb3IgQ29uaWMgR3JhZGllbnRzCi1bIE1vamF2ZSsgXSBodHRwL3dw
dC9jc3MvY3NzLWltYWdlcy00L2NvbmljLWdyYWRpZW50LXBhcnNpbmcuaHRtbCBbIFBhc3MgXQot
WyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLmh0bWwgWyBQYXNzIF0K
LVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZl
KyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLW9mZi1jZW50ZXIuaHRtbCBbIFBhc3MgXQotWyBNb2ph
dmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtY2VudGVyLW91dHNpZGUtYm94Lmh0bWwgWyBQYXNz
IF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWV4dGVuZGVkLXN0b3BzLmh0bWwg
WyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWZyb20tYW5nbGUuaHRt
bCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLWxh
c3Qtc3RvcC5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1n
cmFkaWVudC1hbHBoYS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9j
b25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBm
YXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBm
YXN0L2dyYWRpZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3MgXQoraHR0cC93cHQvY3Nz
L2Nzcy1pbWFnZXMtNC9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qv
Z3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9j
b25pYy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1vZmYtY2VudGVyLmh0bWwg
WyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLWNlbnRlci1vdXRzaWRlLWJveC5odG1sIFsg
UGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBd
CitmYXN0L2dyYWRpZW50cy9jb25pYy1mcm9tLWFuZ2xlLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3Jh
ZGllbnRzL2NvbmljLXJlcGVhdGluZy1sYXN0LXN0b3AuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFk
aWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMv
Y29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtdHdv
LWhpbnRzLmh0bWwgWyBQYXNzIF0KIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWltYWdlcy9tdWx0aXBsZS1wb3NpdGlvbi1jb2xvci1zdG9wLWNvbmlj
Lmh0bWwgWyBQYXNzIF0KIAogIyBEYXJrIE1vZGUgaXMgTW9qYXZlIGFuZCBsYXRlci4KLVsgTW9q
YXZlKyBdIGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUv
b2xkZXItc3lzdGVtcyBbIFNraXAgXQotWyBNb2phdmUrIF0gaW5zcGVjdG9yL2Nzcy9mb3JjZS1w
YWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBdCi0KLSMgVGVz
dCBEYXJrIE1vZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24gb2xkZXIgc3lzdGVtcy4K
LVsgU2llcnJhIEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3RlbXMgWyBQYXNz
IF0KK2Nzcy1kYXJrLW1vZGUgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUvb2xkZXItc3lzdGVtcyBb
IFNraXAgXQoraW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3Mg
XQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1s
IFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODk2ODYgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZl
ci12aWV3Lmh0bWwgWyBTbG93IF0KIApAQCAtMTY5NCwxNCArMTY1MCw2IEBAIHdlYmtpdC5vcmcv
Yi8xOTA4OTIgWyBEZWJ1ZyBdIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNj
L3RleC11bnBhY2stCiAKIHdlYmtpdC5vcmcvYi8xOTA5NzYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdldHlwZS1wbGF5Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIHdl
YmdwdSBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBpbnNwZWN0
b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdENsaWVudE5v
ZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJy
YSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvY2FudmFz
L3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1
IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3Zl
LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBd
IGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1sIFsgU2tpcCBdCi0KIHdl
YmtpdC5vcmcvYi8xODk2ODAgcGxhdGZvcm0vbWFjL21lZGlhL2F1ZGlvLXNlc3Npb24tY2F0ZWdv
cnktdmlkZW8tcGF1c2VkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTk1
NDY2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXkuaHRtbCBbIFBh
c3MgRmFpbHVyZSBDcmFzaCBdCkBAIC0xNzI5LDcgKzE2NzcsNyBAQCB3ZWJraXQub3JnL2IvMTk2
MTEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0aW9ucy9jc3Mt
c3R5bGluZwogIyBGbGFreSBmb3Igbm9uIE1hdGhNTCBjb3JlLgogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9zY3JpcHRzL2NyYW1wZWQt
MDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk2NTAgWyBIaWdoU2ll
cnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL3ByZXNzLW5vdC13b3JrLWZvci1kaXNhYmxlZC1tZW51
LWxpc3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk2NTAgYWNjZXNzaWJp
bGl0eS9tYWMvcHJlc3Mtbm90LXdvcmstZm9yLWRpc2FibGVkLW1lbnUtbGlzdC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogIyBTa2lwIGlPUy1zcGVjaWZpYyBQb2ludGVyIEV2ZW50cyBXUFQgdGVz
dHMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJldmVudHMvcG9pbnRl
cmV2ZW50X2NoYW5nZS10b3VjaC1hY3Rpb24tb25wb2ludGVyZG93bl90b3VjaC5odG1sIFsgU2tp
cCBdCkBAIC0xNzQ0LDE2ICsxNjkyLDE2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyZXZlbnRfcG9pbnRlcm91dF9wZW4uaHRtbCBbCiAKIHdl
YmtpdC5vcmcvYi8xOTc0NzMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJj
ZS10aW1pbmcvcmVzb3VyY2UtdGltaW5nLWxldmVsMS5zdWIuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKLXdlYmtpdC5vcmcvYi8xMzY2MjcgWyBNb2phdmUrIF0gbWVkaWEvdHJhY2svdHJhY2stY3Vl
LXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTM2NjI3
IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUg
XQogCiAjIDxyZGFyOi8vcHJvYmxlbS80NzA4ODkzOT4KLVsgTW9qYXZlKyBdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtbWVkaWFlbGVt
ZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9tZWRpYUVsZW1lbnRBdWRpb1NvdXJjZVRvU2Ny
aXB0UHJvY2Vzc29yVGVzdC5odG1sICBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gd2ViYXVkaW8v
cmVhbHRpbWVhbmFseXNlci1mZnQtc2NhbGluZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLVsgTW9q
YXZlKyBdIHdlYmF1ZGlvL29zY2lsbGF0b3Itc2luZS5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW1lZGlhZWxl
bWVudGF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VUb1Nj
cmlwdFByb2Nlc3NvclRlc3QuaHRtbCAgWyBGYWlsdXJlIF0KK3dlYmF1ZGlvL3JlYWx0aW1lYW5h
bHlzZXItZmZ0LXNjYWxpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJhdWRpby9vc2NpbGxh
dG9yLXNpbmUuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTk5MDEzIFsgRGVidWcgTW9q
YXZlKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9DcmVhdGUt
U2VjdXJlLXZlcmlmeS11cmwtc2V0LW5vbi1kZWZhdWx0LXBvcnQuYW55Lmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzE5OTAxMyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL0NyZWF0ZS1TZWN1cmUtdmVyaWZ5LXVybC1zZXQtbm9u
LWRlZmF1bHQtcG9ydC5hbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8x
OTA4ODIgWyBNb2phdmUrIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFuaW0uaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTkwODgyIGFuaW1hdGlvbnMvY2hhbmdlLW9uZS1hbmlt
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80ODc4MTA5OD4KIFsg
Q2F0YWxpbmErIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgUGFzcyBd
CkBAIC0xODQ3LDE0ICsxNzk1LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDI1MjMgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvcGF0aC1vYmplY3RzLzJkLnBhCiAKIHdlYmtp
dC5vcmcvYi8yMDI1OTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQv
bGluZS1zdHlsZXMvMmQubGluZS5jYXAucm91bmQuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQu
b3JnL2IvMTk4ODY3IFsgTW9qYXZlKyBdIHdlYmdsL21hbnktY29udGV4dHMuaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzE5ODg2NyB3ZWJnbC9tYW55LWNvbnRleHRzLmh0bWwgWyBTa2lwIF0K
IAogd2Via2l0Lm9yZy9iLzIwMzE3MSBpbnNwZWN0b3IvbGF5ZXJzL2xheWVycy1mb3Itbm9kZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzQxNiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvYmVmb3JlLWxvYWQtMDAxLmh0
bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwMzMwNSBbIEhpZ2hTaWVycmEgRGVidWcg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvcHJv
cGVydGllcy12YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjAz
MzA1IFsgSGlnaFNpZXJyYSBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVyaXQtMDAxLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NyBbIERlYnVnIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL2V2ZW50LWRpc3BhdGNoLnRl
bnRhdGl2ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzNTYgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9w
cm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTg3MCw3ICsx
ODE2LDcgQEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9q
aS1nZW5kZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8yMDQ4MjAgWyBD
YXRhbGluYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9lbW9qaS1n
ZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDQyNDYg
WyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVk
aXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDQyNDYgWyBDYXRhbGlu
YSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0MjQ3IFsgQ2F0YWxpbmEg
XSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAt
MTg4NSwyMCArMTgzMSwyMCBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdlYmF1ZGlvL3NpbGVudC1h
dWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNzCiB3ZWJraXQub3JnL2Iv
MjA1NzU3IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtdXBsb2FkLXNp
emUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjA1NzU2IHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlMi9nbHNsMy9uby1hdHRyaWJ1dGUtdmVydGV4LXNoYWRlci5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNTg2MiBbIE1vamF2ZSsgXSB3ZWJncHUvd2hs
c2wvd2hpbGUtbG9vcC1icmVhay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMDU4NjUgWyBNb2phdmUrIF0gd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItdmFy
aWFibGUtbGlmZXRpbWUtMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMDU4NjcgWyBNb2phdmUrIF0gd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1ODYyIHdlYmdwdS93
aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci12YXJpYWJsZS1saWZl
dGltZS0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNTg2
NyB3ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5NzIwNCB3ZWJleHBvc2VkL2Nzcy1wcm9wZXJ0aWVzLWJl
aGluZC1mbGFncy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUgbmF2aWdhdG9yLmxhbmd1
YWdlIHRlc3RzIHJlbHkgb24gZnVuY3Rpb25hbGl0eSBvbmx5IGF2YWlsYWJsZSBpbiByZWNlbnQg
cmVsZWFzZXMgb2YgbWFjT1MgQ2F0YWxpbmEgYW5kIG9ud2FyZC4KLXdlYmtpdC5vcmcvYi8yMDAw
NDMgWyBTaWVycmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsgUGFzcyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMDAwNDMgWyBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdlIFsgUGFzcyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N2Zy9pbXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcgWyBGYWlsdXJlIFBhc3Mg
XQogCiAjIExvY2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5hYmxlZCBvbiBjZXJ0YWlu
IE9TZXMuCi13ZWJraXQub3JnL2IvNzc1NjggWyBTaWVycmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0
YWxpbmEgXSBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzc3NTY4IFsgU2llcnJhIEhpZ2hTaWVycmEgTW9qYXZlIENhdGFsaW5h
IF0gZmFzdC90ZXh0L2xvY2FsZS1zaGFwaW5nLWNvbXBsZXguaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzc3NTY4IFsgTW9qYXZlIENhdGFsaW5hIF0gZmFzdC90ZXh0L2xv
Y2FsZS1zaGFwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi83NzU2
OCBbIE1vamF2ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy1jb21wbGV4Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzIyMiBzdmcvd2ljZC9y
aWdodHNpemluZy1ncmlkLnhodG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMjAxOSw4ICsxOTY1
LDggQEAgd2Via2l0Lm9yZy9iLzIwOTA4NCBjc3MzL3NlbGVjdG9yczMveG1sL2NzczMtbW9kc2Vs
LWQ0LnhtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA3MTUwIHBsYXRmb3JtL21h
Yy93ZWJydGMvY2FwdHVyZUNhbnZhcy13ZWJydGMtc29mdHdhcmUtZW5jb2Rlci5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAogIyBUaGUgbGluZSBicmVha2luZyBydWxlcyBjaGFuZ2VkIGluIElDVSA2
Ni4gV2UndmUgdXBkYXRlZCB0aGUgdGVzdHMgdG8gbWF0Y2gsIGJ1dCBvbGQgcGxhdGZvcm1zIHdv
bid0IGdldCB1cGRhdGVkIGxpbmUgYnJlYWtpbmcgcnVsZXMuCi13ZWJraXQub3JnL2IvMjA5MjUw
IFsgU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0
L2xpbmUtYnJlYWsvbGluZS1icmVhay1ub3JtYWwtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIwOTI1MCBbIFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJlYWstc3RyaWN0LTAxNS54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDkyNTAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1icmVhay9saW5lLWJyZWFrLW5v
cm1hbC0wMTUueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA5MjUwIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGlu
ZS1icmVhay1zdHJpY3QtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMjA3ODU4IGZhc3QvY2FudmFzL3dlYmdsL3NpbXVsYXRlZC12ZXJ0ZXhBdHRyaWIwLWludmFs
aWQtaW5kaWNpZXMuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5
bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9p
bnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1YjhmZTRjYzI2ZDRiMmQy
NjRjMmVlNWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjQg
KzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpX
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9m
ICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBv
ZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLTEyMzQ1Ngot
MTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEsNTcyLDAsMTgKLTEwLDU3
Miw4LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5LDE4Ci0xMCw1NzIsNTEs
MTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMsMTgKLTAsMCwwLDAKLTAs
MCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXggNWFhY2UwNzQwMTAxMDYw
ZWNjYzQ5MjA1NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1MmQwOGRmNWMzZDMyYzQx
MjFlMDQyNzQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBAIFRlc3RpbmcgdGV4dCB3
aXRoIGJyIGVsZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4pCiAoMSwgMTAwKTogaGVs
bG8KICg2LCAxKToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQKLSgxMDAsIDEwMCk6IHVu
ZGVmaW5lZAorKDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1
YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4ZTEwNjAzOWYxNTMxM2Y0
ZGM0MmExNDRlZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUwODEyYjc3OGYzMmJkZjVl
ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtMDAxLmh0
bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAg
ICAgICAgICAgbG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRl
ZFN1YnN0cmluZ0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygi
KDYsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDYsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcsIDEpOiAiICsgdGV4dElu
cHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDcsIDEpLnN0cmluZygp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigxMDAsIDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEwMCwgMCkpOyAv
LyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDAp
KTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTogIiAr
IHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAsIDAp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigxMDAsIDEwMCk6ICIgKyB0
ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoMTAwLCAxMDAp
KTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIzMTFjMWUzZjllNTZlMTdl
YTE3MzU4ZWExYzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEyNDE3NmNlMTIxZTQ2ODNi
ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmli
dXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWV4
cGVjdGVkLnR4dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQgdGV4dCAoMTI8Yj4zPGk+
NDU2PC9pPjwvYj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYKICg1LCAyKTogNgotKDEw
MCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCisoMTAwLCAwKTogCisoMTAw
LCAxMDApOiAKIAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KQog
dG90YWwgbGVuZ3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2Uu
aHRtbAppbmRleCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0ZjIyODliMGMzLi5jZjZj
OTExZDRiNTc1YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFu
Z2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0
ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQsOCBAQCBib2R5IHsgbWFy
Z2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigwLCAxMDApOiAiICsgdGV4
dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDAsIDEwMCkuc3Ry
aW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVy
LmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5nKCkpOwogICAgICAgICAg
ICAgbG9nKCIoNSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJp
bmdGcm9tUmFuZ2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAgbG9nKCIoMTAwLCAwKTog
IiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxMDAs
IDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEw
MCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgIGxvZygiKDEwMCwg
MCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2Uo
MTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAgbG9nKCIoMTAwLCAxMDAp
OiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKDEw
MCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAgCiAgICAgICAgICAgICBs
b2coIlxuVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMuX19fNF81KSIpOwogICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJzcDsyICZuYnNwOyZuYnNw
OzMgJm5ic3A7Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394879</attachid>
            <date>2020-03-29 17:18:39 -0700</date>
            <delta_ts>2020-03-29 17:18:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209408-20200329171837.patch</filename>
            <type>text/plain</type>
            <size>271994</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZmN2FkYWZlZGExMTJl
OGY4ZjY2YzJiOWJkZGU5YWU5YmExMDE3MS4uOGUwNjM4NWU4OTJmYmY0MWYxNTQ4M2ZiYjI1NGMw
NjBlYmUwZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAyMC0wMy0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgLSBQdXQgQ2hhcmFjdGVyUmFu
Z2UgaW50byBhIGhlYWRlciwgQ2hhcmFjdGVyUmFuZ2UuaC4KKyAgICAgICAgLSBSZXBsYWNlZCBD
aGFyYWN0ZXJPZmZzZXQgd2l0aCBkaXJlY3QgdXNlcyBvZiB1aW50NjRfdC4KKyAgICAgICAgICBC
ZWNhdXNlIHRoaXMgY2FuIGJlIGEgc2luZ2xlIG9mZnNldCBpbnRvIGFuIGVudGlyZSBkb2N1bWVu
dCwgdXNlIGEKKyAgICAgICAgICA2NC1iaXQgaW50ZWdlciBzbyB3ZSBkb24ndCBsaW1pdCBhbiBl
bnRpcmUgZG9jdW1lbnQgdG8gMl4zMiBjaGFyYWN0ZXJzOworICAgICAgICAgIGluIHRoZW9yeSB0
aGlzIG1ha2VzIGl0IHNvIHdlIGNhbiBzdXBwb3J0IGEgZG9jdW1lbnQgd2l0aCB0b25zIG9mCisg
ICAgICAgICAgdGV4dCBub2RlcyB0aGF0IGFkZCB1cCB0byBtb3JlIHRoYW4gMl4zMi4KKyAgICAg
ICAgLSBCZWNhdXNlIENoYXJhY3RlclJhbmdlIHVzZXMgNjQtYml0IGludGVnZXJzIHdlIGNhbiBu
b3cgY29udmVydCBtb3JlCisgICAgICAgICAgZWFzaWx5IHRvIGFuZCBmcm9tIE5TUmFuZ2UgYW5k
IENGUmFuZ2Ugb24gQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZTog
QWRkZWQgQ2hhcmFjdGVyUmFuZ2UuaC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9jb252ZXJ0VG9ET01SYW5nZTpdKToKKyAgICAgICAgVXNlIENoYXJh
Y3RlclJhbmdlLCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAg
ICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKTogRGl0dG8uCisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF90ZXh0TWFya2VyRm9ySW5kZXg6XSk6IERpdHRv
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKTog
VGFrZSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkTWFya2VyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRQbGF0Zm9ybVRleHRDaGVja2lu
Z01hcmtlcik6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5o
OiBFeHBvcnQgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIHNvIGl0IGNhbiBiZSB1c2VkCisg
ICAgICAgIG91dHNpZGUgb2YgV2ViQ29yZS4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmYXN0SXNDaGFyYWN0ZXJEYXRhKTogQWRkZWQuIENvdWxk
IGJlIG1vdmVkIHRvIHRoZSBOb2RlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoKTog
QWRkZWQuIENvdWxkIGJlIG1vdmVkIHRvIHRoZSBOb2RlIGNsYXNzLgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKTogQWRkZWQuIEFuYWxvZ291cyB0byB0
aGUKKyAgICAgICAgUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyBmdW5jdGlvbi4KKyAgICAgICAg
KiBkb20vU2ltcGxlUmFuZ2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICog
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZSk6
CisgICAgICAgIFVzZSBDaGFyYWN0ZXJSYW5nZSwgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jh
bmdlLgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5oOiBBZGRlZC4KKworICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgVXNlIENoYXJhY3RlclJh
bmdlLCByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24vUmFuZ2UuCisgICAgICAgICogZWRpdGluZy9F
ZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KTog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1RleHRDaGVja2luZ1BhcmFncmFwaCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzY2FuUmFuZ2VGb3JUZWxlcGhv
bmVOdW1iZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yVGV4
dENoZWNraW5nUmVzdWx0IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdyYW1tYXRpY2FsRXJyb3Jz
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmaW5kTWlzc3BlbGxpbmdzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3Jh
cGhSYW5nZVZhbHVlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFy
YWdyYXBoOjpyYW5nZUxlbmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nUGFyYWdyYXBoOjpzdWJyYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjp0ZXh0IGNvbnN0KTogRGl0dG8u
IEFsc28gdXNlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6OmNoZWNraW5nU3RhcnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdFbmQgY29uc3QpOiBEaXR0by4gQWxzbyBjb21w
dXRlCisgICAgICAgIHRoaXMgYnkgYWRkaW5nIHN0YXJ0IGFuZCBsZW5ndGgsIGFuZCBkb24ndCBj
YWNoZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tp
bmdMZW5ndGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1Bh
cmFncmFwaDo6YXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0aWNSZXBsYWNlbWVudExl
bmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0
YWlsIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEJhZEdyYW1tYXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdy
YW1tYXRpY2FsUmFuZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVj
a2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsQmFkR3JhbW1hcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuIEFsc28gZ290
IHJpZCBvZgorICAgICAgICBtX2NoZWNraW5nRW5kIHNpbmNlIGl0J3Mgc3VmZmljaWVudCB0byBj
YWNoZSB0aGUgc3RhcnQgYW5kIHRoZSBsZW5ndGguCisgICAgICAgIFNob3VsZCBjb21lIGJhY2sg
bGF0ZXIgYW5kIHVzZSBDaGFyYWN0ZXJSYW5nZSBpbnN0ZWFkIG9mIDJ4IENoYXJhY3RlckNvdW50
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2hhcmFjdGVyQ291bnQpOiBVc2UgdWludDY0X3QuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y2xhbXBlZEFkZCk6IEFkZGVkLiBIZWxwcyBpbXBsZW1lbnQgcmVzb2x2ZUNoYXJhY3Rl
clJhbmdlIGluIGEgd2F5CisgICAgICAgIHRoYXQgY2FuIHdvcmsgd2l0aCBhbnkgY2hhcmFjdGVy
IGNvdW50IHdpdGhvdXQgY29uY2VybiBhYm91dCBvdmVyZmxvdy4KKyAgICAgICAgKFdlYkNvcmU6
OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSk6IEFkZGVkLiBSZXBsYWNlcyBib3RoIHN1YnJhbmdlIGFu
ZAorICAgICAgICByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCwgdXNpbmcgYW4gYWxnb3JpdGht
IGNsb3NlIHRvIHRoZSBvbmUgZnJvbQorICAgICAgICB0aGUgbGF0dGVyIGZ1bmN0aW9uLCBpbmNs
dWRpbmcgd29ya2Fyb3VuZHMgaXQgaGFkLiBSZXBsYWNlZCB0aGUgYm9vbGVhbgorICAgICAgICAi
Zm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uIiB3aXRoIHRoZSBUZXh0SXRlcmF0b3JCZWhhdmlvciBv
cHRpb25zLCB3aGljaCBzZWVtcworICAgICAgICB0byBtYWtlIGdvb2Qgc2Vuc2UgYXQgYWxsIHRo
ZSBjYWxsIHNpdGVzLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9u
KTogQWRkZWQuIExpa2UgcmVzb2x2ZUNoYXJhY3RlclJhbmdlLCBidXQKKyAgICAgICAgaW5zdGVh
ZCBvZiByZXNvbHZpbmcgQ2hhcmFjdGVyUmFuZ2UgdG8gU2ltcGxlUmFuZ2UsIHJlc29sdmVzIGEg
Y2hhcmFjdGVyIGxvY2F0aW9uCisgICAgICAgIHRvIGEgQm91bmRhcnlQb2ludC4gTWFkZSBhIHNl
cGFyYXRlIGZ1bmN0aW9uIGZvciB0aGlzIGluIGNhc2Ugd2UgbGF0ZXIgcmVmYWN0b3IKKyAgICAg
ICAgZm9yIGVmZmljaWVuY3ksIGJ1dCBmb3Igbm93IHRoaXMgc2ltcGx5IGNhbGxzIHJlc29sdmVD
aGFyYWN0ZXJSYW5nZSB3aXRoIGEgemVybworICAgICAgICBsZW5ndGggcmFuZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBNb3ZlZCBDaGFyYWN0ZXJDb3VudCBhbmQgQ2hh
cmFnZXJSYW5nZSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgaGVhZGVyLiBSZXBsYWNlZCBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZAorICAgICAgICBUZXh0SXRl
cmF0b3I6OnN1YnJhbmdlIHdpdGggcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uIGFuZCByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW06CisgICAgICAgIChXZWJDb3JlOjpkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZSk6IFVz
ZSBDaGFyYWN0ZXJSYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1Jhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2Up
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RS
ZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9T
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOiBE
aXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGlzdGFuY2UpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwbGFjZVJhbmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaDogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzdWJyYW5nZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZSk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogTWFkZSBsb2NhdGlv
biBhbmQgbGVuZ3RoIHVuc2lnbmVkIHJhdGhlciB0aGFuIHNpZ25lZC4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6IERpdHRvLgorCiAyMDIwLTAzLTI5ICBSb2IgQnVpcyAgPHJidWlz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFkZEhUVFBPcmlnaW5JZk5lZWRlZCBjYWxs
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyYTc3MjlmYjVmNzM4ZWNjMzNhODJiNzQ3YmY0ZWMxYzY2YjJlYWZlLi4x
MWM3M2E3NjhlOTFiNzA5ZWViYjFlNDA0NjFkYTY2YzBmZjFlNWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDIwLTAzLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2Zm
IG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDk0MDgKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKwor
ICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJlc29sdmVD
aGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9FZGl0aW5nUmFuZ2Uu
aDogQWRkZWQgYSBGSVhNRSBhYm91dCByZXBsYWNpbmcgd2l0aCBDaGFyYWN0ZXJSYW5nZS4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKTogQWRkZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUpOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZW5jb2RlKTogVXBkYXRl
ZCB0byB1c2UgQ2hhcmFjdGVyUmFuZ2UuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3Jh
bW1hckRldGFpbD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFRleHRDaGVja2luZ1Jlc3VsdD46OmVuY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDogQWRkZWQgQ2hhcmFjdGVyUmFuZ2UuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJL
aXQ6OnRleHRDaGVja2luZ1Jlc3VsdEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdCk6IFVzZSBDaGFy
YWN0ZXJSYW5nZSwKKyAgICAgICAgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uL1JhbmdlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbCk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJE
ZXRhaWw6OmxvY2F0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1t
YXJEZXRhaWw6Omxlbmd0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
VGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVj
a2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OnVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmFuZ2VBbmRPZmZzZXRSZWxhdGl2ZVRvU2VsZWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6
cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRp
b25zKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxldGVTdXJyb3VuZGluZyk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IEZpeCBNYWMgQ2F0
YWx5c3QgYnVpbGQgZXJyb3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhEZWx0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6IERpdHRvLgorCiAyMDIwLTAzLTI5ICBkZGtpbHplckBh
cHBsZS5jb20gIDxkZGtpbHplckBhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3I6IFtpT1NdIERlbGF5IHByb2Nlc3Mg
c3VzcGVuc2lvbiBmb3IgYSB3aGlsZSBhZnRlciBsb2FkaW5nIGFuIGFwcCBsaW5rCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmJkOWRiY2FkZDZhMWFjZTRhZDgzZTQzNGRmOGRmNTRj
NzkwMTc3Zi4uODNiODkwZWMyNTQ0Zjg0YmRkNWM0ZmFmMGNkNDUxMjNjZTU4OWIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAzLTI5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKGNvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKTogRGl0dG8uCisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFj
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VJc1JlbGF0aXZlVG86XSk6IERpdHRvLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKHRleHRDaGVja2luZ1Jlc3Vs
dEZyb21OU1RleHRDaGVja2luZ1Jlc3VsdCk6IERpdHRvLgorCiAyMDIwLTAzLTI3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIERyYWdEYXRhOjpjb250
YWluc1VSTCgpIHNob3VsZCBhdm9pZCByZWFkaW5nIFVSTCBzdHJpbmdzIGZyb20gdGhlIHBhc3Rl
Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAyNzQxOTRlYWEwNzIyYmU3ZWIx
YWZiZmFiMWNlMzFmMzEwMjQ3NzJiLi44YTBmNjc3MDYxMjA0YzczNGRkN2YyNmJmOTcwNjUyMmVj
M2I2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjAtMDMtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBvZmYgb2YgbGl2ZSByYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTQw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOiBVc2UgQ2hhcmFjdGVyUmFuZ2UsCisgICAgICAgIHJl
c29sdmVDaGFyYWN0ZXJMb2NhdGlvbi9SYW5nZS4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZv
clRlc3RpbmcpOiBEaXR0by4KKwogMjAyMC0wMy0xOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIGEgcHJlZmxpZ2h0IGZhaWxzIGlmIHJlc3Bv
bnNlIGhlYWRlcnMgYXJlIGludmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDlhZDUzNzg1MzI0
YmIzNGMwZGRiOWRjYzExNzBjOGNkZDRhMzY2YTguLjc5N2QzYzEzOTQ4MzNhZDg4Yjc1MzRkZDI0
ZTNkZmU2NzYxOWZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNDg3LDYgKzQ4Nyw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKICAgICBkb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzLmgKIAorICAgIGVkaXRpbmcvQ2hhcmFjdGVyUmFuZ2UuaAogICAg
IGVkaXRpbmcvQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9u
SGlnaGxpZ2h0LmgKICAgICBlZGl0aW5nL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTNj
NGI0ZGYxOTQyOTM5NGFmMzgzZmYyNTBmNjAyNTk5Njc5NDJiLi5jNTkwZTE1ZWIwZmYwZDcxYzM5
NjgzNDZjN2U1N2I2NGQ3MDU3MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzM0LDYgKzI3MzQsNyBAQAogCQk5M0YxOUIx
NzA4MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1OENDNUMwMDgyMUJDMCAv
KiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyog
V2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCAq
LzsgfTsKIAkJOTNGMUQ1QzExMkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUQ1QkYx
MkQ1MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovOyB9OworCQk5M0YyQ0M5
MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjJDQzkxMjQyN0ZCOUEwMDU4NTFEOCAvKiBD
aGFyYWN0ZXJSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIx
MjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCTkzRjkyNTQz
MEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8q
IFJhZGlvQnV0dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEw
RkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oICovOyB9OwpAQCAtMTA5MzQsNiArMTA5MzUsNyBA
QAogCQk5M0YxRDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xMb3NlQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9zZUNv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTExv
c2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGMUQ1QkYxMkQ1
MzM1NjAwODMyQkVDIC8qIEpTV2ViR0xMb3NlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMTG9zZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNGMkNDOTEyNDI3RkI5QTAwNTg1MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3RlclJhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENv
bnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
TENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjZGMUVC
MTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzU5LDYgKzIxNzYxLDcgQEAKIAkJCQk5MzMwOUQ4
QzA5OUU2NDkxMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAogCQkJCUY0
RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwICovLAog
CQkJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAq
LywKKwkJCQk5M0YyQ0M5MTI0MjdGQjlBMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFuZ2UuaCAqLywK
IAkJCQk3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5Lmgg
Ki8sCiAJCQkJOTMzMDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcCAqLywKIAkJCQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENv
bW1hbmQuaCAqLywKQEAgLTI5NjQyLDYgKzI5NjQ1LDcgQEAKIAkJCQlGRDMxNjAwMjEyQjAyNjc2
MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
MEI2QTAwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1NTkyRjc4MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9wZXJ0aWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0YyQ0M5MzI0MjdGQjlDMDA1ODUxRDggLyogQ2hhcmFjdGVyUmFu
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
MjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5k
ZXggZDgzMTA3NWNkMzExZDk1MmMyYjE4NjU5YmZlMzQ4NTRlYTE3Yzc1Yi4uMTQ5YTZmMjY5ODcw
M2U5M2FjNzExNjFmOTIzYzBlOWE0ZjFkYThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KQEAgLTIzMzYsMjMgKzIzMzYsMjMgQEAgLSAoTlNSYW5nZSlfY29udmVy
dFRvTlNSYW5nZTooUmFuZ2UgKilsaXZlUmFuZ2UKICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoY2hh
cmFjdGVyQ291bnQoeyB7ICpzY29wZSwgMCB9LCByYW5nZS5zdGFydCB9KSwgY2hhcmFjdGVyQ291
bnQocmFuZ2UpKTsKIH0KIAotLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5T
UmFuZ2UpbnNyYW5nZQorLSAoUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFu
Z2UpcmFuZ2UKIHsKLSAgICBpZiAobnNyYW5nZS5sb2NhdGlvbiA+IElOVF9NQVgpCisgICAgaWYg
KHJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmIChuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVggfHwgbnNyYW5nZS5sb2NhdGlvbiArIG5z
cmFuZ2UubGVuZ3RoID4gSU5UX01BWCkKLSAgICAgICAgbnNyYW5nZS5sZW5ndGggPSBJTlRfTUFY
IC0gbnNyYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgCisKICAgICAvLyBvdXIgY3JpdGljYWwgYXNz
dW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQK
ICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0
aW9uCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgdGV4dCBmaWVsZHMgYW5k
IHRleHRhcmVhcy4gVGhlIERPTSBmb3IgdGhvc2UgaXMgbm90CiAgICAgLy8gZGlyZWN0bHkgaW4g
dGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNv
bHV0aW9uIGlzCiAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhl
IHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKLSAgICBFbGVtZW50
KiBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlv
blJvb3QgPyBzZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgYXV0byBkb2N1bWVudCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOworICAgIGF1dG8gc2VsZWN0aW9uUm9vdCA9
IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7CisgICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290
IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghc2NvcGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJh
Y3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSkp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byB0YWtlIGEgdGV4dCBtYXJrZXIg
cmVwcmVzZW50aW5nIGEgVmlzaWJsZVBvc2l0aW9uIGFuZCBjb252ZXJ0IGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1OTJmMDcwNzgzZGY1YWQxODM4Mjc5
NGU1YWU5YWY5OGMwZWYyYjMuLmEzZjUzYzhlMWVhMzYzNGM0YThlNWIwOTJhYThmMzcyMDBiZmJm
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiAgICAgICAgIHNpemVfdCBzaXplID0g
cmVzdWx0cy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJp
bmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlLCBAWUVTLCBOU01ha2VS
YW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwor
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKSk7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWFya2VkTWlzc3BlbGxlZFRleHRBdHRyaWJ1
dGUsIEBZRVMsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxvY2F0aW9uLCBy
ZXN1bHQubGVuZ3RoKSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNYXJrZWRNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwg
QFlFUywgTlNNYWtlUmFuZ2UocmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24s
IHJlc3VsdC5yYW5nZS5sZW5ndGgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2ODAsMTkgKzM2ODAsMjEgQEAgLSAoaWQpX3RleHRNYXJrZXJGb3JJbmRleDooTlNJ
bnRlZ2VyKXRleHRJbmRleAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRl
eHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCisKKyAgICBhdXRv
KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+c3RhcnRPckVu
ZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHRleHRSYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIGF1dG8gYm91bmRhcnkgPSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgp
OworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJP
ZmZzZXRGb3JSYW5nZShjcmVhdGVMaXZlUmFuZ2UoeyBib3VuZGFyeSwgYm91bmRhcnkgfSksIHRy
dWUpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07CiB9CiAKIC8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBmNGU1
MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4Li5jZDkzZWU1OTY4MWFkMjZkODRj
MTM1MDg0OWM5ZWRhMmM3Y2QxMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBl
cyA9IHsgfTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQorVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0
UmFuZ2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJ
dGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQpAQCAtNjgsMTMgKzY4LDEz
IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxl
Y3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiAgICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KIAot
dm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihSYW5nZSYgcmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKICAgICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRS
YW5nZXMocmFuZ2UpKQogICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5l
cigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQ
aWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIoUmFuZ2UmIHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSB0eXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUp
CiB7CiAgICAgZm9yIChhdXRvIHRleHRQaWVjZSA6IGNvbGxlY3RUZXh0UmFuZ2VzKHJhbmdlKSkK
ICAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRN
YXJrZXIodHlwZSwgdGV4dFBpZWNlLT5zdGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNl
dCgpKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2UmIHIKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKK3ZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8gdGV4dFBpZWNlIDogY29sbGVjdFRleHRSYW5nZXMocmFuZ2UpKQogICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcihE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpLCBtZXRh
ZGF0YSkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjphZGREcmFnZ2VkQ29udGVudE1hcmtlcihSYW5nZSYgcmFuZ2UpCiB9CiAKICNpZiBFTkFCTEUo
UExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkUGxhdGZvcm1UZXh0Q2hlY2tpbmdNYXJrZXIoUmFuZ2UmIHJhbmdlLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtlcihjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGZv
ciAoYXV0byB0ZXh0UGllY2UgOiBjb2xsZWN0VGV4dFJhbmdlcyhyYW5nZSkpIHsKICAgICAgICAg
RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YSB0ZXh0Q2hlY2tpbmdEYXRh
IHsga2V5LCB2YWx1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oCmluZGV4IDY5ZTI1NGQ1ZTcyZjE1NzZjMzFkYzE3Y2VmOGI2ZmM3ODg5YTdlYzQu
LjYzMDVhYTY2YzE2ZTY5Y2M2NzU2ZGUyODg1OTJiZWNmYzg4MDExMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDggQEAg
Y2xhc3MgTm9kZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyZWREb2N1bWVudE1hcmtlcjsK
IAorc3RydWN0IFNpbXBsZVJhbmdlOworCiBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDgsMjAgKzUwLDIwIEBAIHB1Ymxp
YzoKICAgICB+RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGRldGFjaCgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdlJiwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKFJhbmdl
JiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwg
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUm
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBE
b2N1bWVudE1hcmtlcjo6RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSYsIGJvb2wgYWN0aXZlTWF0Y2gpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UmLCBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGludGVycHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogICAg
IHZvaWQgYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOwotICAgIHZvaWQgYWRkRGljdGF0
aW9uUmVzdWx0TWFya2VyKFJhbmdlJiwgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwor
ICAgIHZvaWQgYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpOwogI2VuZGlmCiAgICAgdm9pZCBhZGREcmFnZ2Vk
Q29udGVudE1hcmtlcihSYW5nZSYpOwogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhU
X0NIRUNLSU5HKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUGxhdGZvcm1UZXh0Q2hlY2tp
bmdNYXJrZXIoUmFuZ2UmLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtlcihj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKICNlbmRpZgogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlJiBzcmNOb2RlLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSYgZHN0Tm9kZSwgaW50IGRlbHRhKTsKQEAg
LTEwNyw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNYXJrZXIo
Tm9kZSYsIGNvbnN0IERvY3VtZW50TWFya2VyJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+
IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJik7CisgICAgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+IGNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICB0eXBlZGVm
IFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwogICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8Tm9kZT4sIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0Pj4gTWFya2Vy
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA5OTNlOTUxZjFhNTBhNGRiYTlmOTNjMWU4MWZl
NWUyYjE3YWU3Zjk4Li5jMjhlNzA2YjEwNTZmNmVhNWU5MDQ5ZDAwYTQ2MmNkM2E1YTEyNzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIEZJWE1FOiBDb25zaWRlciBy
ZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdlIG5vcm1h
bGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBvYmplY3Rz
LgogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNpZ25lZCBv
ZmZzZXQpOwotUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJvdW5k
YXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IGI0ZmUyYjg1ZDNhZjg1Y2I4MzA3OGQ3YTll
NTEyMTdmMTQwNTAzNmEuLmE0MzM4YWIyMGZjNTJmMmZmMjdkY2I1YjcwMjA4YTdmN2IzMDYyN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsNCArNTMsMjMgQEAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYgYikKICAg
ICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQogCisvLyBG
SVhNRTogTm9kZTo6aXNDaGFyYWN0ZXJEYXRhIHNob3VsZCB1c2UgYW4gYWxnb3JpdGhtIGxpa2Ug
dGhpcywgc2luY2UgSSdtIGFzc3VtaW5nIGl0J3MgZmFzdGVyIHRoYW4gdGhlIGlzQ2hhcmFjdGVy
RGF0YU5vZGUgdmlydHVhbCBjYWxsIGluIG1vc3QgY2FzZXMuCitzdGF0aWMgYm9vbCBmYXN0SXND
aGFyYWN0ZXJEYXRhKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuICFub2RlLmlzQ29u
dGFpbmVyTm9kZSgpICYmIChub2RlLmlzVGV4dE5vZGUoKSB8fCBub2RlLmlzQ2hhcmFjdGVyRGF0
YU5vZGUoKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBOb2RlOjpsZW5ndGggc2lu
Y2UgdGhlIERPTSBzcGVjaWZpY2F0aW9uIGNhbGxzIHRoaXMgYSBub2RlJ3MgbGVuZ3RoLgorc3Rh
dGljIHVuc2lnbmVkIGxlbmd0aChjb25zdCBOb2RlJiBub2RlKQoreworICAgIGlmIChmYXN0SXND
aGFyYWN0ZXJEYXRhKG5vZGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFjdGVyRGF0
YT4obm9kZSkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG5vZGUuY291bnRDaGlsZE5vZGVzKCk7Cit9
CisKK1NpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJiBub2Rl
KQoreworICAgIHJldHVybiB7IHsgbm9kZSwgMCB9LCB7IG5vZGUsIGxlbmd0aChub2RlKSB9IH07
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggYWNkOTg1NWE4OTE5YzM3NmUx
NTdkMWNlZDljNWRlZWQ3YTE5NTcyNC4uOTU4MmRmOGMzMzI2Yzg5ODU1YmI4ZGVhMTE0NjMzNWM0
NjcxM2E4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTUxLDYgKzUxLDggQEAgc3Ry
dWN0IFNpbXBsZVJhbmdlIHsKICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7CiB9
OwogCitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoTm9kZSYpOworCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25z
dCBTaW1wbGVSYW5nZSYpOwogCiBpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0
IFJlZjxSYW5nZT4mIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZWJkNGNhYjMyNmYyYzA5NzU1NDBjYjFk
NmY5ZTdhMTIyNzliMjk4OC4uZjcwZGE1OGUxNGZiOTRhNjA1Yjk4ZGUxNmM3MGNlNzU2MDVlMzJi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwCkBAIC01OTksMTcgKzU5OSwxNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2Us
CiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlLmNsb25lUmFuZ2Uo
KSwgYWx0ZXJuYXRpdmUpLT5hcHBseSgpOwogCiAgICAgLy8gUmVjYWxjdWxhdGUgcHJhZ3JhcGhS
YW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLCBzaW5jZSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
IG1vZGlmaWVkIHRoZSBET00sIHN1Y2ggdGhhdCB0aGUgb3JpZ2luYWwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQuIFJhZGFyOiAxMDMwNTMxNSBC
dWd6aWxsYTogODk1MjYKLSAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCh0cmVl
U2NvcGVSb290LnB0cigpLCBwYXJhZ3JhcGhPZmZzZXRJblRyZWVTY29wZSwgY29ycmVjdGlvbk9m
ZnNldEluUGFyYWdyYXBoICsgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOwotICAgIGlmICghdXBkYXRl
ZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24pCisgICAgYXV0byB1cGRhdGVkUGFy
YWdyYXBoU3RhcnRDb250YWluaW5nQ29ycmVjdGlvbiA9IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlv
bihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHModHJlZVNjb3BlUm9vdCksIHBhcmFncmFw
aE9mZnNldEluVHJlZVNjb3BlKTsKKyAgICBhdXRvIHVwZGF0ZWRQYXJhZ3JhcGhFbmRDb250YWlu
aW5nQ29ycmVjdGlvbiA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgaWYgKCF1cGRhdGVkUGFyYWdyYXBoRW5kQ29udGFpbmlu
Z0NvcnJlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRFbmQodXBkYXRlZFBhcmFncmFw
aFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24uZ2V0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZSgqdXBkYXRlZFBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24s
IGNvcnJlY3Rpb25PZmZzZXRJblBhcmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpOworICAg
IGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IHVwZGF0ZWRQ
YXJhZ3JhcGhTdGFydENvbnRhaW5pbmdDb3JyZWN0aW9uLCAqdXBkYXRlZFBhcmFncmFwaEVuZENv
bnRhaW5pbmdDb3JyZWN0aW9uIH0sIENoYXJhY3RlclJhbmdlKGNvcnJlY3Rpb25PZmZzZXRJblBh
cmFncmFwaCwgYWx0ZXJuYXRpdmUubGVuZ3RoKCkpKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiByZXBsYWNlbWVudCBzdWNjZWVkZWQuCi0gICAgaWYgKHBsYWluVGV4dChyZXBsYWNlbWVudFJh
bmdlLmdldCgpKSAhPSBhbHRlcm5hdGl2ZSkKKyAgICBpZiAocGxhaW5UZXh0KHJlcGxhY2VtZW50
UmFuZ2UpICE9IGFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBtYXJr
ZXJzID0gcmVwbGFjZW1lbnRSYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKTsKKyAgICBh
dXRvJiBtYXJrZXJzID0gcmVwbGFjZW1lbnRSYW5nZS5zdGFydC5kb2N1bWVudCgpLm1hcmtlcnMo
KTsKICAgICBmb3IgKGF1dG8gbWFya2VyVHlwZSA6IG1hcmtlclR5cGVzVG9BZGQpCiAgICAgICAg
IG1hcmtlcnMuYWRkTWFya2VyKHJlcGxhY2VtZW50UmFuZ2UsIG1hcmtlclR5cGUsIG1hcmtlckRl
c2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVR5cGUsIG1hcmtl
clR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggYmI5MmMwMjEyMWEzYjdiMzkyZjUyOWY4YWI3NmU1YmU0NjBiMjM0OS4uMDg0ZWE3
MmM4YWQyNTEyOTZiNDM5MmI2YTliYzY3ZjVlYjBkOGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI4MywxMiArMjgzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAg
ICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0
KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZS5nZXQoKSwgc3Rh
cnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLmdldCgpLCBlbmRJbmRleCwgMCwgdHJ1
ZSk7Ci0gICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICAgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKTsKLSAgICB9CisgICAgYXV0byBzdGFydFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoKnNjb3BlKSwgc3RhcnRJbmRleCwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKKyAgICBhdXRvIGVuZFBvc2l0aW9u
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbiht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgZW5kSW5kZXgsIFRleHRJdGVy
YXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CisgICAgdXBk
YXRlU3RhcnRFbmQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogfQogCiBzdGF0aWMgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q2hhcmFjdGVyUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhcmFjdGVyUmFuZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZWRlY2E4MzEyMGE4OTYwMzE4NWJmYTUyMWY3YWEyNzFkMTIzZGJkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFyYWN0ZXJSYW5nZS5o
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYg
VVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjZW5k
aWYKKworI2lmIFVTRShGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5n
ZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDaGFyYWN0ZXJSYW5n
ZSB7CisgICAgdWludDY0X3QgbG9jYXRpb24geyAwIH07CisgICAgdWludDY0X3QgbGVuZ3RoIHsg
MCB9OworCisgICAgQ2hhcmFjdGVyUmFuZ2UoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIENo
YXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpOworCisjaWYg
VVNFKENGKQorICAgIGNvbnN0ZXhwciBDaGFyYWN0ZXJSYW5nZShDRlJhbmdlKTsKKyAgICBjb25z
dGV4cHIgb3BlcmF0b3IgQ0ZSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSk7CisgICAgY29uc3Rl
eHByIG9wZXJhdG9yIE5TUmFuZ2UoKSBjb25zdDsKKyNlbmRpZgorfTsKKworY29uc3RleHByIENo
YXJhY3RlclJhbmdlOjpDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3Qg
bGVuZ3RoKQorICAgIDogbG9jYXRpb24obG9jYXRpb24pCisgICAgLCBsZW5ndGgobGVuZ3RoKQor
eworfQorCisjaWYgVVNFKENGKQorCitjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2U6OkNoYXJhY3Rl
clJhbmdlKENGUmFuZ2UgcmFuZ2UpCisgICAgOiBDaGFyYWN0ZXJSYW5nZShyYW5nZS5sb2NhdGlv
biwgcmFuZ2UubGVuZ3RoKQoreworICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBrQ0ZOb3RG
b3VuZCk7Cit9CisKK2NvbnN0ZXhwciBDaGFyYWN0ZXJSYW5nZTo6b3BlcmF0b3IgQ0ZSYW5nZSgp
IGNvbnN0Cit7CisgICAgQ0ZJbmRleCBsb2NhdGlvbkNGID0gbG9jYXRpb247CisgICAgQ0ZJbmRl
eCBsZW5ndGhDRiA9IGxlbmd0aDsKKyAgICByZXR1cm4geyBsb2NhdGlvbkNGLCBsZW5ndGhDRiB9
OworfQorCisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKSAmJiBkZWZpbmVkKF9fT0JKQ19f
KQorCitjb25zdGV4cHIgQ2hhcmFjdGVyUmFuZ2U6OkNoYXJhY3RlclJhbmdlKE5TUmFuZ2UgcmFu
Z2UpCisgICAgOiBDaGFyYWN0ZXJSYW5nZSB7IHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgg
fQoreworICAgIEFTU0VSVChyYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKK30KKworY29u
c3RleHByIENoYXJhY3RlclJhbmdlOjpvcGVyYXRvciBOU1JhbmdlKCkgY29uc3QKK3sKKyAgICBO
U1VJbnRlZ2VyIGxvY2F0aW9uTlMgPSBsb2NhdGlvbjsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aE5T
ID0gbGVuZ3RoOworICAgIHJldHVybiB7IGxvY2F0aW9uTlMsIGxlbmd0aE5TIH07Cit9CisKKyNl
bmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDE1NGJiODdjMzMxZDQxZDkxNjE2MmU3
ZDkxMTBkNDc4ODI3ZDFjNzAuLjYzYmU5MWU5MDRjODkzNWRmZjk1NjE0Yzg3MGM5MjRhZjM0ZGJh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3Zl
UGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIGlm
IChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGRlc3RpbmF0aW9uKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaW50IHN0YXJ0SW5kZXggPSAtMTsKLSAgICBpbnQgZW5kSW5kZXggPSAtMTsK
KyAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRJbmRleDsKKyAgICBPcHRpb25hbDx1aW50NjRf
dD4gZW5kSW5kZXg7CiAgICAgYm9vbCBvcmlnaW5hbElzRGlyZWN0aW9uYWwgPSBlbmRpbmdTZWxl
Y3Rpb24oKS5pc0RpcmVjdGlvbmFsKCk7CiAgICAgaWYgKHByZXNlcnZlU2VsZWN0aW9uICYmICFl
bmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CkBAIC0xNTI4LDE2
ICsxNTI4LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgaWYgKHN0eWxlSW5FbXB0
eVBhcmFncmFwaCAmJiBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoKQogICAgICAgICBhcHBseVN0
eWxlKHN0eWxlSW5FbXB0eVBhcmFncmFwaC5nZXQoKSk7CiAKLSAgICBpZiAocHJlc2VydmVTZWxl
Y3Rpb24gJiYgc3RhcnRJbmRleCAhPSAtMSkgeworICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAm
JiBzdGFydEluZGV4ICYmIGVuZEluZGV4KSB7CiAgICAgICAgIC8vIEZyYWdtZW50IGNyZWF0aW9u
ICh1c2luZyBjcmVhdGVNYXJrdXApIGluY29ycmVjdGx5IHVzZXMgcmVndWxhcgogICAgICAgICAv
LyBzcGFjZXMgaW5zdGVhZCBvZiBuYnNwcyBmb3Igc29tZSBzcGFjZXMgdGhhdCB3ZXJlIHJlbmRl
cmVkICgxMTQ3NSksIHdoaWNoCiAgICAgICAgIC8vIGNhdXNlcyBzcGFjZXMgdG8gYmUgY29sbGFw
c2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRpb24uICBUaGlzIHJlc3VsdHMKICAgICAgICAgLy8g
aW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIHdpdGggYSBsb2NhdGlvbiBw
YXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50ICh3aGljaCB3aWxsIHJldHVy
biBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbklu
ZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0
KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChz
dGFydCAmJiBlbmQpCi0gICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihzdGFydC0+c3RhcnRQb3NpdGlvbigpLCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNU
UkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CisgICAgICAgIGF1dG8gc3RhcnQgPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWRpdGFibGVSb290KSwgZGVzdGluYXRpb25JbmRleCAr
ICpzdGFydEluZGV4LCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucykpOworICAgICAgICBhdXRvIGVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCplZGl0YWJsZVJvb3QpLCBkZXN0aW5hdGlvbkluZGV4ICsgKmVuZEluZGV4LCBUZXh0SXRl
cmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykpOworICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oeyBzdGFydCwgZW5kLCBET1dOU1RSRUFNLCBvcmlnaW5hbElz
RGlyZWN0aW9uYWwgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApp
bmRleCA2MDQ3Yjk0NjQzZTNkNWVhNTczYWZiZGNmNjc2YjIwMTFhYzg3NWY3Li5lODE4ZDEyYjIz
OTEyMGExYWEyYmZmNWUwYWNiNzlhNmQyMGQ5ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAKQEAgLTExMTQsMTIgKzExMTQsOSBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaQogCiBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWlu
ZXJOb2RlKiBzY29wZSkKIHsKLSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOwotICAgIC8vIENoZWNr
IGZvciBhbiBpbnZhbGlkIGluZGV4LiBDZXJ0YWluIGVkaXRpbmcgb3BlcmF0aW9ucyBpbnZhbGlk
YXRlIGluZGljZXMgYmVjYXVzZSAKLSAgICAvLyBvZiBwcm9ibGVtcyB3aXRoIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLgotICAgIGlmICghcmFu
Z2UpCisgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyBy
YW5nZS0+c3RhcnRQb3NpdGlvbigpIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKnNjb3BlKSwgaW5kZXgsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKSkgfTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDNhYzBmYzAxMDk1MmJhYzRmMTA2
ZTJiYjlkNTBhZTc0ZWY3ZmEyNS4uMDkzYjEyYjk2NjEzZjM3ZTZlOTk5ZGRmYWY4YTAyZTE2MjJk
YmQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjIyMywxNSArMjIyMywxNSBA
QCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVT
ZWxlY3Rpb24pCiAgICAgTm9kZSYgc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmVuZENvbnRhaW5lcigpOwogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldy
YXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoKTsKICAgICAKLSAgICBpbnQgbWlz
c3BlbGxpbmdPZmZzZXQgPSAwOworICAgIHVpbnQ2NF90IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsK
ICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGdyYW1tYXJQaHJhc2VP
ZmZzZXQgPSAwOworICAgIHVpbnQ2NF90IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIFJl
ZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdlOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlOwogICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKIAogICAgIGJvb2wgaXNTcGVsbGluZyA9
IHRydWU7Ci0gICAgaW50IGZvdW5kT2Zmc2V0ID0gMDsKKyAgICB1aW50NjRfdCBmb3VuZE9mZnNl
dCA9IDA7CiAgICAgU3RyaW5nIGZvdW5kSXRlbTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlz
c3BlbGxpbmdSYW5nZTsKICAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CkBA
IC0yMzA3LDEwICsyMzA3LDEwIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gcGFuZWwsIGFuZCBzdG9y
ZSBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRlci4KICAgICAgICAg
CiAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpID4gMCk7Ci0gICAgICAg
IEFTU0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9uICE9IC0xICYmIGdyYW1tYXJEZXRhaWwubGVu
Z3RoID4gMCk7CisgICAgICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCA+IDAp
OwogICAgICAgICAKICAgICAgICAgLy8gRklYTUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2Vk
IHdpdGggZG91YmxlZCBwdW5jdHVhdGlvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCi0gICAg
ICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZ3JhbW1h
clNlYXJjaFJhbmdlLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlv
biwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOworICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZ3JhbW1hclNlYXJjaFJhbmdlLCB7IGdyYW1tYXJQaHJh
c2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBncmFtbWFyRGV0YWlsLnJh
bmdlLmxlbmd0aCB9KTsKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7
CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAg
IApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAvLyBXZSBmb3VuZCBhIG1p
c3NwZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1p
c3NwZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAg
Ly8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgogICAgICAgICAK
LSAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShz
cGVsbGluZ1NlYXJjaFJhbmdlLCBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVu
Z3RoKCkpOworICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVy
UmFuZ2Uoc3BlbGxpbmdTZWFyY2hSYW5nZSwgeyBtaXNzcGVsbGluZ09mZnNldCwgbWlzc3BlbGxl
ZFdvcmQubGVuZ3RoKCkgfSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwogICAg
ICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKQEAg
LTI3NzMsNyArMjc3Myw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlUmFuZ2VGb3JTcGVsbENoZWNr
aW5nKFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByCiAgICAgU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKHJhbmdlVG9SZXBsYWNlLCByZXBsYWNlbWVudCktPmFw
cGx5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvcnJlY3RTcGVsbGNoZWNraW5nUHJlc2VydmluZ1Rl
eHRDaGVja2luZ1BhcmFncmFwaChUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaCwgUmFu
Z2UmIHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBpbnQgcmVzdWx0
TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgpCitzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVj
a2luZ1ByZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBo
JiBwYXJhZ3JhcGgsIFJhbmdlJiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCwgQ2hhcmFjdGVyUmFuZ2UgcmVzdWx0UmFuZ2UpCiB7CiAgICAgYXV0byYgc2NvcGUgPSBk
b3duY2FzdDxDb250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKS5zdGFydENv
bnRhaW5lcigpLnJvb3ROb2RlKCkpOwogCkBAIC0yNzg2LDEwICsyNzg2LDkgQEAgc3RhdGljIHZv
aWQgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdyYXBoKFRl
eHRDaGVja2luZ1BhcmEKICAgICAvLyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggbWF5IGJlIG9ycGhh
bmVkIGFmdGVyIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQgbXV0YXRlZCBET00uCiAgICAgLy8g
U2VlIDxyZGFyOi8vMTAzMDUzMTU+LCBodHRwOi8vd2Via2l0Lm9yZy9iLzg5NTI2LgogCi0gICAg
UmVmUHRyPFJhbmdlPiBuZXdQYXJhZ3JhcGhSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoJnNjb3BlLCBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFyYWdyYXBoTGVu
Z3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGgpOwotCi0gICAgYXV0byBz
cGVsbENoZWNraW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpuZXdQYXJhZ3JhcGhS
YW5nZSwgcmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKLSAgICBwYXJhZ3Jh
cGggPSBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwg
c3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgbmV3UGFyYWdyYXBoUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gbmV3UGFyYWdyYXBoUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHNjb3BlKSwgeyBwYXJhZ3JhcGhMb2NhdGlvbiwgcGFy
YWdyYXBoTGVuZ3RoICsgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRSYW5nZS5sZW5ndGgg
fSk7CisgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
bmV3UGFyYWdyYXBoUmFuZ2UsIHsgcmVzdWx0UmFuZ2UubG9jYXRpb24sIHJlcGxhY2VtZW50Lmxl
bmd0aCgpIH0pOworICAgIHBhcmFncmFwaCA9IFRleHRDaGVja2luZ1BhcmFncmFwaChjcmVhdGVM
aXZlUmFuZ2Uoc3BlbGxDaGVja2luZ1JhbmdlKSwgY3JlYXRlTGl2ZVJhbmdlKHNwZWxsQ2hlY2tp
bmdSYW5nZSksIGNyZWF0ZUxpdmVSYW5nZShuZXdQYXJhZ3JhcGhSYW5nZSkpOwogfQogCiB2b2lk
IEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQpAQCAtMjgxMSw3
ICsyODEwLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZWxsQ2hl
Y2tSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8VGUKICNlbmRpZgogCiAgICAgLy8gRXhw
YW5kIHRoZSByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQg
Y2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCi0gICAgaW50IHNlbGVjdGlvbk9mZnNl
dCA9IDA7CisgICAgdWludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0ID0gMDsKICAgICBib29sIHVzZUFt
YmlndW91c0JvdW5kYXJ5T2Zmc2V0ID0gZmFsc2U7CiAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgYm9vbCByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSBmYWxzZTsK
QEAgLTI4MjMsOSArMjgyMiw5IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAg
ICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5lbmQoKTsKICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNldCA9IHBhcmFncmFwaC5vZmZzZXRU
byhjYXJldFBvc2l0aW9uKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgICAgIHJlc3Rv
cmVTZWxlY3Rpb25BZnRlckNoYW5nZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9u
T2Zmc2V0ID4gMCAmJiAoc2VsZWN0aW9uT2Zmc2V0ID4gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8
fCBwYXJhZ3JhcGgudGV4dENoYXJBdChzZWxlY3Rpb25PZmZzZXQgLSAxKSA9PSBuZXdsaW5lQ2hh
cmFjdGVyKSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25PZmZzZXQgPiAwICYmIChzZWxlY3Rp
b25PZmZzZXQgPiBwYXJhZ3JhcGgudGV4dCgpLmxlbmd0aCgpIHx8IHBhcmFncmFwaC50ZXh0KClb
c2VsZWN0aW9uT2Zmc2V0IC0gMV0gPT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAg
ICAgYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAg
ICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdy
YXBoLnRleHRMZW5ndGgoKSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFw
aC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpKSkKKyAgICAgICAgICAgIGlmIChzZWxl
Y3Rpb25PZmZzZXQgPiAwICYmIHNlbGVjdGlvbk9mZnNldCA8PSBwYXJhZ3JhcGgudGV4dCgpLmxl
bmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIocGFyYWdyYXBoLnRleHQoKVtz
ZWxlY3Rpb25PZmZzZXQgLSAxXSkpCiAgICAgICAgICAgICAgICAgdXNlQW1iaWd1b3VzQm91bmRh
cnlPZmZzZXQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgzMywxNCArMjgzMiwxNCBA
QCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50
ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBo
LmNoZWNraW5nRW5kKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBU
ZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSByZXN1bHRzW2ldLnR5cGU7Ci0gICAgICAgIGNv
bnN0IGludCByZXN1bHRMb2NhdGlvbiA9IHJlc3VsdHNbaV0ubG9jYXRpb24gKyBvZmZzZXREdWVU
b1JlcGxhY2VtZW50OwotICAgICAgICBjb25zdCBpbnQgcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tp
XS5sZW5ndGg7Ci0gICAgICAgIGNvbnN0IGludCByZXN1bHRFbmRMb2NhdGlvbiA9IHJlc3VsdExv
Y2F0aW9uICsgcmVzdWx0TGVuZ3RoOwotICAgICAgICBjb25zdCBpbnQgYXV0b21hdGljUmVwbGFj
ZW1lbnRFbmRMb2NhdGlvbiA9IHBhcmFncmFwaC5hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkg
KyBwYXJhZ3JhcGguYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgoKSArIG9mZnNldER1ZVRvUmVw
bGFjZW1lbnQ7CisgICAgICAgIGF1dG8gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCA9IHBhcmFncmFw
aC5jaGVja2luZ0VuZCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKKyAgICAgICAgVGV4dENo
ZWNraW5nVHlwZSByZXN1bHRUeXBlID0gcmVzdWx0c1tpXS50eXBlOworICAgICAgICBhdXRvIHJl
c3VsdExvY2F0aW9uID0gcmVzdWx0c1tpXS5yYW5nZS5sb2NhdGlvbiArIG9mZnNldER1ZVRvUmVw
bGFjZW1lbnQ7CisgICAgICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gcmVzdWx0c1tpXS5yYW5nZS5s
ZW5ndGg7CisgICAgICAgIGF1dG8gcmVzdWx0RW5kTG9jYXRpb24gPSByZXN1bHRMb2NhdGlvbiAr
IHJlc3VsdExlbmd0aDsKKyAgICAgICAgYXV0byBhdXRvbWF0aWNSZXBsYWNlbWVudEVuZExvY2F0
aW9uID0gcGFyYWdyYXBoLmF1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQoKSArIHBhcmFncmFwaC5h
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCA9IHJlc3VsdHNbaV0ucmVwbGFjZW1lbnQ7
Ci0gICAgICAgIGNvbnN0IGJvb2wgcmVzdWx0RW5kc0F0QW1iaWd1b3VzQm91bmRhcnkgPSB1c2VB
bWJpZ3VvdXNCb3VuZGFyeU9mZnNldCAmJiBzZWxlY3Rpb25PZmZzZXQgLSAxIDw9IHJlc3VsdEVu
ZExvY2F0aW9uOworICAgICAgICBib29sIHJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5ID0g
dXNlQW1iaWd1b3VzQm91bmRhcnlPZmZzZXQgJiYgc2VsZWN0aW9uT2Zmc2V0IC0gMSA8PSByZXN1
bHRFbmRMb2NhdGlvbjsKIAogICAgICAgICAvLyBPbmx5IG1hcmsgbWlzc3BlbGxpbmcgaWY6CiAg
ICAgICAgIC8vIDEuIEN1cnJlbnQgdGV4dCBjaGVja2luZyBpc24ndCBkb25lIGZvciBhdXRvY29y
cmVjdGlvbiwgaW4gd2hpY2ggY2FzZSBzaG91bGRNYXJrU3BlbGxpbmcgaXMgZmFsc2UuCkBAIC0y
ODUwLDE2ICsyODQ5LDE2IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBT
cGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgIGlmIChz
aG91bGRNYXJrU3BlbGxpbmcgJiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgJiYgcmVzdWx0
VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZwogICAgICAgICAgICAgJiYgcmVzdWx0
TG9jYXRpb24gPj0gcGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSAmJiByZXN1bHRFbmRMb2NhdGlv
biA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3Vu
ZGFyeSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9j
YXRpb24gPj0gMCk7Ci0gICAgICAgICAgICBhdXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3Jh
cGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCk7CisgICAgICAgICAgICBh
dXRvIG1pc3NwZWxsaW5nUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UoeyByZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoIH0pOwogICAgICAgICAgICAgaWYgKCFtX2FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXItPmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKG1pc3NwZWxsaW5nUmFuZ2UpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbWlzc3BlbGxpbmdSYW5nZS0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIobWlzc3BlbGxpbmdS
YW5nZSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCByZXBsYWNlbWVudCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0
aW9uLCByZXN1bHRMZW5ndGgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1t
YXIgJiYgcmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFw
aC5jaGVja2luZ1JhbmdlQ292ZXJzKHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KSkg
ewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24g
Pj0gMCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRldGFpbCA6IHJlc3VsdHNbaV0uZGV0YWls
cykgewotICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwubGVuZ3RoID4gMCAmJiBkZXRhaWwu
bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1Jh
bmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLmxvY2F0aW9uLCBkZXRhaWwubGVuZ3Ro
KSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFw
aC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0
aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sZW5ndGggPiAwICYmIGRl
dGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBo
LmNoZWNraW5nUmFuZ2VDb3ZlcnMoeyByZXN1bHRMb2NhdGlvbiArIGRldGFpbC5yYW5nZS5sb2Nh
dGlvbiwgZGV0YWlsLnJhbmdlLmxlbmd0aCB9KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhZEdyYW1tYXJSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZSh7IHJlc3VsdExvY2F0aW9uICsg
ZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pOwogICAgICAgICAg
ICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5t
YXJrZXJzKCkuYWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXIsIGRldGFpbC51c2VyRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTI4NzcsNyArMjg3Niw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZv
cihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAg
ICAgICAgICAvLyAyLiBUaGUgcmVzdWx0IGRvZXNuJ3QgZW5kIGF0IGFuIGFtYmlndW91cyBib3Vu
ZGFyeS4KICAgICAgICAgICAgIC8vICAgIChGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB1bnRpbCA2
ODUzMDI3IGlzIGZpeGVkIGFuZCB0ZXh0IGNoZWNraW5nIGNhbiBkbyB0aGlzIGZvciB1cwogICAg
ICAgICAgICAgYm9vbCBkb1JlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgPiAwICYm
ICFyZXN1bHRFbmRzQXRBbWJpZ3VvdXNCb3VuZGFyeTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2VU
b1JlcGxhY2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0
aCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlVG9SZXBsYWNlID0gcGFyYWdyYXBoLnN1YnJhbmdl
KHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKIAogICAgICAgICAgICAgLy8gQWRk
aW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9ubHkgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhleSBhcmUg
dHlwZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rICYmIHNlbGVjdGlvbk9mZnNldCAhPSByZXN1bHRFbmRMb2NhdGlvbiArIDEpCkBAIC0yOTE0
LDcgKzI5MTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxD
aGVja1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgICAgIGlm
IChjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUxpbmtDb21tYW5k
OjpjcmVhdGUoZG9jdW1lbnQoKSwgcmVwbGFjZW1lbnQpLT5hcHBseSgpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChjYW5FZGl0KCkgJiYgc2hvdWxkSW5zZXJ0VGV4dChyZXBsYWNlbWVudCwgcmFu
Z2VUb1JlcGxhY2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKSB7Ci0gICAgICAg
ICAgICAgICAgY29ycmVjdFNwZWxsY2hlY2tpbmdQcmVzZXJ2aW5nVGV4dENoZWNraW5nUGFyYWdy
YXBoKHBhcmFncmFwaCwgcmFuZ2VUb1JlcGxhY2UsIHJlcGxhY2VtZW50LCByZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBjb3JyZWN0U3BlbGxjaGVja2luZ1By
ZXNlcnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgocGFyYWdyYXBoLCByYW5nZVRvUmVwbGFjZSwg
cmVwbGFjZW1lbnQsIHsgcmVzdWx0TG9jYXRpb24sIHJlc3VsdExlbmd0aCB9KTsKIAogICAgICAg
ICAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdB
WE9iamVjdENhY2hlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHJvb3Qg
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkK
QEAgLTI5MjIsNyArMjkyMSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRlCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCBhbGwgb3RoZXIgcmVzdWx0cyBmb3Ig
dGhlIHJlcGxhY2VkIHRleHQuCi0gICAgICAgICAgICAgICAgd2hpbGUgKGkgKyAxIDwgcmVzdWx0
cy5zaXplKCkgJiYgcmVzdWx0c1tpICsgMV0ubG9jYXRpb24gKyBvZmZzZXREdWVUb1JlcGxhY2Vt
ZW50IDw9IHJlc3VsdExvY2F0aW9uKQorICAgICAgICAgICAgICAgIHdoaWxlIChpICsgMSA8IHJl
c3VsdHMuc2l6ZSgpICYmIHJlc3VsdHNbaSArIDFdLnJhbmdlLmxvY2F0aW9uICsgb2Zmc2V0RHVl
VG9SZXBsYWNlbWVudCA8PSByZXN1bHRMb2NhdGlvbikKICAgICAgICAgICAgICAgICAgICAgaSsr
OwogCiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CkBAIC0yOTMxLDcg
KzI5MzAsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVj
a1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxUZQogICAgICAgICAgICAgICAgICAgICBz
ZWxlY3Rpb25PZmZzZXQgKz0gcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSByZXN1bHRMZW5ndGg7CiAK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3Jy
ZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1lbnRSYW5nZSA9IHBh
cmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UoeyByZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpBY2NlcHRlZCwgcmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VtZW50UmFuZ2UucHRyKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFu
ZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCkBAIC0yOTQ1LDggKzI5NDQsOCBAQCB2b2lkIEVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IoY29uc3QgU3BlbGxDaGVja1JlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFZlY3RvcjxUZQogICAgICAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggZXh0ZW5kZWRQYXJh
Z3JhcGgoV1RGTW92ZShwYXJhZ3JhcGgpKTsKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgY2FyZXQg
cG9zaXRpb24gaWYgd2UgaGF2ZSBtYWRlIGFueSByZXBsYWNlbWVudHMKICAgICAgICAgZXh0ZW5k
ZWRQYXJhZ3JhcGguZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKLSAgICAgICAgaWYgKHJlc3RvcmVT
ZWxlY3Rpb25BZnRlckNoYW5nZSAmJiBzZWxlY3Rpb25PZmZzZXQgPj0gMCAmJiBzZWxlY3Rpb25P
ZmZzZXQgPD0gZXh0ZW5kZWRQYXJhZ3JhcGgucmFuZ2VMZW5ndGgoKSkgewotICAgICAgICAgICAg
YXV0byBzZWxlY3Rpb25SYW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKDAsIHNlbGVj
dGlvbk9mZnNldCk7CisgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYg
c2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJyYW5n
ZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAg
ICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQogICAg
ICAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwpA
QCAtMjk3Myw3ICsyOTcyLDcgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2U6OlJldmVydGVkLCByZXBsYWNlZFN0cmluZywgc2VsZWN0aW9uLmdldCgpKTsKICAgICBU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKCpzZWxlY3Rpb24pOwogICAgIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlZFN0cmluZywgU2VsZWN0UmVwbGFjZW1lbnQ6Ok5vLCBT
bWFydFJlcGxhY2U6Ok5vLCBFZGl0QWN0aW9uOjpJbnNlcnQpOwotICAgIGF1dG8gY2hhbmdlZFJh
bmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxh
Y2VkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5z
dWJyYW5nZShDaGFyYWN0ZXJSYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNl
ZFN0cmluZy5sZW5ndGgoKSkpOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwogI2Vsc2UKQEAgLTM3NzcsMTIgKzM3NzYs
OSBAQCB2b2lkIEVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBob25lTnVtYmVycyhSYW5nZSYgcmFu
Z2UsIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZwogCiAgICAgICAgIEFTU0VSVChzY2FubmVyUG9z
aXRpb24gKyByZWxhdGl2ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsKIAotICAgICAgICB1bnNpZ25l
ZCBzdWJyYW5nZU9mZnNldCA9IHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlv
bjsKLSAgICAgICAgdW5zaWduZWQgc3VicmFuZ2VMZW5ndGggPSByZWxhdGl2ZUVuZFBvc2l0aW9u
IC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMTsKLQotICAgICAgICBhdXRvIHN1YnJhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShyYW5nZSwgc3VicmFuZ2VPZmZzZXQsIHN1YnJhbmdlTGVu
Z3RoKTsKKyAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5n
ZSwgQ2hhcmFjdGVyUmFuZ2Uoc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0aW9u
LCByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMSkpOwogCi0g
ICAgICAgIG1hcmtlZFJhbmdlcy5hcHBlbmQoc3VicmFuZ2UucHRyKCkpOworICAgICAgICBtYXJr
ZWRSYW5nZXMuYXBwZW5kKGNyZWF0ZUxpdmVSYW5nZShzdWJyYW5nZSkpOwogICAgICAgICByYW5n
ZS5vd25lckRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihzdWJyYW5nZSwgRG9jdW1lbnRN
YXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CiAKICAgICAgICAgc2Nhbm5lclBvc2l0aW9uICs9IHJl
bGF0aXZlRW5kUG9zaXRpb24gKyAxOwpAQCAtMzk5MiwxNCArMzk4OCwxNCBAQCBSZWZQdHI8UmFu
Z2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpIGNvbnN0CiAKIFJl
ZlB0cjxSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0
Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoIXJlc3VsdC5sZW5ndGgp
CisgICAgaWYgKCFyZXN1bHQucmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dFJhbmdlID0gY29udGV4dFJhbmdlRm9yQ2FuZGlk
YXRlUmVxdWVzdCgpOwogICAgIGlmICghY29udGV4dFJhbmdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVS
YW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmNvbnRleHRSYW5nZSwgcmVzdWx0LnJhbmdlKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpzY2hlZHVsZUVkaXRvclVJVXBkYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCBhZDgyNzg4OWNhYjU4
NWQzMDE1OTZhNjNhYmRlYzZmZjRiNzVlMzc0Li45OWI4ZTMxZGYwZGNjNjJhZjFmYWUwOWQzMTZh
YmYwOTkwYjhjOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC02Myw4ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGZpbmRHcmFtbWF0
aWNhbEVycm9ycyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZl
CiAKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IGJhZEdyYW1tYXI7CiAgICAgICAgIGJhZEdy
YW1tYXIudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7Ci0gICAgICAgIGJhZEdyYW1t
YXIubG9jYXRpb24gPSBjaGVja0xvY2F0aW9uICsgYmFkR3JhbW1hckxvY2F0aW9uOwotICAgICAg
ICBiYWRHcmFtbWFyLmxlbmd0aCA9IGJhZEdyYW1tYXJMZW5ndGg7CisgICAgICAgIGJhZEdyYW1t
YXIucmFuZ2UgPSBDaGFyYWN0ZXJSYW5nZShjaGVja0xvY2F0aW9uICsgYmFkR3JhbW1hckxvY2F0
aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAgYmFkR3JhbW1hci5kZXRhaWxzID0gV1RG
TW92ZShiYWRHcmFtbWFyRGV0YWlscyk7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGJhZEdyYW1t
YXIpOwogCkBAIC05Nyw5ICs5Niw4IEBAIHN0YXRpYyB2b2lkIGZpbmRNaXNzcGVsbGluZ3MoVGV4
dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8CiAKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgIG1pc3Nw
ZWxsaW5nLnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKLSAgICAgICAgICAgIG1p
c3NwZWxsaW5nLmxvY2F0aW9uID0gd29yZFN0YXJ0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKLSAg
ICAgICAgICAgIG1pc3NwZWxsaW5nLmxlbmd0aCA9IG1pc3NwZWxsaW5nTGVuZ3RoOwotICAgICAg
ICAgICAgbWlzc3BlbGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcubG9jYXRp
b24sIG1pc3NwZWxsaW5nLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICAg
ICAgICAgIG1pc3NwZWxsaW5nLnJhbmdlID0gQ2hhcmFjdGVyUmFuZ2Uod29yZFN0YXJ0ICsgbWlz
c3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgbWlzc3Bl
bGxpbmcucmVwbGFjZW1lbnQgPSBjbGllbnQuZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlz
c3BlbGxlZFdvcmQodGV4dC5zdWJzdHJpbmcobWlzc3BlbGxpbmcucmFuZ2UubG9jYXRpb24sIG1p
c3NwZWxsaW5nLnJhbmdlLmxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1pc3NwZWxsaW5nKTsKICAgICAgICAgfQogCkBAIC0xMzks
MTQgKzEzNywxMyBAQCB2b2lkIFRleHRDaGVja2luZ1BhcmFncmFwaDo6ZXhwYW5kUmFuZ2VUb05l
eHRFbmQoKQogdm9pZCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhS
YW5nZVZhbHVlcygpCiB7CiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7Ci0gICAgbV9jaGVj
a2luZ0VuZC5yZXNldCgpOwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydC5yZXNldCgp
OwogICAgIG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGgucmVzZXQoKTsKICAgICBtX29mZnNl
dEFzUmFuZ2UgPSBudWxscHRyOwogICAgIG1fdGV4dCA9IFN0cmluZygpOwogfQogCi1pbnQgVGV4
dENoZWNraW5nUGFyYWdyYXBoOjpyYW5nZUxlbmd0aCgpIGNvbnN0Cit1aW50NjRfdCBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6OnJhbmdlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFj
dGVyQ291bnQocGFyYWdyYXBoUmFuZ2UoKSk7CiB9CkBAIC0xNTgsMTIgKzE1NSwxMiBAQCBSYW5n
ZSYgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0CiAgICAgcmV0
dXJuICptX3BhcmFncmFwaFJhbmdlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRDaGVja2luZ1BhcmFn
cmFwaDo6c3VicmFuZ2UoaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KSBj
b25zdAorUmVmPFJhbmdlPiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OnN1YnJhbmdlKENoYXJhY3Rl
clJhbmdlIHJhbmdlKSBjb25zdAogewotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdl
KHBhcmFncmFwaFJhbmdlKCksIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOworICAg
IHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJhY3RlclJhbmdlKHBhcmFncmFwaFJh
bmdlKCksIHJhbmdlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitFeGNlcHRpb25P
cjx1aW50NjRfdD4gVGV4dENoZWNraW5nUGFyYWdyYXBoOjpvZmZzZXRUbyhjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50
KHBhcmFncmFwaFJhbmdlKCkuc3RhcnRQb3NpdGlvbigpKTsKICAgICBhdXRvIGVuZCA9IG1ha2VC
b3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKQEAgLTE4NywzNSArMTg0LDMzIEBAIFJhbmdlJiBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6Om9mZnNldEFzUmFuZ2UoKSBjb25zdAogICAgIHJldHVybiAqbV9v
ZmZzZXRBc1JhbmdlOwogfQogCi1jb25zdCBTdHJpbmcmIFRleHRDaGVja2luZ1BhcmFncmFwaDo6
dGV4dCgpIGNvbnN0CitTdHJpbmdWaWV3IFRleHRDaGVja2luZ1BhcmFncmFwaDo6dGV4dCgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCisgICAgaWYgKG1fdGV4dC5pc051bGwo
KSkKICAgICAgICAgbV90ZXh0ID0gcGxhaW5UZXh0KCZwYXJhZ3JhcGhSYW5nZSgpKTsKICAgICBy
ZXR1cm4gbV90ZXh0OyAKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdT
dGFydCgpIGNvbnN0Cit1aW50NjRfdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nU3Rh
cnQoKSBjb25zdAogewogICAgIGlmICghbV9jaGVja2luZ1N0YXJ0KQogICAgICAgICBtX2NoZWNr
aW5nU3RhcnQgPSBjaGFyYWN0ZXJDb3VudChvZmZzZXRBc1JhbmdlKCkpOwogICAgIHJldHVybiAq
bV9jaGVja2luZ1N0YXJ0OwogfQogCi1pbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2lu
Z0VuZCgpIGNvbnN0Cit1aW50NjRfdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmNoZWNraW5nRW5k
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2hlY2tpbmdFbmQpCi0gICAgICAgIG1fY2hlY2tpbmdF
bmQgPSBjaGVja2luZ1N0YXJ0KCkgKyBjaGVja2luZ0xlbmd0aCgpOwotICAgIHJldHVybiAqbV9j
aGVja2luZ0VuZDsKKyAgICByZXR1cm4gY2hlY2tpbmdTdGFydCgpICsgY2hlY2tpbmdMZW5ndGgo
KTsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6Y2hlY2tpbmdMZW5ndGgoKSBjb25z
dAordWludDY0X3QgVGV4dENoZWNraW5nUGFyYWdyYXBoOjpjaGVja2luZ0xlbmd0aCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2NoZWNraW5nTGVuZ3RoKQogICAgICAgICBtX2NoZWNraW5nTGVuZ3Ro
ID0gY2hhcmFjdGVyQ291bnQobV9jaGVja2luZ1JhbmdlKTsKICAgICByZXR1cm4gKm1fY2hlY2tp
bmdMZW5ndGg7CiB9CiAKLWludCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmF1dG9tYXRpY1JlcGxh
Y2VtZW50U3RhcnQoKSBjb25zdAordWludDY0X3QgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRv
bWF0aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvbWF0aWNSZXBs
YWNlbWVudFN0YXJ0KQogICAgICAgICByZXR1cm4gKm1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFy
dDsKQEAgLTIyOSw3ICsyMjQsNyBAQCBpbnQgVGV4dENoZWNraW5nUGFyYWdyYXBoOjphdXRvbWF0
aWNSZXBsYWNlbWVudFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4gKm1fYXV0b21hdGljUmVwbGFj
ZW1lbnRTdGFydDsKIH0KIAotaW50IFRleHRDaGVja2luZ1BhcmFncmFwaDo6YXV0b21hdGljUmVw
bGFjZW1lbnRMZW5ndGgoKSBjb25zdAordWludDY0X3QgVGV4dENoZWNraW5nUGFyYWdyYXBoOjph
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYXV0b21hdGlj
UmVwbGFjZW1lbnRMZW5ndGgpCiAgICAgICAgIHJldHVybiAqbV9hdXRvbWF0aWNSZXBsYWNlbWVu
dExlbmd0aDsKQEAgLTI0NiwxMiArMjQxLDEyIEBAIFRleHRDaGVja2luZ0hlbHBlcjo6VGV4dENo
ZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYgY2xpZW50LCBSYW5nZSYgcmFuZ2UpCiAKIFRleHRD
aGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hlbHBlcigpID0gZGVmYXVsdDsKIAotU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3Nw
ZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxp
bmdSYW5nZSkKK1N0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5n
KHVpbnQ2NF90JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29sIG1hcmtBbGwsIFJlZlB0cjxS
YW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKIHsKICAgICBmaXJzdE1pc3NwZWxsaW5nT2Zm
c2V0ID0gMDsKIAogICAgIFN0cmluZyBmaXJzdE1pc3NwZWxsaW5nOwotICAgIGludCBjdXJyZW50
Q2h1bmtPZmZzZXQgPSAwOworICAgIHVpbnQ2NF90IGN1cnJlbnRDaHVua09mZnNldCA9IDA7CiAK
ICAgICBmb3IgKFdvcmRBd2FyZUl0ZXJhdG9yIGl0KG1fcmFuZ2UpOyAhaXQuYXRFbmQoKTsgY3Vy
cmVudENodW5rT2Zmc2V0ICs9IGl0LnRleHQoKS5sZW5ndGgoKSwgaXQuYWR2YW5jZSgpKSB7CiAg
ICAgICAgIFN0cmluZ1ZpZXcgdGV4dCA9IGl0LnRleHQoKTsKQEAgLTI3NywxNyArMjcyLDE3IEBA
IFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmly
c3RNaXNzcGVsbGluZ09mZnNldCwgYm9vCiAKICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRp
b24gPj0gMCAmJiBtaXNzcGVsbGluZ0xlbmd0aCA+IDAgJiYgbWlzc3BlbGxpbmdMb2NhdGlvbiA8
IHRleHRMZW5ndGggJiYgbWlzc3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCAmJiBtaXNzcGVs
bGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGggPD0gdGV4dExlbmd0aCkgewogICAgICAg
ICAgICAgLy8gQ29tcHV0ZSByYW5nZSBvZiBtaXNzcGVsbGVkIHdvcmQKLSAgICAgICAgICAgIGF1
dG8gbWlzc3BlbGxpbmdSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgY3Vy
cmVudENodW5rT2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgp
OworICAgICAgICAgICAgYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJh
bmdlKG1fcmFuZ2UsIENoYXJhY3RlclJhbmdlKGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxs
aW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKSk7CiAKICAgICAgICAgICAgIC8vIFJlbWVt
YmVyIGZpcnN0LWVuY291bnRlcmVkIG1pc3NwZWxsaW5nIGFuZCBpdHMgb2Zmc2V0LgogICAgICAg
ICAgICAgaWYgKCFmaXJzdE1pc3NwZWxsaW5nKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNz
cGVsbGluZ09mZnNldCA9IGN1cnJlbnRDaHVua09mZnNldCArIG1pc3NwZWxsaW5nTG9jYXRpb247
CiAgICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZyA9IHRleHQuc3Vic3RyaW5nKG1pc3Nw
ZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAg
ICAgICAgIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSA9IG1pc3NwZWxsaW5nUmFuZ2UucHRyKCk7Cisg
ICAgICAgICAgICAgICAgZmlyc3RNaXNzcGVsbGluZ1JhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKG1p
c3NwZWxsaW5nUmFuZ2UpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTdG9yZSBt
YXJrZXIgZm9yIG1pc3NwZWxsZWQgd29yZC4KLSAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxs
aW5nUmFuZ2UsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CisgICAgICAgICAgICBtaXNzcGVs
bGluZ1JhbmdlLnN0YXJ0LmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGlu
Z1JhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgICAgICAgICAvLyBCYWls
IG91dCBpZiB3ZSdyZSBtYXJraW5nIG9ubHkgdGhlIGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90
IGFsbCBpbnN0YW5jZXMuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC0yOTgsNyArMjkz
LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50
JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KICAgICByZXR1cm4gZmlyc3RNaXNzcGVsbGlu
ZzsKIH0KIAotU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdP
ckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYg
b3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKK1N0
cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFy
KGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCB1aW50NjRfdCYgb3V0Rmly
c3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBp
ZiAoIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CkBAIC0zMTMsOCArMzA4LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAv
LyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJzOyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2Ug
ZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgogICAgIG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAg
IG91dEZpcnN0Rm91bmRPZmZzZXQgPSAwOwotICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24g
PSAtMTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLmxlbmd0aCA9IDA7CisgICAgb3V0R3JhbW1hckRl
dGFpbC5yYW5nZSA9IHsgfTsKICAgICBvdXRHcmFtbWFyRGV0YWlsLmd1ZXNzZXMuY2xlYXIoKTsK
ICAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IGVtcHR5U3RyaW5nKCk7CiAg
ICAgCkBAIC0zMjcsMTUgKzMyMSwxNSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5k
Rmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIHNl
dEVuZChwYXJhZ3JhcGhSYW5nZS5wdHIoKSwgZW5kT2ZQYXJhZ3JhcGgobV9yYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKSk7CiAgICAgCiAgICAgYXV0byByYW5nZVN0YXJ0T2Zmc2V0ID0gY2hhcmFjdGVy
Q291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSksICptYWtlQm91bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpIH0pOwotICAg
IENoYXJhY3RlckNvdW50IHRvdGFsTGVuZ3RoUHJvY2Vzc2VkID0gMDsKKyAgICB1aW50NjRfdCB0
b3RhbExlbmd0aFByb2Nlc3NlZCA9IDA7CiAgICAgCiAgICAgYm9vbCBmaXJzdEl0ZXJhdGlvbiA9
IHRydWU7CiAgICAgYm9vbCBsYXN0SXRlcmF0aW9uID0gZmFsc2U7CiAgICAgd2hpbGUgKHRvdGFs
TGVuZ3RoUHJvY2Vzc2VkIDwgdG90YWxSYW5nZUxlbmd0aCkgewogICAgICAgICAvLyBJdGVyYXRl
IHRocm91Z2ggdGhlIHNlYXJjaCByYW5nZSBieSBwYXJhZ3JhcGhzLCBjaGVja2luZyBlYWNoIG9u
ZSBmb3Igc3BlbGxpbmcgYW5kIGdyYW1tYXIuCiAgICAgICAgIGF1dG8gY3VycmVudExlbmd0aCA9
IGNoYXJhY3RlckNvdW50KHBhcmFncmFwaFJhbmdlKTsKLSAgICAgICAgaW50IGN1cnJlbnRTdGFy
dE9mZnNldCA9IGZpcnN0SXRlcmF0aW9uID8gcmFuZ2VTdGFydE9mZnNldCA6IDA7Ci0gICAgICAg
IGludCBjdXJyZW50RW5kT2Zmc2V0ID0gY3VycmVudExlbmd0aDsKKyAgICAgICAgdWludDY0X3Qg
Y3VycmVudFN0YXJ0T2Zmc2V0ID0gZmlyc3RJdGVyYXRpb24gPyByYW5nZVN0YXJ0T2Zmc2V0IDog
MDsKKyAgICAgICAgdWludDY0X3QgY3VycmVudEVuZE9mZnNldCA9IGN1cnJlbnRMZW5ndGg7CiAg
ICAgICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0
aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCBy
YW5nZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3
ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgpAQCAtMzQ2LDkgKzM0
MCw5IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JC
YWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICBTdHJpbmcgcGFyYWdy
YXBoU3RyaW5nID0gcGxhaW5UZXh0KHBhcmFncmFwaFJhbmdlLnB0cigpKTsKICAgICAgICAgICAg
IGlmIChwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgYm9v
bCBmb3VuZEdyYW1tYXIgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdMb2Nh
dGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IDA7
Ci0gICAgICAgICAgICAgICAgaW50IGdyYW1tYXJEZXRhaWxMb2NhdGlvbiA9IDA7CisgICAgICAg
ICAgICAgICAgdWludDY0X3Qgc3BlbGxpbmdMb2NhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAg
dWludDY0X3QgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0gMDsKKyAgICAgICAgICAgICAgICB1aW50
NjRfdCBncmFtbWFyRGV0YWlsTG9jYXRpb24gPSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGdyYW1tYXJEZXRhaWxJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKQEAgLTM2MSw0MiArMzU1LDQy
IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoKm1fY2xpZW50LnRleHRDaGVja2VyKCksIHBhcmFncmFwaFN0cmluZywgY2hlY2tp
bmdUeXBlcywgcmVzdWx0cywgY3VycmVudFNlbGVjdGlvbik7CiAKICAgICAgICAgICAgICAgICBm
b3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5sb2NhdGlv
biA+PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgcmVzdWx0Lmxlbmd0
aCA8PSBjdXJyZW50RW5kT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRp
b24gPSByZXN1bHQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVk
V29yZCA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LmxvY2F0aW9uLCByZXN1bHQu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFRleHRDaGVj
a2luZ1R5cGU6OlNwZWxsaW5nICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50U3Rh
cnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA8
PSBjdXJyZW50RW5kT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0LnJhbmdlLmxlbmd0aCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxs
aW5nTG9jYXRpb24gPSByZXN1bHQucmFuZ2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnJh
bmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hlY2tHcmFtbWFyICYmIHJlc3VsdC50eXBlID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIgJiYgcmVzdWx0LmxvY2F0aW9uIDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQubG9jYXRp
b24gKyByZXN1bHQubGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFt
bWFyICYmIHJlc3VsdC5yYW5nZS5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0
LnJhbmdlLmxvY2F0aW9uICsgcmVzdWx0LnJhbmdlLmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNl
dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5yYW5nZS5sZW5ndGgg
PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQucmFuZ2UubG9jYXRp
b24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzdG9wIGFmdGVy
IHRoZSBmaXJzdCBncmFtbWFyIHJlc3VsdCwgc2luY2UgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSBz
cGVsbGluZyByZXN1bHQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGJlZ2lu
cyBidXQgYmVmb3JlIHRoZSBmaXJzdCBkZXRhaWwgaW4gaXQsIGJ1dCB3ZSBjYW4gc3RvcCBpZiB3
ZSBmaW5kIGEgc2Vjb25kIGdyYW1tYXIgcmVzdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGZvdW5kR3JhbW1hcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuZGV0
YWlscy5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdy
YW1tYXJEZXRhaWwqIGRldGFpbCA9ICZyZXN1bHQuZGV0YWlsc1tqXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5sZW5ndGggPiAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA+
PSBjdXJyZW50U3RhcnRPZmZzZXQgJiYgcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlv
biArIGRldGFpbC0+bGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3VuZEdyYW1tYXIg
fHwgcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA8IGdyYW1tYXJEZXRhaWxMb2Nh
dGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5yYW5n
ZS5sZW5ndGggPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWls
LT5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbiA+PSBjdXJyZW50
U3RhcnRPZmZzZXQgJiYgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2Nh
dGlvbiArIGRldGFpbC0+cmFuZ2UubGVuZ3RoIDw9IGN1cnJlbnRFbmRPZmZzZXQgJiYgKCFmb3Vu
ZEdyYW1tYXIgfHwgcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlv
biA8IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JhbW1hckRldGFpbEluZGV4ID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JhbW1hckRldGFpbExvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uICsgZGV0YWlsLT5s
b2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckRldGFpbExv
Y2F0aW9uID0gcmVzdWx0LnJhbmdlLmxvY2F0aW9uICsgZGV0YWlsLT5yYW5nZS5sb2NhdGlvbjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRHcmFtbWFyID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRHcmFtbWFyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZUxvY2F0aW9uID0gcmVzdWx0LmxvY2F0aW9uOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJlc3Vs
dC5yYW5nZS5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRHcmFtbWFy
RGV0YWlsID0gcmVzdWx0LmRldGFpbHNbZ3JhbW1hckRldGFpbEluZGV4XTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0
cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJl
c3VsdC5yYW5nZS5sb2NhdGlvbiwgcmVzdWx0LnJhbmdlLmxlbmd0aCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYg
KCFjaGVja0dyYW1tYXIgfHwgYmFkR3JhbW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdM
b2NhdGlvbiA8PSBncmFtbWFyRGV0YWlsTG9jYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGludCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxp
bmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFmaXJzdEl0ZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0
ICs9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KG1fcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSksICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlv
bigpKSB9KTsKICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CkBAIC00
MDUsNyArMzk5LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjaGVja0dy
YW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3Vy
cmVudFN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0Owog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91
bmRhcnlQb2ludChtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCkpLCAqbWFrZUJvdW5kYXJ5UG9pbnQo
cGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfSk7CiAgICAgICAgICAgICAgICAgICAg
IG91dElzU3BlbGxpbmcgPSBmYWxzZTsKQEAgLTQyOCwxOCArNDIyLDE4IEBAIFN0cmluZyBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hl
Y2tHcmFtbWFyLCBiCiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIAotaW50IFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQg
c3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3QKK2ludCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgdWludDY0X3QgYmFkR3JhbW1hclBocmFzZUxvY2F0
aW9uLCB1aW50NjRfdCBzdGFydE9mZnNldCwgdWludDY0X3QgZW5kT2Zmc2V0LCBib29sIG1hcmtB
bGwpIGNvbnN0CiB7CiAgICAgLy8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4gRmluZCB0aGUgZWFy
bGllc3QgZGV0YWlsIHJhbmdlIHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2ggcmFuZ2UgKGlmIGFu
eSkuCiAgICAgLy8gT3B0aW9uYWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBmb3IgZWFjaCBkZXRh
aWwgaW4gdGhlIHJhbmdlLgotICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSAt
MTsKKyAgICB1aW50NjRfdCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSAwOwogICAgIGlu
dCBlYXJsaWVzdERldGFpbEluZGV4ID0gLTE7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGdyYW1tYXJEZXRhaWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRh
aWwqIGRldGFpbCA9ICZncmFtbWFyRGV0YWlsc1tpXTsKLSAgICAgICAgQVNTRVJUKGRldGFpbC0+
bGVuZ3RoID4gMCk7Ci0gICAgICAgIEFTU0VSVChkZXRhaWwtPmxvY2F0aW9uID49IDApOworICAg
ICAgICBBU1NFUlQoZGV0YWlsLT5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAgICAgQVNTRVJUKGRl
dGFpbC0+cmFuZ2UubG9jYXRpb24gPj0gMCk7CiAgICAgICAgIAotICAgICAgICBpbnQgZGV0YWls
U3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGRldGFp
bC0+bG9jYXRpb247CisgICAgICAgIHVpbnQ2NF90IGRldGFpbFN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGggPSBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gKyBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uOwog
ICAgICAgICAKICAgICAgICAgLy8gU2tpcCB0aGlzIGRldGFpbCBpZiBpdCBzdGFydHMgYmVmb3Jl
IHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UKICAgICAgICAgaWYgKGRldGFpbFN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPCBzdGFydE9mZnNldCkKQEAgLTQ1MCwzMCArNDQ0LDI5IEBAIGludCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiBncmFtCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAg
IGlmIChtYXJrQWxsKSB7Ci0gICAgICAgICAgICBhdXRvIGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UobV9yYW5nZSwgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0gc3Rh
cnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0aCk7Ci0gICAgICAgICAg
ICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFp
bC0+dXNlckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gYmFkR3JhbW1hclJhbmdlID0g
cmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1fcmFuZ2UuZ2V0KCksIHsgYmFkR3JhbW1hclBocmFzZUxv
Y2F0aW9uIC0gc3RhcnRPZmZzZXQgKyBkZXRhaWwtPnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwtPnJh
bmdlLmxlbmd0aCB9KTsKKyAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS5zdGFydC5kb2N1bWVu
dCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLCBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBvbmx5IGlmIGl0J3MgZWFybGllciB0aGFu
IG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFpbHMgYXJlbid0IGluIGEgZ3VhcmFudGVl
ZCBvcmRlcikKLSAgICAgICAgaWYgKGVhcmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0
RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRldGFpbC0+bG9jYXRpb24pIHsKKyAgICAgICAgaWYgKGVh
cmxpZXN0RGV0YWlsSW5kZXggPCAwIHx8IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA+IGRl
dGFpbC0+cmFuZ2UubG9jYXRpb24pIHsKICAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsSW5kZXgg
PSBpOwotICAgICAgICAgICAgZWFybGllc3REZXRhaWxMb2NhdGlvblNvRmFyID0gZGV0YWlsLT5s
b2NhdGlvbjsKKyAgICAgICAgICAgIGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IGRldGFp
bC0+cmFuZ2UubG9jYXRpb247CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGVh
cmxpZXN0RGV0YWlsSW5kZXg7CiB9CiAKLVN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRG
aXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRH
cmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CitTdHJpbmcgVGV4dENoZWNr
aW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwsIHVpbnQ2NF90JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNv
bnN0CiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1
cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVybi4KLSAgICBvdXRHcmFtbWFyRGV0
YWlsLmxvY2F0aW9uID0gLTE7Ci0gICAgb3V0R3JhbW1hckRldGFpbC5sZW5ndGggPSAwOworICAg
IG91dEdyYW1tYXJEZXRhaWwucmFuZ2UgPSB7IH07CiAgICAgb3V0R3JhbW1hckRldGFpbC5ndWVz
c2VzLmNsZWFyKCk7CiAgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBlbXB0
eVN0cmluZygpOwogICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwogICAgIAotICAgIFN0
cmluZyBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nVmlldyBmaXJzdEJhZEdyYW1t
YXJQaHJhc2U7CiAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNvbXBhc3Mg
ZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIGdyYW1tYXIgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNo
IGNvbnRleHQuCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhl
IHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIHRoZSBvcmlnaW5hbCBzZWFy
Y2ggcmFuZ2UsCkBAIC00ODEsMTEgKzQ3NCwxMSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAg
ICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChtX3JhbmdlLmNvcHlSZWYoKSk7CiAg
ICAgCiAgICAgLy8gU3RhcnQgY2hlY2tpbmcgZnJvbSBiZWdpbm5pbmcgb2YgcGFyYWdyYXBoLCBi
dXQgc2tpcCBwYXN0IHJlc3VsdHMgdGhhdCBvY2N1ciBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBv
cmlnaW5hbCBzZWFyY2ggcmFuZ2UuCi0gICAgZm9yIChpbnQgc3RhcnRPZmZzZXQgPSAwOyBzdGFy
dE9mZnNldCA8IHBhcmFncmFwaC5jaGVja2luZ0VuZCgpOyApIHsKKyAgICBmb3IgKHVpbnQ2NF90
IHN0YXJ0T2Zmc2V0ID0gMDsgc3RhcnRPZmZzZXQgPCBwYXJhZ3JhcGguY2hlY2tpbmdFbmQoKTsg
KSB7CiAgICAgICAgIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiBncmFtbWFyRGV0YWlsczsKICAgICAg
ICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IC0xOwogICAgICAgICBpbnQgYmFkR3Jh
bW1hclBocmFzZUxlbmd0aCA9IDA7Ci0gICAgICAgIG1fY2xpZW50LnRleHRDaGVja2VyKCktPmNo
ZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcocGFyYWdyYXBoLnRleHQoKSkuc3Vic3RyaW5n
KHN0YXJ0T2Zmc2V0KSwgZ3JhbW1hckRldGFpbHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24s
ICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQudGV4dENoZWNrZXIo
KS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHQoKS5zdWJzdHJpbmcoc3RhcnRP
ZmZzZXQpLCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdy
YW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFiYWRHcmFtbWFyUGhy
YXNlTGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZUxvY2F0aW9u
ID09IC0xKTsKQEAgLTUwNiw3ICs0OTksNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsCiAgICAg
ICAgIC8vIGtlcHQgZ29pbmcgc28gd2UgY291bGQgbWFyayBhbGwgaW5zdGFuY2VzKS4KICAgICAg
ICAgaWYgKGJhZEdyYW1tYXJJbmRleCA+PSAwICYmIGZpcnN0QmFkR3JhbW1hclBocmFzZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQgPSBiYWRHcmFtbWFy
UGhyYXNlTG9jYXRpb24gLSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpOwotICAgICAgICAgICAg
Zmlyc3RCYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHRTdWJzdHJpbmcoYmFkR3JhbW1h
clBocmFzZUxvY2F0aW9uLCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsKKyAgICAgICAgICAgIGZp
cnN0QmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaC50ZXh0KCkuc3Vic3RyaW5nKGJhZEdyYW1t
YXJQaHJhc2VMb2NhdGlvbiwgYmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIEZvdW5kIG9uZS4gV2UncmUgZG9uZSBub3csIHVubGVzcyB3ZSdyZSBt
YXJraW5nIGVhY2ggaW5zdGFuY2UuCiAgICAgICAgICAgICBpZiAoIW1hcmtBbGwpCkBAIC01MTgs
NyArNTExLDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1h
cihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBzdGFydE9mZnNldCA9
IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiArIGJhZEdyYW1tYXJQaHJhc2VMZW5ndGg7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7CisgICAgcmV0dXJuIGZp
cnN0QmFkR3JhbW1hclBocmFzZS50b1N0cmluZygpOwogfQogCiBib29sIFRleHRDaGVja2luZ0hl
bHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKQEAgLTUyOSw3ICs1MjIsNyBAQCBib29sIFRl
eHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKCkgY29uc3QKICAgICAvLyBSZXR1cm5z
IHRydWUgb25seSBpZiB0aGUgcGFzc2VkIHJhbmdlIGV4YWN0bHkgY29ycmVzcG9uZHMgdG8gYSBi
YWQgZ3JhbW1hciBkZXRhaWwgcmFuZ2UuIFRoaXMgaXMgYW5hbG9nb3VzCiAgICAgLy8gdG8gaXNT
ZWxlY3Rpb25NaXNzcGVsbGVkLiBJdCdzIG5vdCBnb29kIGVub3VnaCBmb3IgdGhlcmUgdG8gYmUg
c29tZSBiYWQgZ3JhbW1hciBzb21ld2hlcmUgaW4gdGhlIHJhbmdlLAogICAgIC8vIG9yIG92ZXJs
YXBwaW5nIHRoZSByYW5nZTsgdGhlIHJhbmdlcyBtdXN0IGV4YWN0bHkgbWF0Y2guCi0gICAgaW50
IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CisgICAgdWludDY0X3QgZ3JhbW1hclBocmFzZU9mZnNldDsK
ICAgICAKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgU3RyaW5nIGJhZEdy
YW1tYXJQaHJhc2UgPSBmaW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdyYW1tYXJQ
aHJhc2VPZmZzZXQsIGZhbHNlKTsKQEAgLTU0MiwxNSArNTM1LDE1IEBAIGJvb2wgVGV4dENoZWNr
aW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwoKSBjb25zdAogICAgIGlmIChncmFtbWFyUGhyYXNl
T2Zmc2V0ID4gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKGdyYW1tYXJE
ZXRhaWwubG9jYXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwubGVuZ3RoID4g
MCk7CisgICAgQVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRpb24gPj0gMCk7CisgICAg
QVNTRVJUKGdyYW1tYXJEZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CiAKICAgICAvLyBCYWQgZ3Jh
bW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1tYXRpY2FsIHdvcmQpIGRvZXNu
J3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAr
IGdyYW1tYXJQaHJhc2VPZmZzZXQpCisgICAgaWYgKGdyYW1tYXJEZXRhaWwucmFuZ2UubG9jYXRp
b24gKyBncmFtbWFyUGhyYXNlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgLy8gQmFkIGdyYW1tYXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1dCBlbmQgb2YgYmFkIGdyYW1t
YXIgaXMgYmVmb3JlIG9yIGFmdGVyIGVuZCBvZiByYW5nZQotICAgIGlmIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZ3JhbW1hckRldGFpbC5sZW5ndGgpICE9IGNoYXJhY3RlckNvdW50KG1fcmFuZ2Up
KQorICAgIGlmIChncmFtbWFyRGV0YWlsLnJhbmdlLmxlbmd0aCAhPSBjaGFyYWN0ZXJDb3VudCht
X3JhbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFVwZGF0ZSB0aGUg
c3BlbGxpbmcgcGFuZWwgdG8gYmUgZGlzcGxheWluZyB0aGlzIGVycm9yICh3aGV0aGVyIG9yIG5v
dCB0aGUgc3BlbGxpbmcgcGFuZWwgaXMgb24gc2NyZWVuKS4KQEAgLTU5NCw4ICs1ODcsOCBAQCBW
ZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JV
bmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCptX2NsaWVu
dC50ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGgudGV4dCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRz
LCBjdXJyZW50U2VsZWN0aW9uKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykg
ewotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcg
JiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0
Lmxlbmd0aCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFw
aC5jaGVja2luZ1N1YnN0cmluZygpOworICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmcgJiYgcGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHJl
c3VsdC5yYW5nZSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBhcmFn
cmFwaC5jaGVja2luZ1N1YnN0cmluZygpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBBU1NFUlQo
bWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9jbGllbnQudGV4dENoZWNr
ZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobWlzc3BlbGxlZFdvcmQsIFN0cmluZygpLCBjdXJyZW50
U2VsZWN0aW9uLCBndWVzc2VzKTsKICAgICAgICAgICAgIG1fY2xpZW50LnVwZGF0ZVNwZWxsaW5n
VUlXaXRoTWlzc3BlbGxlZFdvcmQobWlzc3BlbGxlZFdvcmQpOwpAQCAtNjA4LDEyICs2MDEsMTIg
QEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxl
ZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAg
ICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHJlc3VsdC50eXBl
ID09IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIgJiYgcGFyYWdyYXBoLmlzQ2hlY2tpbmdSYW5n
ZUNvdmVyZWRCeShyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKSB7CisgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyICYmIHBhcmFncmFwaC5p
c0NoZWNraW5nUmFuZ2VDb3ZlcmVkQnkocmVzdWx0LnJhbmdlKSkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBkZXRhaWwgOiByZXN1bHQuZGV0YWlscykgewotICAgICAgICAgICAgICAgIEFTU0VS
VChkZXRhaWwubGVuZ3RoID4gMCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC5sb2Nh
dGlvbiA+PSAwKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VN
YXRjaGVzKHJlc3VsdC5sb2NhdGlvbiArIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0aCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3Jh
cGgudGV4dFN1YnN0cmluZyhyZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXRhaWwucmFuZ2UubGVuZ3RoID4gMCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGRldGFpbC5yYW5nZS5sb2NhdGlvbiA+PSAwKTsKKyAgICAgICAgICAgICAgICBp
ZiAocGFyYWdyYXBoLmNoZWNraW5nUmFuZ2VNYXRjaGVzKHsgcmVzdWx0LnJhbmdlLmxvY2F0aW9u
ICsgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVuZ3RoIH0pKSB7CisgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoLnRleHQo
KS5zdWJzdHJpbmcocmVzdWx0LnJhbmdlLmxvY2F0aW9uLCByZXN1bHQucmFuZ2UubGVuZ3RoKS50
b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5s
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBkZXRhaWwu
Z3Vlc3NlcykKICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzZXMuYXBwZW5kKGd1ZXNzKTsK
QEAgLTYzMSw3ICs2MjQsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1pc3Nw
ZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZwogewogICAgIC8vIFVz
ZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlzc3BlbGxpbmcuIElnbm9yZSB0
aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIiOwogICAgIC8vIGFsbCB3ZSBu
ZWVkIHRvIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCi0gICAgaW50IGlnbm9yZWRPZmZzZXQ7
CisgICAgdWludDY0X3QgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RNaXNzcGVsbGluZyhp
Z25vcmVkT2Zmc2V0LCB0cnVlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwogfQogCkBAIC02NDEs
NyArNjM0LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkK
ICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIG9maW5kRmlyc3RCYWRHcmFtbWFy
LiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgIm91dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5l
ZWQgdG8KICAgICAvLyBkbyBpcyBtYXJrIGV2ZXJ5IGluc3RhbmNlLgogICAgIEdyYW1tYXJEZXRh
aWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7Ci0gICAgaW50IGlnbm9yZWRPZmZzZXQ7CisgICAgdWlu
dDY0X3QgaWdub3JlZE9mZnNldDsKICAgICBmaW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFt
bWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0LCB0cnVlKTsKIH0KICNlbmRpZgpAQCAtNjY4LDcgKzY2
MSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVu
dCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgaWYgKGNoZWNraW5nVHlwZXMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgdW5zaWduZWQgZ3Jh
bW1hckNoZWNrTGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgZm9yIChhdXRvJiBtaXNw
ZWxsaW5nIDogbWlzcGVsbGluZ3MpCi0gICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBz
dGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNwZWxsaW5nLmxvY2F0aW9u
KTsKKyAgICAgICAgICAgIGdyYW1tYXJDaGVja0xlbmd0aCA9IHN0ZDo6bWluPHVuc2lnbmVkPihn
cmFtbWFyQ2hlY2tMZW5ndGgsIG1pc3BlbGxpbmcucmFuZ2UubG9jYXRpb24pOwogICAgICAgICBm
aW5kR3JhbW1hdGljYWxFcnJvcnMoY2xpZW50LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hl
Y2tMZW5ndGgpLCBncmFtbWF0aWNhbEVycm9ycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAppbmRleCAzZjM5ZTg2OGQ5OTQxZTViODgxYjA2
MTZkZGZjMTZiMzQwMTUxMWQ0Li42ZDJiY2QyZDg5NDhjOTM4OGEzYmRmMWIzNTBiZGEzMGRlZTI5
MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0zNiwzNCArMzYsMjggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRDaGVja2lu
Z1BhcmFncmFwaChSZWY8UmFuZ2U+JiYgY2hlY2tpbmdBbmRBdXRvbWF0aWNSZXBsYWNlbWVudFJh
bmdlKTsKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUmVmPFJhbmdlPiYmIGNo
ZWNraW5nUmFuZ2UsIFJlZjxSYW5nZT4mJiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBSZWZQ
dHI8UmFuZ2U+JiYgcGFyYWdyYXBoUmFuZ2UpOwogCi0gICAgaW50IHJhbmdlTGVuZ3RoKCkgY29u
c3Q7Ci0gICAgUmVmPFJhbmdlPiBzdWJyYW5nZShpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hh
cmFjdGVyQ291bnQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGludD4gb2Zmc2V0VG8oY29uc3Qg
UG9zaXRpb24mKSBjb25zdDsKKyAgICB1aW50NjRfdCByYW5nZUxlbmd0aCgpIGNvbnN0OworICAg
IFJlZjxSYW5nZT4gc3VicmFuZ2UoQ2hhcmFjdGVyUmFuZ2UpIGNvbnN0OworICAgIEV4Y2VwdGlv
bk9yPHVpbnQ2NF90PiBvZmZzZXRUbyhjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIHZvaWQg
ZXhwYW5kUmFuZ2VUb05leHRFbmQoKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBjaGFuZ2lu
ZyB0aGlzIHRvIHJldHVybiBhIFN0cmluZ1ZpZXcuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkg
Y29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgYW5kIGp1c3Qg
aGF2aW5nIHRoZSBjYWxsZXIgdXNlIHRleHQoKSBkaXJlY3RseS4KLSAgICBpbnQgdGV4dExlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQotICAgIFN0cmluZyB0ZXh0U3Vi
c3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0IHsgcmV0
dXJuIHRleHQoKS5zdWJzdHJpbmcocG9zLCBsZW4pOyB9Ci0gICAgVUNoYXIgdGV4dENoYXJBdChp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpXTsgfQorICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CiAKLSAgICBpbnQgY2hlY2tpbmdTdGFydCgpIGNvbnN0OwotICAgIGludCBjaGVj
a2luZ0VuZCgpIGNvbnN0OwotICAgIGludCBjaGVja2luZ0xlbmd0aCgpIGNvbnN0OwotICAgIFN0
cmluZyBjaGVja2luZ1N1YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRTdWJzdHJpbmcoY2hl
Y2tpbmdTdGFydCgpLCBjaGVja2luZ0xlbmd0aCgpKTsgfQorICAgIHVpbnQ2NF90IGNoZWNraW5n
U3RhcnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBjaGVja2luZ0VuZCgpIGNvbnN0OworICAgIHVp
bnQ2NF90IGNoZWNraW5nTGVuZ3RoKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBjaGVja2luZ1N1
YnN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5zdWJzdHJpbmcoY2hlY2tpbmdTdGFydCgp
LCBjaGVja2luZ0xlbmd0aCgpKTsgfQogCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgcmFuZ2UgaW4g
d2hpY2ggd2UgYWxsb3cgYXV0b21hdGljIHRleHQgcmVwbGFjZW1lbnQuIElmIGFuIGF1dG9tYXRp
YyByZXBsYWNlbWVudCByYW5nZSBpcyBub3QgcGFzc2VkIHRvIHRoZQogICAgIC8vIHRleHQgY2hl
Y2tpbmcgcGFyYWdyYXBoLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBzcGVsbCBjaGVja2luZyByYW5n
ZS4KLSAgICBpbnQgYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGludCBh
dXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGF1dG9tYXRp
Y1JlcGxhY2VtZW50U3RhcnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBhdXRvbWF0aWNSZXBsYWNl
bWVudExlbmd0aCgpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja2luZ1JhbmdlTWF0Y2hlcyhpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uID09IGNoZWNraW5n
U3RhcnQoKSAmJiBsZW5ndGggPT0gY2hlY2tpbmdMZW5ndGgoKTsgfQotICAgIGJvb2wgaXNDaGVj
a2luZ1JhbmdlQ292ZXJlZEJ5KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkgY29uc3QgeyByZXR1
cm4gbG9jYXRpb24gPD0gY2hlY2tpbmdTdGFydCgpICYmIGxvY2F0aW9uICsgbGVuZ3RoID49IGNo
ZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KLSAgICBib29sIGNoZWNraW5nUmFu
Z2VDb3ZlcnMoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBsb2NhdGlv
biA8IGNoZWNraW5nRW5kKCkgJiYgbG9jYXRpb24gKyBsZW5ndGggPiBjaGVja2luZ1N0YXJ0KCk7
IH0KKyAgICBib29sIGNoZWNraW5nUmFuZ2VNYXRjaGVzKENoYXJhY3RlclJhbmdlIHJhbmdlKSBj
b25zdCB7IHJldHVybiByYW5nZS5sb2NhdGlvbiA9PSBjaGVja2luZ1N0YXJ0KCkgJiYgcmFuZ2Uu
bGVuZ3RoID09IGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGlzQ2hlY2tpbmdSYW5nZUNv
dmVyZWRCeShDaGFyYWN0ZXJSYW5nZSByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UubG9jYXRp
b24gPD0gY2hlY2tpbmdTdGFydCgpICYmIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoID49
IGNoZWNraW5nU3RhcnQoKSArIGNoZWNraW5nTGVuZ3RoKCk7IH0KKyAgICBib29sIGNoZWNraW5n
UmFuZ2VDb3ZlcnMoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UpIGNvbnN0IHsgcmV0dXJuIHJhbmdlLmxv
Y2F0aW9uIDwgY2hlY2tpbmdFbmQoKSAmJiByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCA+
IGNoZWNraW5nU3RhcnQoKTsgfQogICAgIFJhbmdlJiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0Owog
CiBwcml2YXRlOgpAQCAtNzUsMTEgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQ
dHI8UmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8UmFuZ2U+IG1f
b2Zmc2V0QXNSYW5nZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3RleHQ7Ci0gICAgbXV0YWJsZSBP
cHRpb25hbDxpbnQ+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4g
bV9jaGVja2luZ0VuZDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9jaGVja2luZ0xlbmd0
aDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0
OwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3Ro
OworICAgIG11dGFibGUgT3B0aW9uYWw8dWludDY0X3Q+IG1fY2hlY2tpbmdTdGFydDsKKyAgICBt
dXRhYmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2NoZWNraW5nTGVuZ3RoOworICAgIG11dGFibGUg
T3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAgICBtdXRh
YmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOwogfTsK
IAogY2xhc3MgVGV4dENoZWNraW5nSGVscGVyIHsKQEAgLTg4LDExICs4MSwxMSBAQCBwdWJsaWM6
CiAgICAgVGV4dENoZWNraW5nSGVscGVyKEVkaXRvckNsaWVudCYsIFJhbmdlJik7CiAgICAgflRl
eHRDaGVja2luZ0hlbHBlcigpOwogCi0gICAgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nKGlu
dCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBm
aXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKKyAg
ICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmcodWludDY0X3QmIGZpcnN0TWlzc3BlbGxpbmdP
ZmZzZXQsIGJvb2wgbWFya0FsbCwgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
KTsKKyAgICBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIHVpbnQ2NF90JiBvdXRGaXJzdEZvdW5kT2Zm
c2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKTsKICAgICB2b2lkIG1hcmtBbGxN
aXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICNpZiBV
U0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hcihHcmFt
bWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQs
IGJvb2wgbWFya0FsbCkgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRGaXJzdEJhZEdyYW1tYXIoR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwgdWludDY0X3QmIG91dEdyYW1tYXJQaHJhc2VP
ZmZzZXQsIGJvb2wgbWFya0FsbCkgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsQmFkR3JhbW1hcigp
OwogICAgIGJvb2wgaXNVbmdyYW1tYXRpY2FsKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEwNCw3ICs5
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBj
b25zdDsKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICBpbnQgZmluZEZpcnN0R3JhbW1h
ckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQgYmFkR3JhbW1hclBocmFz
ZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3Q7CisgICAgaW50IGZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiwgdWludDY0X3QgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCB1aW50NjRfdCBz
dGFydE9mZnNldCwgdWludDY0X3QgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0OwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYmEx
YjcyMGFlZjAzNDhiZmE5ZmVkZDdkM2Q2NjcwMjg0MDQwNjdiNS4uMjE4NjRjOGY0ZmMwNWNiMzlh
MTk3MDRkMjU0NDAzZTdlYTY4MTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcApAQCAtMjM0MywyMCArMjM0MywxNCBAQCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5n
dGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1DaGFyYWN0ZXJDb3VudCBjaGFyYWN0ZXJDb3Vu
dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9y
KQordWludDY0X3QgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKIHsKLSAgICBDaGFyYWN0ZXJDb3VudCBsZW5ndGgg
PSAwOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IDA7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQo
cmFuZ2UsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAgICAgbGVu
Z3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1SZWY8
UmFuZ2U+IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hh
cmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpCi17Ci0gICAgQ2hhcmFjdGVySXRlcmF0
b3IgZW50aXJlUmFuZ2VJdGVyYXRvcihlbnRpcmVSYW5nZSk7Ci0gICAgcmV0dXJuIGNoYXJhY3Rl
clN1YnJhbmdlKGVudGlyZVJhbmdlLm93bmVyRG9jdW1lbnQoKSwgZW50aXJlUmFuZ2VJdGVyYXRv
ciwgY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0luc2lkZVJlcGxhY2VkRWxlbWVudChUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQogewog
ICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7CkBAIC0yMzY1LDg4ICsyMzU5LDY3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0luc2lkZVJlcGxhY2VkRWxlbWVudChUZXh0SXRlcmF0b3ImIGl0
ZXJhdG9yKQogICAgIHJldHVybiBub2RlICYmIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQobm9k
ZS0+cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRp
b24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitjb25z
dGV4cHIgdWludDY0X3QgY2xhbXBlZEFkZCh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQogewotICAg
IFJlZjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgp
OwotCi0gICAgaW50IGRvY1RleHRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHJhbmdlRW5kID0gcmFu
Z2VMb2NhdGlvbiArIHJhbmdlTGVuZ3RoOwotICAgIGJvb2wgc3RhcnRSYW5nZUZvdW5kID0gZmFs
c2U7Ci0KLSAgICBSZWY8UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2Nv
cGUpOwotCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9uUHJl
c2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwotICAgIAotICAgIC8vIEZJ
WE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5k
IGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCi0gICAg
aWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7Ci0gICAg
ICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IDApOwotICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgMCk7Ci0gICAgICAgIHJldHVybiByZXN1bHRSYW5nZTsKLSAgICB9CisgICAgYXV0
byBzdW0gPSBhICsgYjsKKyAgICByZXR1cm4gc3VtID49IGEgPyBzdW0gOiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7Cit9CiAKLSAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkgewotICAgICAgICBpbnQgbGVuZ3RoID0gaXQudGV4dCgpLmxlbmd0aCgpOwot
ICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSk7CitTaW1w
bGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHNjb3BlLCBD
aGFyYWN0ZXJSYW5nZSByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCit7Cisg
ICAgYXV0byByZXN1bHRSYW5nZSA9IFNpbXBsZVJhbmdlIHsgcmFuZ2UubG9jYXRpb24gPyBzY29w
ZS5lbmQgOiBzY29wZS5zdGFydCwgKHJhbmdlLmxvY2F0aW9uIHx8IHJhbmdlLmxlbmd0aCkgPyBz
Y29wZS5lbmQgOiBzY29wZS5zdGFydCB9OworICAgIGF1dG8gcmFuZ2VFbmQgPSBjbGFtcGVkQWRk
KHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgpOworICAgIHVpbnQ2NF90IGxvY2F0aW9uID0g
MDsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzY29wZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQo
KTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGl0LnRleHQoKS5s
ZW5ndGgoKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwogCi0gICAg
ICAgIGJvb2wgZm91bmRTdGFydCA9IHJhbmdlTG9jYXRpb24gPj0gZG9jVGV4dFBvc2l0aW9uICYm
IHJhbmdlTG9jYXRpb24gPD0gZG9jVGV4dFBvc2l0aW9uICsgbGVuZ3RoOwotICAgICAgICBib29s
IGZvdW5kRW5kID0gcmFuZ2VFbmQgPj0gZG9jVGV4dFBvc2l0aW9uICYmIHJhbmdlRW5kIDw9IGRv
Y1RleHRQb3NpdGlvbiArIGxlbmd0aDsKKyAgICAgICAgYXV0byBmb3VuZCA9IFsmXSAodWludDY0
X3QgdGFyZ2V0TG9jYXRpb24pIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIHRhcmdldExv
Y2F0aW9uID49IGxvY2F0aW9uICYmIHRhcmdldExvY2F0aW9uIC0gbG9jYXRpb24gPD0gbGVuZ3Ro
OworICAgICAgICB9OworICAgICAgICBib29sIGZvdW5kU3RhcnQgPSBmb3VuZChyYW5nZS5sb2Nh
dGlvbik7CisgICAgICAgIGJvb2wgZm91bmRFbmQgPSBmb3VuZChyYW5nZUVuZCk7CiAKICAgICAg
ICAgaWYgKGZvdW5kRW5kKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmth
cm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIHJ1biBpcyBvZnRlbiBhdCB0aGUg
d3JvbmcKLSAgICAgICAgICAgIC8vIHBvc2l0aW9uIGZvciBlbWl0dGVkICdcbidzIG9yIGlmIHRo
ZSByZW5kZXJlciBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgcmVwbGFjZWQgZWxlbWVudC4KKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhh
dCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRoZSB3cm9uZyBwb3NpdGlvbiBmb3IgZW1p
dHRlZCAnXG4ncyBvciBpZiB0aGUgcmVuZGVyZXIgb2YgdGhlIGN1cnJlbnQgbm9kZSBpcyBhIHJl
cGxhY2VkIGVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgY29udHJvbGxp
bmcgdGhpcyB3aXRoIFRleHRJdGVyYXRvckJlaGF2aW9yIGluc3RlYWQgb2YgZG9pbmcgaXQgdW5j
b25kaXRpb25hbGx5IHRvIGhlbHAgdXMgZXZlbnR1YWxseSBwaGFzZSBpdCBvdXQgZXZlcnl3aGVy
ZS4KICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSAmJiAoaXQudGV4dCgpWzBdID09ICdcbicg
fHwgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoaXQpKSkgewogICAgICAgICAgICAgICAgIGl0LmFk
dmFuY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byBzdGFydCA9IGl0LnJhbmdlKCkuc3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKFdURk1vdmUoc3RhcnQuY29udGFpbmVyKSwgc3RhcnQu
b2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQ
b3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgICAg
ICAgICAgICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQp
Lm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5k
LmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQoKnJ1bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOworICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGVuZCA9IG1ha2VCb3Vu
ZGFyeVBvaW50KFZpc2libGVQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24odGV4
dFJ1blJhbmdlLnN0YXJ0KSkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dFJ1blJhbmdlLmVuZCA9ICplbmQ7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZvdW5kU3RhcnQpIHsKLSAg
ICAgICAgICAgIHN0YXJ0UmFuZ2VGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAodGV4dFJ1
blJhbmdlLT5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAg
IGludCBvZmZzZXQgPSByYW5nZUxvY2F0aW9uIC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAg
ICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCksIG9mZnNldCArIHRleHRSdW5SYW5nZS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChyYW5nZUxvY2F0aW9uID09IGRvY1RleHRQb3Np
dGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5S
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRT
dGFydCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigpLCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNl
dCgpKTsKKyAgICAgICAgYXV0byBib3VuZGFyeSA9IFsmXSAodWludDY0X3QgdGFyZ2V0TG9jYXRp
b24pIC0+IEJvdW5kYXJ5UG9pbnQgeworICAgICAgICAgICAgaWYgKGlzPFRleHQ+KHRleHRSdW5S
YW5nZS5zdGFydC5jb250YWluZXIpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldExv
Y2F0aW9uIC0gbG9jYXRpb24gPD0gZG93bmNhc3Q8VGV4dD4odGV4dFJ1blJhbmdlLnN0YXJ0LmNv
bnRhaW5lci5nZXQoKSkubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHRleHRSdW5SYW5nZS5zdGFydC5vZmZzZXQgKyB0YXJnZXRMb2NhdGlvbiAtIGxvY2F0aW9u
OworICAgICAgICAgICAgICAgIHJldHVybiB7IHRleHRSdW5SYW5nZS5zdGFydC5jb250YWluZXIu
Y29weVJlZigpLCBvZmZzZXQgfTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHRhcmdldExvY2F0aW9uID09IGxvY2F0aW9uID8gdGV4dFJ1blJhbmdlLnN0YXJ0
IDogdGV4dFJ1blJhbmdlLmVuZDsKKyAgICAgICAgfTsKIAorICAgICAgICBpZiAoZm91bmRTdGFy
dCkKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlLnN0YXJ0ID0gYm91bmRhcnkocmFuZ2UubG9jYXRp
b24pOwogICAgICAgICBpZiAoZm91bmRFbmQpIHsKLSAgICAgICAgICAgIGlmICh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkuaXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50
IG9mZnNldCA9IHJhbmdlRW5kIC0gZG9jVGV4dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHJl
c3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBvZmZzZXQg
KyB0ZXh0UnVuUmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAocmFuZ2VFbmQgPT0gZG9jVGV4dFBvc2l0aW9uKQotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSwgdGV4dFJ1blJhbmdlLT5zdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJhbmdlLT5l
bmRDb250YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBkb2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICAgICAgcmVz
dWx0UmFuZ2UuZW5kID0gYm91bmRhcnkocmFuZ2VFbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBkb2NUZXh0UG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICBs
b2NhdGlvbiArPSBsZW5ndGg7CiAgICAgfQotICAgIAotICAgIGlmICghc3RhcnRSYW5nZUZvdW5k
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAocmFuZ2VMZW5ndGggJiYg
cmFuZ2VFbmQgPiBkb2NUZXh0UG9zaXRpb24pIC8vIHJhbmdlRW5kIGlzIG91dCBvZiBib3VuZHMK
LSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPmVuZENvbnRhaW5lcigp
LCB0ZXh0UnVuUmFuZ2UtPmVuZE9mZnNldCgpKTsKLSAgICAKICAgICByZXR1cm4gcmVzdWx0UmFu
Z2U7CiB9CiAKK0JvdW5kYXJ5UG9pbnQgcmVzb2x2ZUNoYXJhY3RlckxvY2F0aW9uKGNvbnN0IFNp
bXBsZVJhbmdlJiBzY29wZSwgdWludDY0X3QgbG9jYXRpb24sIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yKQoreworICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIHsg
bG9jYXRpb24sIDAgfSwgYmVoYXZpb3IpLnN0YXJ0OworfQorCiBib29sIFRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiBy
YW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpCiB7CiAgICAgbG9jYXRpb24g
PSBub3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDA5MTRm
N2JjYTYxNTA5ZmI1YzNkZWVhYzlkMzhjZTRkNGMzODk2NGIuLmUxNjAyODc1YjJmNzVlZDMxZTc1
MDFjYWEzMDBiNGM4ZjYzOWJmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3Rl
clJhbmdlLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0
VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTEwMiwxMCArMTAzLDgg
QEAgcHVibGljOgogICAgIGNvbnN0IFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dCYgY29weWFibGVU
ZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9jb3B5YWJsZVRleHQ7IH0K
ICAgICB2b2lkIGFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRl
cikgY29uc3QgeyBjb3B5YWJsZVRleHQoKS5hcHBlbmRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7
IH0KIAotICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIFNpbXBsZVJhbmdlLCBDaGFyYWN0ZXJS
YW5nZSwgYW5kIENoYXJhY3RlckNvdW50IGFuZCBtb3ZlIG91dCBvZiB0aGlzIGNsYXNzIHRvIHRo
ZSB0b3AgbGV2ZWwgKGJvdHRvbSBvZiB0aGlzIGZpbGUpLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5v
ZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBib29sIHNwYWNl
c0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0
byBTaW1wbGVSYW5nZSBhbmQgQ2hhcmFjdGVyUmFuZ2UgYW5kIG1vdmUgb3V0IG9mIHRoaXMgY2xh
c3MgdG8gdGhlIHRvcCBsZXZlbC4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRM
b2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXpl
X3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zm
c2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdCgpOwpA
QCAtMjg5LDEzICsyODgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRMb29rQWhlYWQgeyB0
cnVlIH07CiB9OwogCi11c2luZyBDaGFyYWN0ZXJDb3VudCA9IHN0ZDo6c2l6ZV90OwogCi1zdHJ1
Y3QgQ2hhcmFjdGVyUmFuZ2UgewotICAgIENoYXJhY3RlckNvdW50IGxvY2F0aW9uIHsgMCB9Owot
ICAgIENoYXJhY3RlckNvdW50IGxlbmd0aCB7IDAgfTsKLX07Ci0KLVdFQkNPUkVfRVhQT1JUIENo
YXJhY3RlckNvdW50IGNoYXJhY3RlckNvdW50KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworV0VCQ09SRV9FWFBP
UlQgdWludDY0X3QgY2hhcmFjdGVyQ291bnQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0
b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CitXRUJDT1JFX0VYUE9S
VCBCb3VuZGFyeVBvaW50IHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbihjb25zdCBTaW1wbGVSYW5n
ZSYsIHVpbnQ2NF90LCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CitXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBDaGFyYWN0ZXJSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5k
ZXggMmI5MzE3YjE3MTNmMjYwYTJkYWYzOGM1YjFmYmE0ZTA4NGFiN2NhNi4uOTllNjE1OWNjYTY3
Njk1OWE5ODBhNDEyOTU2YjhjNWQzZjMzNjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPEREQWN0aW9uQ29udGV4dD4gZGV0ZWN0SXRlbUF0UG9zaXRpb25XaXRoUmFuZ2UoVmlzaWJs
ZVBvc2l0aW9uCiAgICAgICAgIENGUmFuZ2UgcmVzdWx0UmFuZ2VJbkNvbnRleHQgPSBERFJlc3Vs
dEdldFJhbmdlKHJlc3VsdCk7CiAgICAgICAgIGlmIChoaXRMb2NhdGlvbiA+PSByZXN1bHRSYW5n
ZUluQ29udGV4dC5sb2NhdGlvbiAmJiAoaGl0TG9jYXRpb24gLSByZXN1bHRSYW5nZUluQ29udGV4
dC5sb2NhdGlvbikgPCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpIHsKICAgICAgICAgICAg
IG1haW5SZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBtYWluUmVzdWx0UmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxv
Y2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpOworICAgICAgICAgICAgbWFpblJl
c3VsdFJhbmdlID0gY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY29udGV4
dFJhbmdlLCByZXN1bHRSYW5nZUluQ29udGV4dCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01MDgsOSArNTA4LDEyIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246
OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURl
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmcmFnbWVudFJhbmdlczsKICAgICAgICAg
UmVmUHRyPFJhbmdlPiBjdXJyZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0b3IucmFu
Z2UoKSk7CiAgICAgICAgIENGSW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uuc3RhcnQu
cXVlcnlJbmRleDsKLSAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQu
cXVlcnlJbmRleCkKLSAgICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlKCpjdXJyZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0LCBxdWVy
eVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOwotICAgICAgICBl
bHNlIHsKKyAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJ
bmRleCkgeworICAgICAgICAgICAgQ2hhcmFjdGVyUmFuZ2UgZnJhZ21lbnRSYW5nZTsKKyAgICAg
ICAgICAgIGZyYWdtZW50UmFuZ2UubG9jYXRpb24gPSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldDsK
KyAgICAgICAgICAgIGZyYWdtZW50UmFuZ2UubGVuZ3RoID0gcXVlcnlSYW5nZS5lbmQub2Zmc2V0
IC0gcXVlcnlSYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5h
cHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY3VycmVudFJhbmdl
LCBmcmFnbWVudFJhbmdlKSkpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFx
dWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkKICAgICAgICAgICAgICAgICBmcmFnbWVudFJhbmdlcy5h
cHBlbmQoY3VycmVudFJhbmdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBkNjQ4ZmQ3MGZjMzhm
YzkyYzI0ZTUxNzg5MDQ3Y2VmNjI2M2ZhNTA5Li40N2FkNDdhNzNkZGMzZTcyNTFmYjFmMzA1NWJi
MTIwY2M5ZTFmMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rp
Y3Rpb25hcnlMb29rdXAubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0
aW9uYXJ5TG9va3VwLm1tCkBAIC0yODcsMTAgKzI4Nyw5IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJh
bmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9u
KGNvCiAKICAgICBSZWZQdHI8UmFuZ2U+IGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShw
YXJhZ3JhcGhTdGFydCwgcGFyYWdyYXBoRW5kKTsKICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBs
YWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwotICAgIFJldGFpblB0cjxSVkl0ZW0+
IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1T
dHJpbmcgc2VsZWN0ZWRSYW5nZTpyYW5nZVRvUGFzc10pOwotICAgIE5TUmFuZ2UgaGlnaGxpZ2h0
UmFuZ2UgPSBpdGVtLmdldCgpLmhpZ2hsaWdodFJhbmdlOworICAgIE5TUmFuZ2UgaGlnaGxpZ2h0
UmFuZ2UgPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1T
dHJpbmcgc2VsZWN0ZWRSYW5nZTpyYW5nZVRvUGFzc10pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwog
Ci0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdl
LCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwgaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07
CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVs
bENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZSkpLCBuaWwgfTsKIAogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTM1OCwxMyArMzU3LDEyIEBAIHN0ZDo6dHVwbGU8UmVm
UHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRU
ZXN0UmVzdWx0CiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0aW9uQ2xh
c3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVjdGlvbjpu
aWxdOwogCiAgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQoKmZ1bGxDaGFyYWN0ZXJS
YW5nZSk7Ci0gICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0TlMoW2FsbG9jUlZJdGVt
SW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3RlZFJhbmdlOnNlbGVjdGVk
UmFuZ2VdKTsKLSAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRlbS5nZXQoKS5oaWdobGln
aHRSYW5nZTsKKyAgICBhdXRvIGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbYWxsb2NSVkl0ZW1J
bnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRS
YW5nZV0pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCiAgICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CiAgICAgCi0gICAgcmV0dXJuIHsgVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRSYW5nZS5sb2NhdGlvbiwg
aGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKSwgbmlsIH07CisgICAgcmV0dXJuIHsgY3JlYXRlTGl2ZVJh
bmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRS
YW5nZSkpLCBuaWwgfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFu
ZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9T
LmNwcAppbmRleCBhMmI4MTgyODc3YjI4YWYyOWM4YTA2Mzk1NGQzNzRjZDVhYTVhNWRhLi41YjQz
Y2EzM2U5MGZhYTJlNmZlMTg0NWM5MjM3YjBhOWZlYTc0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBEaWN0YXRpb25Db21tYW5kSU9TOjpEaWN0YXRpb25Db21tYW5kSU9TKERvY3VtZW50JiBk
b2N1bWVudCwgVmVjdG9yPFZlY3RvcjxTdHJpbgogCiB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6
OmRvQXBwbHkoKQogewotICAgIENoYXJhY3RlckNvdW50IHJlc3VsdExlbmd0aCA9IDA7CisgICAg
dWludDY0X3QgcmVzdWx0TGVuZ3RoID0gMDsKICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9u
cyA6IG1fZGljdGF0aW9uUGhyYXNlcykgewogICAgICAgICBjb25zdCBTdHJpbmcmIGZpcnN0SW50
ZXJwcmV0YXRpb24gPSBpbnRlcnByZXRhdGlvbnNbMF07CiAgICAgICAgIHJlc3VsdExlbmd0aCAr
PSBmaXJzdEludGVycHJldGF0aW9uLmxlbmd0aCgpOwpAQCAtNzIsMTEgKzcyLDggQEAgdm9pZCBE
aWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBpZiAoZW5kT2Zmc2V0IDwgcmVzdWx0
TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChyb290LCBlbmRPZmZzZXQgLSByZXN1
bHRMZW5ndGgsIGVuZE9mZnNldCk7Ci0gICAgaWYgKCFyZXN1bHRSYW5nZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2Vy
KCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CisgICAgYXV0byByZXN1bHRSYW5nZSA9IHJlc29s
dmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3QpLCB7
IGVuZE9mZnNldCAtIHJlc3VsdExlbmd0aCwgZW5kT2Zmc2V0IH0pOworICAgIGRvY3VtZW50KCku
bWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZSwgbV9tZXRhZGF0
YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDUxMzViOTA2ZGVl
MThlMDE3NzllYzYxMTQ3NDMxYzc5NWUzOGE1OGUuLmMwZTNmNTVlNmUzNjQ0YWUxOWVlNWEzOTZm
NjRiYWRlNjZlYzUxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Rp
Y3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAtMTQyLDE0ICsxNDIsMTQgQEAgc3RkOjp0dXBs
ZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VB
dEhpdFRlc3RSZXN1bHQKIAogICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShj
aGFyYWN0ZXJDb3VudCh7ICpmdWxsQ2hhcmFjdGVyU3RhcnQsICpwb3NpdGlvbkJvdW5kYXJ5IH0p
LCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgTlNSYW5nZSBleHRy
YWN0ZWRSYW5nZSA9IHRva2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQo
KSksIHJhbmdlVG9QYXNzLCAmb3B0aW9ucyk7CisgICAgYXV0byBleHRyYWN0ZWRSYW5nZSA9IHRv
a2VuUmFuZ2UocGxhaW5UZXh0KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSksIHJhbmdlVG9QYXNz
LCAmb3B0aW9ucyk7CiAKICAgICAvLyB0b2tlblJhbmdlIHNvbWV0aW1lcyByZXR1cm5zIHtOU05v
dEZvdW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIGdvb2Qgc3RyaW5nLgog
ICAgIC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayBmb3IgemVy
byBsZW5ndGggaGVyZS4KICAgICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4geyBudWxscHRy
LCBuaWwgfTsKIAotICAgIHJldHVybiB7IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoKmZ1bGxDaGFy
YWN0ZXJSYW5nZSwgZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24sIGV4dHJhY3RlZFJhbmdlLmxlbmd0
aCksIG9wdGlvbnMgfTsKKyAgICByZXR1cm4geyBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJh
Y3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGV4dHJhY3RlZFJhbmdlKSksIG9wdGlvbnMg
fTsKIH0KIAogc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9uQnlDaGFyYWN0ZXJzKFBERlNlbGVj
dGlvbiAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIE5T
SW50ZWdlciYgY2hhcmFjdGVyc0FkZGVkQmVmb3JlU3RhcnQsIE5TSW50ZWdlciYgY2hhcmFjdGVy
c0FkZGVkQWZ0ZXJFbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMGIw
ZDNhMTkwZjI4NzJmNGI5OWUzMTc0NjJjMzkwMmI1ZmVkYjE0MS4uNGVmNjdkMmYyMmI3NjQ4ZTlh
YWMyMjA4ZWQyNzM4OTkyMjg0ODU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtNjU0LDcgKzY1NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNz
RXZlbnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAgICAgcmV0dXJu
IHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0
Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25Nb3VzZURvd24oKnRhcmdldE5v
ZGUsIG5ld1NlbGVjdGlvbiksIFBhcmFncmFwaEdyYW51bGFyaXR5KTsKIH0KIAotc3RhdGljIENo
YXJhY3RlckNvdW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBv
c2l0aW9uJiBlbmQpCitzdGF0aWMgdWludDY0X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9u
JiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIHsKICAgICBhdXRvIHN0YXJ0Qm91bmRhcnkg
PSBtYWtlQm91bmRhcnlQb2ludChzdGFydCk7CiAgICAgYXV0byBlbmRCb3VuZGFyeSA9IG1ha2VC
b3VuZGFyeVBvaW50KGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBjYjMwNzFiYzQzMjhlNGVl
M2Q0NWMzZjJjM2FiZDJiNWJmMWFjMDk3Li45ZjBhNDA2ZGU0MTQ5MTgzZjg1MTE2MTI0YjNlZDVj
MTliMWVmMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgwMyw4ICs4MDMsNyBAQCB1bnNpZ25l
ZCBQYWdlOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9u
cyBvcHRpb25zLCB1bnNpZwogCiBzdHJ1Y3QgRmluZFJlcGxhY2VtZW50UmFuZ2UgewogICAgIFJl
ZlB0cjxDb250YWluZXJOb2RlPiByb290OwotICAgIHNpemVfdCBsb2NhdGlvbiB7IG5vdEZvdW5k
IH07Ci0gICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKKyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsK
IH07CiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9y
PEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
VGV4dCkKQEAgLTgxNiwxMCArODE1LDEwIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFn
ZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzCiAgICAg
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICAvLyBFbnN1cmUgdGhhdCByYW5nZXMg
YXJlIHNvcnRlZCBieSB0aGVpciBlbmQgb2Zmc2V0cywgcGVyIGVkaXRpbmcgY29udGFpbmVyLgot
ICAgICAgICBhdXRvIGVuZE9mZnNldEZvclJhbmdlID0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5s
ZW5ndGg7CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0Rm9yUmFuZ2UgPSByYW5nZS5yYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLnJhbmdlLmxlbmd0aDsKICAgICAgICAgYXV0byBpbnNlcnRpb25JbmRleCA9
IHJhbmdlTGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlTGlz
dC5yYmVnaW4oKTsgaXRlcmF0b3IgIT0gcmFuZ2VMaXN0LnJlbmQoKTsgKytpdGVyYXRvcikgewot
ICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRCZWZvcmVJbnNlcnRpb25JbmRleCA9IGl0ZXJhdG9y
LT5sb2NhdGlvbiArIGl0ZXJhdG9yLT5sZW5ndGg7CisgICAgICAgICAgICBhdXRvIGVuZE9mZnNl
dEJlZm9yZUluc2VydGlvbkluZGV4ID0gaXRlcmF0b3ItPnJhbmdlLmxvY2F0aW9uICsgaXRlcmF0
b3ItPnJhbmdlLmxlbmd0aDsKICAgICAgICAgICAgIGlmIChlbmRPZmZzZXRGb3JSYW5nZSA+PSBl
bmRPZmZzZXRCZWZvcmVJbnNlcnRpb25JbmRleCkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGluc2VydGlvbkluZGV4LS07CkBAIC04NjIsMTEgKzg2MSwxMSBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1l
bnRSYW5nZT4mIHJhbmdlcwogICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdoIHJh
bmdlcyB3aGVuIHJlcGxhY2luZyB0ZXh0LCBzdWNoIHRoYXQgZWFybGllciB0ZXh0IHJlcGxhY2Vt
ZW50cyBkb24ndCBjbG9iYmVyIHJlcGxhY2VtZW50IHJhbmdlcyBsYXRlciBvbi4KICAgICAgICAg
YXV0byYgcmFuZ2VzID0gcmFuZ2VzQnlDb250YWluZXJOb2RlLmZpbmQoY29udGFpbmVyKS0+dmFs
dWU7CiAgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHJhbmdlcy5yYmVnaW4oKTsgaXRlcmF0
b3IgIT0gcmFuZ2VzLnJlbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgYXV0byByYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLmdl
dCgpLCBpdGVyYXRvci0+bG9jYXRpb24sIGl0ZXJhdG9yLT5sZW5ndGgpOwotICAgICAgICAgICAg
aWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2VkKCkpCisgICAgICAgICAgICBhdXRvIHJhbmdl
ID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
Y29udGFpbmVyKSwgaXRlcmF0b3ItPnJhbmdlKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS5jb2xs
YXBzZWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNyZWF0ZUxpdmVSYW5nZShyYW5nZSkucHRy
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsK
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVw
bGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21h
cnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQpOwogICAgICAgICB9
CiAgICAgfQpAQCAtODk4LDcgKzg5Nyw3IEBAIHVpbnQzMl90IFBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dChjb25zdCBWZWN0b3I8UmVmPFJhbmdlPj4mIHJhbmdlc1RvUmVwbGFjZSwKICAgICAg
ICAgaWYgKHJlcGxhY2VtZW50TG9jYXRpb24gPT0gbm90Rm91bmQgfHwgIXJlcGxhY2VtZW50TGVu
Z3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcmVwbGFjZW1lbnRSYW5nZXMu
YXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHJlcGxhY2VtZW50TG9jYXRpb24sIHJlcGxh
Y2VtZW50TGVuZ3RoIH0pOworICAgICAgICByZXBsYWNlbWVudFJhbmdlcy5hcHBlbmQoeyBXVEZN
b3ZlKGhpZ2hlc3RSb290KSwgeyByZXBsYWNlbWVudExvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0
aCB9IH0pOwogICAgIH0KIAogICAgIHJlcGxhY2VSYW5nZXMoKnRoaXMsIHJlcGxhY2VtZW50UmFu
Z2VzLCByZXBsYWNlbWVudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENoZWNraW5nLmgKaW5kZXggZDBkMDBjNmJkNTczMjc3M2MwYTM3ZThiYjUzNjU3ZWIzNDc3ZGVi
My4uZDI0NWNjZDllYzkxMjAyZWMzZDBmNDllZDU1NGMzMDUwZWU5N2NkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMCArMzEsOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTYzLDE2ICs2MiwxNCBAQCBlbnVtIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHsKIH07CiAKIHN0
cnVjdCBHcmFtbWFyRGV0YWlsIHsKLSAgICBpbnQgbG9jYXRpb247Ci0gICAgaW50IGxlbmd0aDsK
KyAgICBDaGFyYWN0ZXJSYW5nZSByYW5nZTsKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwog
ICAgIFN0cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVz
dWx0IHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7Ci0gICAgaW50IGxvY2F0aW9uOwotICAg
IGludCBsZW5ndGg7CisgICAgQ2hhcmFjdGVyUmFuZ2UgcmFuZ2U7CiAgICAgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+IGRldGFpbHM7CiAgICAgU3RyaW5nIHJlcGxhY2VtZW50OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZjI3Yjk5ZjM4N2MxMjhhZmZiNDM2OWFiNGVj
M2E5YzBiZmZjMjk4Li4xMzRlYTMxZmNlOGY5ODg5MTEyY2MxNGMwN2ZkMTc0ZGJlNWJjZTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDQ0LDkgKzIwNDQsOSBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmludmFsaWRhdGVDb250cm9sVGludHMoKQogICAg
IHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChFbGVtZW50JiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5n
ZUxlbmd0aCkKK1JlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChFbGVtZW50JiBzY29wZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgcmFu
Z2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoJnNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7CisgICAgcmV0dXJu
IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKHNjb3BlKSwgeyByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCB9KSk7CiB9
CiAKIHVuc2lnbmVkIEludGVybmFsczo6bG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCYgc2NvcGUs
IGNvbnN0IFJhbmdlJiByYW5nZSkKQEAgLTIwNzUsOSArMjA3NSw5IEBAIFN0cmluZyBJbnRlcm5h
bHM6OnJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJh
bmdlKQogICAgIHJldHVybiBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRl
c3RpbmcocmFuZ2UpOwogfQogCi1SZWY8UmFuZ2U+IEludGVybmFsczo6c3VicmFuZ2UoUmFuZ2Um
IHJhbmdlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQorUmVmPFJhbmdlPiBJ
bnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgdW5zaWduZWQgcmFuZ2VMb2NhdGlvbiwg
dW5zaWduZWQgcmFuZ2VMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UocmFuZ2UsIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKKyAgICByZXR1cm4gY3JlYXRl
TGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyByYW5nZUxvY2F0aW9uLCBy
YW5nZUxlbmd0aCB9KSk7CiB9CiAKIFJlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZU9mU3Ry
aW5nTmVhckxvY2F0aW9uKGNvbnN0IFJhbmdlJiBzZWFyY2hSYW5nZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQpCkBAIC0yNDMyLDggKzI0MzIsNyBAQCB2b2lkIElu
dGVybmFsczo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUs
IHVuc2lnbmVkIGxvY2F0aQogCiAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICBy
ZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Ok5vbmU7Ci0gICAgcmVzdWx0LmxvY2F0aW9u
ID0gbG9jYXRpb247Ci0gICAgcmVzdWx0Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXN1bHQucmFu
Z2UgPSB7IGxvY2F0aW9uLCBsZW5ndGggfTsKICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBjYW5k
aWRhdGU7CiAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCBlMjM1MjM0MWRiOGMxNWQ0MjlmOWNlZmQyODlkZjUyMjcwZTVhYzdjLi5jZjc5ZTUwYzdi
ODQ3M2Y2ZmUyNTJmOGNjNzY4NTljNmY5MTU3MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTI5NSwxMiArMjk1LDEyIEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGludmFsaWRhdGVDb250cm9sVGludHMoKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCYgc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBp
bnQgcmFuZ2VMZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCYgc2NvcGUsIHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJh
bmdlTGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29w
ZSwgY29uc3QgUmFuZ2UmKTsKICAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCYg
c2NvcGUsIGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0KGNvbnN0IFJhbmdl
Jik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29u
c3QgUmFuZ2UmKTsKLSAgICBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiwgaW50IHJhbmdlTG9j
YXRpb24sIGludCByYW5nZUxlbmd0aCk7CisgICAgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYs
IHVuc2lnbmVkIHJhbmdlTG9jYXRpb24sIHVuc2lnbmVkIHJhbmdlTGVuZ3RoKTsKICAgICBFeGNl
cHRpb25PcjxSZWZQdHI8UmFuZ2U+PiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGludCB4LCBpbnQgeSk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nTmVhckxvY2F0
aW9uKGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTYyZmFmNDk0NmVhYWRkOTgwZTU3ODlhMThiYmRl
YzU1ODNmNjMyMy4uMzc1NzkwNzcwNGY5MzEzZTY4NDE0YzAwNTU5MTc0MWU0NmEyNWRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzI1LDEyICszMjUsMTIgQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2Ny
b2xsRWxlbWVudFRvUmVjdChFbGVtZW50IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcs
IGxvbmcgaCk7CiAKLSAgICBSYW5nZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVu
dCBzY29wZSwgbG9uZyByYW5nZUxvY2F0aW9uLCBsb25nIHJhbmdlTGVuZ3RoKTsKKyAgICBSYW5n
ZT8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRWxlbWVudCBzY29wZSwgdW5zaWduZWQgbG9u
ZyByYW5nZUxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIHJhbmdlTGVuZ3RoKTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQgc2NvcGUsIFJhbmdlIHJhbmdlKTsKICAg
ICB1bnNpZ25lZCBsb25nIGxlbmd0aEZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5n
ZSk7CiAgICAgRE9NU3RyaW5nIHJhbmdlQXNUZXh0KFJhbmdlIHJhbmdlKTsKICAgICBET01TdHJp
bmcgcmFuZ2VBc1RleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvcihSYW5nZSByYW5nZSk7Ci0g
ICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyBy
YW5nZUxlbmd0aCk7CisgICAgUmFuZ2Ugc3VicmFuZ2UoUmFuZ2UgcmFuZ2UsIHVuc2lnbmVkIGxv
bmcgcmFuZ2VMb2NhdGlvbiwgdW5zaWduZWQgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgW01heVRo
cm93RXhjZXB0aW9uXSBSYW5nZT8gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihs
b25nIHgsIGxvbmcgeSk7CiAgICAgUmFuZ2U/IHJhbmdlT2ZTdHJpbmdOZWFyTG9jYXRpb24oUmFu
Z2UgcmFuZ2UsIERPTVN0cmluZyB0ZXh0LCBsb25nIHRhcmdldE9mZnNldCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCmluZGV4IGI4OTkzM2ZmYTFiZjI4NDNjMjZmZGJkNjZk
MjkyNmVkMDBjNWY2YTEuLjc2ZWY0NzIyZDc1MWNmNmU1OWFhYjllZGZhYjY2NTZlNzA0ZjE2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtMzMsNDIgKzMzLDMyIEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdS
YW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
cmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8p
CitSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpG
cmFtZSYgZnJhbWUsIGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBFZGl0aW5nUmFu
Z2VJc1JlbGF0aXZlVG8gYmFzZSkKIHsKLSAgICBBU1NFUlQocmFuZ2UubG9jYXRpb24gIT0gbm90
Rm91bmQpOworICAgIEFTU0VSVChlZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOwor
ICAgIFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlIHJhbmdlIHsgZWRpdGluZ1JhbmdlLmxvY2F0aW9u
LCBlZGl0aW5nUmFuZ2UubGVuZ3RoIH07CiAKLSAgICAvLyBTYW5pdGl6ZSB0aGUgaW5wdXQsIGJl
Y2F1c2UgVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB0YWtlcyBzaWdu
ZWQgaW50ZWdlcnMuCi0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgaW50IGxlbmd0aDsKLSAgICBpZiAocmFuZ2UubGVuZ3RoIDw9
IElOVF9NQVggJiYgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGggPD0gSU5UX01BWCkKLSAg
ICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sZW5ndGgpOwotICAgIGVsc2UK
LSAgICAgICAgbGVuZ3RoID0gSU5UX01BWCAtIHJhbmdlLmxvY2F0aW9uOwotCi0gICAgaWYgKGVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRh
YmxlUm9vdCkgeworICAgIGlmIChiYXNlID09IEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRp
dGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQg
dGhpcyBjb2RlIHBhdGggaXMgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgICAgICAv
LyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uLgog
ICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQg
dGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBub3QKICAgICAgICAgLy8gZGlyZWN0bHkg
aW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3Vy
IHNvbHV0aW9uIGlzCiAgICAgICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50
IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAgICAg
Ly8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgotICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1l
bnQoKSwgc3RhdGljX2Nhc3Q8aW50PihyYW5nZS5sb2NhdGlvbiksIGxlbmd0aCk7CisgICAgICAg
IGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JE
b2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmVzb2x2ZUNoYXJh
Y3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdl
KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7Ci0KLSAgICBhdXRvJiBzZWxlY3Rpb24g
PSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBpZiAoIXNlbGVjdGlvbi50b05v
cm1hbGl6ZWRSYW5nZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoYmFz
ZSA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CiAKLSAgICBhdXRvIHBh
cmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCkpKTsKKyAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gbWFrZUJvdW5k
YXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52
aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3RhcnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGF1dG8mIHJvb3ROb2RlID0gcGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5l
ci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKIAotICAgIGF1dG8gcGFyYWdyYXBoU3RhcnRJbmRl
eCA9IFdlYkNvcmU6OmNoYXJhY3RlckNvdW50KHsgeyByb290Tm9kZSwgMCB9LCAqcGFyYWdyYXBo
U3RhcnQgfSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoJnJvb3ROb2RlLCBwYXJhZ3JhcGhTdGFydEluZGV4ICsgcmFuZ2UubG9j
YXRpb24sIGxlbmd0aCk7CisgICAgYXV0byBzY29wZUVuZCA9IG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9k
ZSgpKS5lbmQ7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShXZWJDb3JlOjpyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUoc2NvcGVFbmQp
IH0sIHJhbmdlKSk7CiB9CiAKIEVkaXRpbmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShX
ZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJhbmdlKiByYW5nZSwgRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmgKaW5kZXggOTQ3MzhiN2Y4OGU5ZTA1OGRhMmVkMjU0YTE2MDQ0ZWJj
NmI5MzA2OS4uZTA0M2Y5NzI0MGU0MjVlY2QyNWE0MjdlZGQ5MjdhY2I3NDVlMzYxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gOiB1aW50OF90IHsKICAgICBQYXJhZ3JhcGgsCiB9Owog
CisvLyBGSVhNRTogUmVwbGFjZSB0aGlzIHdpdGggT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+Lgog
c3RydWN0IEVkaXRpbmdSYW5nZSB7CiAgICAgRWRpdGluZ1JhbmdlKCkKICAgICAgICAgOiBsb2Nh
dGlvbihub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJlODFhYmMxYTkxODAu
LjQyNTc3NTc5ZmQ3ZTViMTQ4ZGYwZDIyYmNjZGQxNTFmZThlZDQ4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExOCw2ICsxMTgs
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb25zdHJhaW50cy5oPgogI2VuZGlmCiAKKy8v
IEZJWE1FOiBTZWVtcyBsaWtlIHdlIGNvdWxkIHVzZSBzdGQ6OnR1cGxlIHRvIGN1dCBkb3duIHRo
ZSBjb2RlIGJlbG93IGEgbG90IQorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTI1MCw2ICsyNTIsMjcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENhY2hlUXVlcnlPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIENhY2hlUXVlcnlPcHRpb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVu
dENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENo
YXJhY3RlclJhbmdlJiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyYW5nZS5sb2NhdGlvbik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ocmFuZ2UubGVuZ3RoKTsKK30KKworT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50
Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBP
cHRpb25hbDx1aW50NjRfdD4gbG9jYXRpb247CisgICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKKyAg
ICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8dWludDY0X3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAo
IWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsg
KmxvY2F0aW9uLCAqbGVuZ3RoIH0gfTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRp
ZmllcjsKQEAgLTIwNTMsMjIgKzIwNzYsMTYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKIAog
dm9pZCBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgR3JhbW1hckRldGFpbCYgZGV0YWlsKQogewotICAgIGVuY29kZXIgPDwgZGV0YWls
LmxvY2F0aW9uOwotICAgIGVuY29kZXIgPDwgZGV0YWlsLmxlbmd0aDsKKyAgICBlbmNvZGVyIDw8
IGRldGFpbC5yYW5nZTsKICAgICBlbmNvZGVyIDw8IGRldGFpbC5ndWVzc2VzOwogICAgIGVuY29k
ZXIgPDwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKIH0KIAogT3B0aW9uYWw8R3JhbW1hckRldGFp
bD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8aW50PiBsb2NhdGlvbjsKLSAgICBkZWNvZGVyID4+IGxvY2F0aW9u
OwotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICBPcHRpb25hbDxpbnQ+IGxlbmd0aDsKLSAgICBkZWNvZGVyID4+IGxlbmd0aDsKLSAgICBpZiAo
IWxlbmd0aCkKKyAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CisgICAgZGVjb2Rl
ciA+PiByYW5nZTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CkBAIC0yMDgxLDcgKzIw
OTgsNyBAQCBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRh
aWw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVzZXJEZXNjcmlwdGlvbikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCps
b2NhdGlvbiksIFdURk1vdmUoKmxlbmd0aCksIFdURk1vdmUoKmd1ZXNzZXMpLCBXVEZNb3ZlKCp1
c2VyRGVzY3JpcHRpb24pIH19OworICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVz
c2VzKSwgV1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CiAKIHZvaWQgQXJndW1lbnRD
b2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKQEAgLTIxMTcsOCArMjEzNCw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBUZXh0Q2hlY2tpCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNr
aW5nUmVzdWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jl
c3VsdCYgcmVzdWx0KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7Ci0g
ICAgZW5jb2RlciA8PCByZXN1bHQubG9jYXRpb247Ci0gICAgZW5jb2RlciA8PCByZXN1bHQubGVu
Z3RoOworICAgIGVuY29kZXIgPDwgcmVzdWx0LnJhbmdlOwogICAgIGVuY29kZXIgPDwgcmVzdWx0
LmRldGFpbHM7CiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CkBAIC0yMTI5
LDE0ICsyMTQ1LDkgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVy
PFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKHR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAg
IE9wdGlvbmFsPGludD4gbG9jYXRpb247Ci0gICAgZGVjb2RlciA+PiBsb2NhdGlvbjsKLSAgICBp
ZiAoIWxvY2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9u
YWw8aW50PiBsZW5ndGg7Ci0gICAgZGVjb2RlciA+PiBsZW5ndGg7Ci0gICAgaWYgKCFsZW5ndGgp
CisgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOworICAgIGRlY29kZXIgPj4gcmFu
Z2U7CisgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFZlY3RvcjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKQEAgLTIxNDksNyArMjE2
MCw3IEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSks
IFdURk1vdmUoKmxvY2F0aW9uKSwgV1RGTW92ZSgqbGVuZ3RoKSwgV1RGTW92ZSgqZGV0YWlscyks
IFdURk1vdmUoKnJlcGxhY2VtZW50KSB9fTsKKyAgICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwg
V1RGTW92ZSgqZGV0YWlscyksIFdURk1vdmUoKnJlcGxhY2VtZW50KSB9IH07CiB9CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2Vm
MTczZWE0YTIxNmU4NGYwMTcuLjFhYmI0MTZjMTRiYmQ0YWU1YjljOTc4OGI3YzAxYTBiNWI2Mjdk
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjksNiArNjksNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKwogY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzOwogY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CkBAIC0xMTYs
NiArMTE3LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVT
aGVldDsKIAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zOworc3RydWN0IENoYXJhY3RlclJhbmdl
Owogc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0
aXZlOwogc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3Ry
dWN0IFZlbG9jaXR5RGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2lu
ZG93RmVhdHVyZXM7CiAgICAgCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsK
K3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVu
dCA9IFJlY3RFZGdlczxmbG9hdD47CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIxNiw2ICsy
MTgsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlJik7CisgICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OkNoYXJhY3RlclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDBmZDJlNTYyODk1
YjMxNjNlZjZlNzk2YjgzZGEwZmU1NjI0MThjMWUuLmVlYzk5ZGMxZjg4MmMwMDkyMTU2YzY1N2Jh
ZjQwNmRhMzI1MGRmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0zMzY2LDEyICszMzY2LDkgQEAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlIGNvcmVUZXh0Q2hlY2tpbmdUeXBlKE5TVGV4dENoZWNraW5nVHkK
IAogc3RhdGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdSZXN1bHRG
cm9tTlNUZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVzdWx0KQog
ewotICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbbnNSZXN1bHQgcmFuZ2VdOwotCiAgICAgV2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQudHlwZSA9IGNvcmVU
ZXh0Q2hlY2tpbmdUeXBlKG5zUmVzdWx0LnJlc3VsdFR5cGUpOwotICAgIHJlc3VsdC5sb2NhdGlv
biA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgcmVzdWx0LnJhbmdlID0gbnNSZXN1bHQucmFuZ2U7CiAgICAgcmVzdWx0
LnJlcGxhY2VtZW50ID0gbnNSZXN1bHQucmVwbGFjZW1lbnRTdHJpbmc7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJE
ZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAK
aW5kZXggNmVlNDQxYjExYTIzOTA1ZTMzYzM5ZDhhOWUwMGQzOTdmOTZmNTJiMS4uNzViYzZmZGIz
ZGVlYzA1MmVkYTA0MDA2NThkYTM2Nzg0ZTZhMDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTQ0LDggKzQ0LDcgQEAgUmVmPFdlYkdyYW1t
YXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFtbWFy
RGV0YWlsJiBncmEKIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbChpbnQgbG9j
YXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNl
ckRlc2NyaXB0aW9uKQogewotICAgIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IGxvY2F0aW9u
OwotICAgIG1fZ3JhbW1hckRldGFpbC5sZW5ndGggPSBsZW5ndGg7CisgICAgbV9ncmFtbWFyRGV0
YWlsLnJhbmdlID0gV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxlbmd0aCk7CiAK
ICAgICBzaXplX3QgbnVtR3Vlc3NlcyA9IGd1ZXNzZXMtPnNpemUoKTsKICAgICBtX2dyYW1tYXJE
ZXRhaWwuZ3Vlc3Nlcy5yZXNlcnZlQ2FwYWNpdHkobnVtR3Vlc3Nlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKaW5kZXggYzliNzU1M2NkN2IwOGVlYWM3ZDgy
MzM4YjExMGY0YWVkZDllZjZhYy4uMzkwYjRhNWY3YjllYWM2MzFmZDczMjQxNjU3ZTIyMWRhNWMx
OTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFp
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAt
NDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0YWlsPiBj
cmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25z
dCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbik7CiAgICAgc3RhdGljIFJlZjxXZWJHcmFtbWFyRGV0
YWlsPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogCi0gICAgaW50IGxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxvY2F0aW9uOyB9Ci0gICAg
aW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sZW5ndGg7IH0KKyAg
ICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwucmFuZ2UubG9j
YXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWls
LnJhbmdlLmxlbmd0aDsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBndWVzc2VzKCkgY29uc3Q7CiAg
ICAgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1t
YXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCmluZGV4IDQxMDhmYWQ2ZDI2NjU3ZWFkZTkwODZjMTZj
ZmRmMjE4MTA3Y2NiMjUuLmJiMDk0NTg5MzZjNDY2ODA0NDYxOWY3OGM2YWIxNGYwMmI1ZDZiMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcApA
QCAtMjY5LDggKzI2OSw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2Vy
OjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nUmVzdWx0OwogICAgICAgICBtaXNzcGVsbGluZ1Jl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgIG1pc3NwZWxs
aW5nUmVzdWx0LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxpbmdMb2NhdGlvbjsKLSAgICAg
ICAgbWlzc3BlbGxpbmdSZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxpbmdMZW5ndGg7CisgICAgICAg
IG1pc3NwZWxsaW5nUmVzdWx0LnJhbmdlID0gQ2hhcmFjdGVyUmFuZ2Uob2Zmc2V0ICsgbWlzc3Bl
bGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgICAgICBwYXJhZ3JhcGhDaGVj
a2luZ1Jlc3VsdC5hcHBlbmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQgKz0g
bWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBHZW5l
cmFsbHksIHdlIGVuZCB1cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUgdG8g
dGhlIGFkamFjZW50IHdvcmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvVGV4dENoZWNrZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENo
ZWNrZXJJT1MubW0KaW5kZXggOTIwMGViNjA4YjNhMTUxZjc2YzA4NjhkYzQ4ODMwYWZmZGM0NzFm
ZS4uZjAwN2YyZjI0ZmZiZDk3YmVlZmFiYjE4YTA5MmE3N2ExODMzNGVjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQpAQCAtMjEyLDggKzIxMiw3
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAKICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0
IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGlu
ZzsKLSAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gbWlzc3BlbGxlZFJhbmdlLmxvY2F0aW9uOwot
ICAgICAgICByZXN1bHQubGVuZ3RoID0gbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsKKyAgICAgICAg
cmVzdWx0LnJhbmdlID0gbWlzc3BlbGxlZFJhbmdlOwogICAgICAgICByZXN1bHRzLmFwcGVuZChX
VEZNb3ZlKHJlc3VsdCkpOwogCiAgICAgICAgIG9mZnNldFNvRmFyID0gbWlzc3BlbGxlZFJhbmdl
LmxvY2F0aW9uICsgbWlzc3BlbGxlZFJhbmdlLmxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQppbmRleCAwY2ExMzNhMmFkY2U0MWE3Y2ZjZjNh
MGQ0MTRhYjRmZmI4NGVlNjM0Li4wZDE5ZTRiZTUxOGY5YmQ4YTJkOTRhOTUzMjMwMDk3YTVjNmVj
ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1t
CkBAIC0zMzQsMjIgKzMzNCwyMCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hl
Y2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcnRob2dyYXBoeTpOVUxMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZENvdW50Ok5VTExdOwogICAgIGZv
ciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0
cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdl
XTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1
bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBO
U05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlLmxlbmd0aCA+IDApOworICAg
ICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCk7
CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5sZW5ndGggPiAwKTsKKyAgICAg
ICAgYXV0byByZXN1bHRSYW5nZSA9IGluY29taW5nUmVzdWx0LnJhbmdlOwogICAgICAgICBpZiAo
cmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiBjaGVja2luZ1R5cGVz
LmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkgewogICAgICAgICAgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1
bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5n
ZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNoZWNraW5nVHlwZXMuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAgICAgICAgIFRleHRDaGVja2lu
Z1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpkZXRhaWxzID0gW2luY29taW5n
UmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3Vs
dFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdl
Lmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWlsIGluIGRldGFpbHMpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwogICAgICAgICAgICAgICAgIEdy
YW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtMzU4LDggKzM1Niw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50
VGFnIHNwCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxOU1JhbmdlID0gW2RldGFpbFJh
bmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWxO
U1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAgICAgIGRldGFpbC5sb2NhdGlv
biA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZGV0YWlsLmxlbmd0
aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgICAgIGRldGFpbC5yYW5nZSA9
IGRldGFpbE5TUmFuZ2U7CiAgICAgICAgICAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9
IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsK
ICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2luY29taW5nRGV0YWlsIG9iamVj
dEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAgICAgICAgICAgZm9yIChOU1N0
cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTM3MCwzNiArMzY3LDMxIEBAIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERv
Y3VtZW50VGFnIHNwCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVj
a2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6
TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxpbms7Ci0gICAgICAgICAgICBy
ZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3Vs
dC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2Ug
PSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IFtbaW5jb21p
bmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tp
bmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpR
dW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAg
ICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOwotICAgICAgICAgICAg
cmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1
bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdl
ID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21p
bmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBlID09IE5TVGV4dENoZWNraW5n
VHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpEYXNo
KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsKLSAgICAgICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJl
c3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gW2luY29taW5nUmVz
dWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJl
cGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQ7Ci0g
ICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICBy
ZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBsYWNlbWVu
dCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5cGUgPT0gTlNU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRD
aGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBUZXh0Q2hlY2tpbmdUeXBlOjpD
b3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9j
YXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOwor
ICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1
bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQpAQCAtNDQzLDE3ICs0
MzUsMjAgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVk
V29yZChTcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHIKIAogdm9pZCBUZXh0Q2hlY2tlcjo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKFNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0
cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFp
bCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNvcnJlY3Rpb25zID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTlNTdHJp
bmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlv
bnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICBhdXRvIGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvJiBndWVzcyA6IGdyYW1t
YXJEZXRhaWwuZ3Vlc3NlcykgeworICAgICAgICBOU1N0cmluZyAqZ3Vlc3NOU1N0cmluZyA9IGd1
ZXNzOworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzTlNTdHJpbmddOwogICAg
IH0KIAotICAgIE5TUmFuZ2UgZ3JhbW1hclJhbmdlID0gTlNNYWtlUmFuZ2UoZ3JhbW1hckRldGFp
bC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgIE5TU3RyaW5nICpncmFtbWFy
VXNlckRlc2NyaXB0aW9uID0gZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb247Ci0gICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gZ3JhbW1hckRldGFpbERpY3QgPSBhZG9wdE5TKFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVlIHZhbHVlV2l0aFJh
bmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNlckRlc2NyaXB0aW9u
LCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLmdldCgpLCBOU0dyYW1tYXJD
b3JyZWN0aW9ucywgbmlsXSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uTlNTdHJpbmcgPSBn
cmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU0RpY3Rpb25hcnkgKmRldGFpbCA9
IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3Jh
bW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3JhbW1hclVzZXJEZXNjcmlwdGlvbiA6IGRl
c2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3JhbW1hckNvcnJlY3Rpb25zIDogY29ycmVj
dGlvbnMuZ2V0KCksCisgICAgfTsKIAotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBo
cmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3QuZ2V0KCldOworICAgIFtbTlNTcGVsbENoZWNr
ZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJp
bmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6ZGV0YWlsXTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tl
cjo6Z2V0R3Vlc3Nlc0ZvcldvcmQoU3BlbGxEb2N1bWVudFRhZyBzcGVsbERvY3VtZW50VGFnLCBj
b25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgaW50MzJfdCBpbnNlcnRp
b25Qb2ludCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMsIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggOWNlNWRiYWMxMTRhNDk1ZmVh
NGE5ZTk1M2Q5YmZmYzgxZWJkNzZjZC4uMjkyZGRiOTA3MWY0Mjg2ZWQzNzE1MWY3OGM2NTQ4NjQ4
NmQ0MmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBW
ZWN0b3I8V2ViQ29yZTo6R3JhbQogICAgICpiYWRHcmFtbWFyTGVuZ3RoID0gcmVzdWx0TGVuZ3Ro
OwogfQogCi1zdGF0aWMgQ2hhcmFjdGVyQ291bnQgaW5zZXJ0aW9uUG9pbnRGcm9tQ3VycmVudFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKQorc3RhdGlj
IHVpbnQ2NF90IGluc2VydGlvblBvaW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbikKIHsKICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0
ID0gY3VycmVudFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKICAgICBhdXRvIHNlbGVjdGlvblN0
YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb25TdGFydCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KaW5kZXggZjE4Y2FhNzJjYmQ5NjUzMTc1
NWU5MmVjZmIyMGVmNGRiOGNhNTNhZi4uNjU5ZDVhZmYzMWQzOTEzZWY0ODE0YjJhNjIxMGExZWI3
ODZjNWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAt
NzMsMTIgKzczLDE1IEBAIHN0YXRpYyBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGU+IHJlbGV2YW50TWFya2VyVHlwZXMoKQogT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyYW5n
ZUFuZE9mZnNldFJlbGF0aXZlVG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxl
bmd0aCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgY29uc3QgRnJhbWVTZWxlY3Rpb24m
IGZyYW1lU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCk7Ci0gICAgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCk7CisgICAgYXV0
byYgZnJhbWVTZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKKyAgICBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9u
ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0byByb290ID0gZnJh
bWVTZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CisgICAg
aWYgKCFyb290KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgYXV0byByYW5n
ZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIHJhbmdlLT5jb2xsYXBzZSh0
cnVlKTsKIApAQCAtODcsNyArOTAsNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogICAgIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uocm9vdCwgcmFuZ2UuZ2V0
KCksIHNlbGVjdGlvbkxvY2F0aW9uLCBzZWxlY3Rpb25MZW5ndGgpOwogICAgIHNlbGVjdGlvbkxv
Y2F0aW9uICs9IG9mZnNldDsKIAotICAgIHJldHVybiB7eyBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNlbGVjdGlvbkxvY2F0aW9uLCBsZW5ndGgpLCBzZWxl
Y3Rpb25Mb2NhdGlvbiB9fTsKKyAgICByZXR1cm4geyB7IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgeyBz
ZWxlY3Rpb25Mb2NhdGlvbiwgbGVuZ3RoIH0pKSwgc2VsZWN0aW9uTG9jYXRpb24gfSB9OwogfQog
CiB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxl
Y3Rpb24oQXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRTdHJpbmcsIGludDY0X3Qgc2VsZWN0aW9u
T2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2Nh
dGlvbiwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCkKQEAgLTk1LDYgKzk4LDgg
QEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2Vs
ZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UuY29y
ZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgRnJh
bWVTZWxlY3Rpb24mIGZyYW1lU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCk7CiAgICAgYXV0
byByb290ID0gZnJhbWVTZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJhbmdl
QW5kT2Zmc2V0ID0gcmFuZ2VBbmRPZmZzZXRSZWxhdGl2ZVRvU2VsZWN0aW9uKHNlbGVjdGlvbk9m
ZnNldCwgbGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlQW5kT2Zmc2V0KQpAQCAtMTEzLDM1ICsxMTgs
MzYgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRv
U2VsZWN0aW9uKEF0dHJpYnV0ZWRTdHJpbmcgYW4KICAgICAgICAgICAgIGF1dG8gcmVwbGFjZW1l
bnRSYW5nZSA9IHJhbmdlQW5kT2Zmc2V0T2ZSZXBsYWNlbWVudC0+cmFuZ2U7CiAgICAgICAgICAg
ICBpZiAocmVwbGFjZW1lbnRSYW5nZSkgewogICAgICAgICAgICAgICAgIGJvb2wgcmVzdG9yZVNl
bGVjdGlvbiA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzUmFuZ2UoKTsKKwogICAgICAg
ICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlcGxhY2VSYW5nZUZvclNwZWxsQ2hlY2tpbmcoKnJl
cGxhY2VtZW50UmFuZ2UsIFtbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBzdHJpbmddIHN1YnN0cmlu
Z1dpdGhSYW5nZTpOU01ha2VSYW5nZShyZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHJlbGF0
aXZlUmVwbGFjZW1lbnRMZW5ndGggKyBbYW5ub3RhdGVkU3RyaW5nLnN0cmluZyBsZW5ndGhdIC0g
bGVuZ3RoKV0pOwogCi0gICAgICAgICAgICAgICAgc2l6ZV90IHNlbGVjdGlvbkxvY2F0aW9uVG9S
ZXN0b3JlID0gbG9jYXRpb25JblJvb3QgLSBzZWxlY3Rpb25PZmZzZXQ7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3RvcmVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPiBs
b2NhdGlvbkluUm9vdCArIHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiArIHJlbGF0aXZlUmVw
bGFjZW1lbnRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25Ub1Jl
c3RvcmUgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIHNl
bGVjdGlvbkxvY2F0aW9uVG9SZXN0b3JlLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVT
ZWxlY3Rpb24ubW92ZVRvKHNlbGVjdGlvblRvUmVzdG9yZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc3RvcmVTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg
c2VsZWN0aW9uTG9jYXRpb25Ub1Jlc3RvcmUgPSBsb2NhdGlvbkluUm9vdCAtIHNlbGVjdGlvbk9m
ZnNldDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkxvY2F0aW9uVG9SZXN0b3Jl
ID4gbG9jYXRpb25JblJvb3QgKyByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24gKyByZWxhdGl2
ZVJlcGxhY2VtZW50TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNlbGVj
dGlvblRvUmVzdG9yZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgeyBzZWxlY3Rpb25Mb2NhdGlvblRv
UmVzdG9yZSwgMCB9KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi5t
b3ZlVG8oc2VsZWN0aW9uVG9SZXN0b3JlLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAg
IFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFr
ZVJhbmdlKDAsIFthbm5vdGF0ZWRTdHJpbmcuc3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2lu
Z0Jsb2NrOl4oTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0tleSwgaWQ+ICphdHRycywg
TlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwgQk9PTCAqc3RvcCkgewotICAgICAgICBhdXRvIGF0dHJp
YnV0ZUNvcmVSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
cm9vdCwgbG9jYXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRl
UmFuZ2UubGVuZ3RoKTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVDb3JlUmFuZ2UpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGF1dG8gYXR0cmlidXRlQ29yZVJhbmdlID0gcmVzb2x2ZUNo
YXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqcm9vdCksIHsgbG9j
YXRpb25JblJvb3QgKyBhdHRyaWJ1dGVSYW5nZS5sb2NhdGlvbiwgYXR0cmlidXRlUmFuZ2UubGVu
Z3RoIH0pOwogCiAgICAgICAgIFthdHRycyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxv
Y2s6XihOU0F0dHJpYnV0ZWRTdHJpbmdLZXkga2V5LCBpZCB2YWx1ZSwgQk9PTCAqc3RvcCkgewog
ICAgICAgICAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtYXJrZXJzLmFkZFBsYXRmb3Jt
VGV4dENoZWNraW5nTWFya2VyKCphdHRyaWJ1dGVDb3JlUmFuZ2UsIGtleSwgKE5TU3RyaW5nICop
dmFsdWUpOworICAgICAgICAgICAgbWFya2Vycy5hZGRQbGF0Zm9ybVRleHRDaGVja2luZ01hcmtl
cihhdHRyaWJ1dGVDb3JlUmFuZ2UsIGtleSwgKE5TU3RyaW5nICopdmFsdWUpOwogCiAgICAgICAg
ICAgICAvLyBGSVhNRTogU3dpdGNoIHRvIGNvbnN0YW50cyBhZnRlciByZGFyOi8vcHJvYmxlbS80
ODkxNDE1MyBpcyByZXNvbHZlZC4KICAgICAgICAgICAgIGlmIChba2V5IGlzRXF1YWxUb1N0cmlu
ZzpAIk5TU3BlbGxpbmdTdGF0ZSJdKSB7CiAgICAgICAgICAgICAgICAgTlNTcGVsbGluZ1N0YXRl
IHNwZWxsaW5nU3RhdGUgPSAoTlNTcGVsbGluZ1N0YXRlKVt2YWx1ZSBpbnRlZ2VyVmFsdWVdOwog
ICAgICAgICAgICAgICAgIGlmIChzcGVsbGluZ1N0YXRlICYgTlNTcGVsbGluZ1N0YXRlU3BlbGxp
bmdGbGFnKQotICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcigqYXR0cmlidXRl
Q29yZVJhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOworICAgICAgICAgICAgICAgICAg
ICBtYXJrZXJzLmFkZE1hcmtlcihhdHRyaWJ1dGVDb3JlUmFuZ2UsIERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgICAgICAgICAgaWYgKHNwZWxsaW5nU3RhdGUgJiBOU1NwZWxsaW5n
U3RhdGVHcmFtbWFyRmxhZykgewogICAgICAgICAgICAgICAgICAgICBOU1N0cmluZyAqdXNlckRl
c2NyaXB0aW9uID0gW2F0dHJzIG9iamVjdEZvcktleTpAIk5TR3JhbW1hclVzZXJEZXNjcmlwdGlv
biJdOwotICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmFkZE1hcmtlcigqYXR0cmlidXRlQ29y
ZVJhbmdlLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgdXNlckRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWFya2Vycy5hZGRNYXJrZXIoYXR0cmlidXRlQ29yZVJhbmdlLCBEb2N1
bWVudE1hcmtlcjo6R3JhbW1hciwgdXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH1dOwpAQCAtMTk5LDExICsyMDUsMTEgQEAgQXR0cmli
dXRlZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmlu
Z0JldHdlZW5Qb3NpdGlvbnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgYXV0byYgdGV4dENoZWNraW5nRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpQbGF0
Zm9ybVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGF1dG8g
c3VicmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKGNyZWF0ZUxpdmVSYW5nZShjdXJyZW50
VGV4dFJhbmdlKSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBtYXJrZXItPmVuZE9mZnNldCgpIC0g
bWFya2VyLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gc3VicmFuZ2UgPSByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UoY3VycmVudFRleHRSYW5nZSwgeyBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgfSk7CiAKICAg
ICAgICAgICAgIHNpemVfdCBzdWJyYW5nZUxvY2F0aW9uOwogICAgICAgICAgICAgc2l6ZV90IHN1
YnJhbmdlTGVuZ3RoOwotICAgICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShjb21tb25BbmNlc3Rvci5nZXQoKSwgJnN1YnJhbmdlLmdldCgpLCBzdWJy
YW5nZUxvY2F0aW9uLCBzdWJyYW5nZUxlbmd0aCk7CisgICAgICAgICAgICBUZXh0SXRlcmF0b3I6
OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGNvbW1vbkFuY2VzdG9yLmdldCgpLCBjcmVh
dGVMaXZlUmFuZ2Uoc3VicmFuZ2UpLnB0cigpLCBzdWJyYW5nZUxvY2F0aW9uLCBzdWJyYW5nZUxl
bmd0aCk7CiAKICAgICAgICAgICAgIEFTU0VSVChzdWJyYW5nZUxvY2F0aW9uID4gZW50aXJlUmFu
Z2VMb2NhdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoc3VicmFuZ2VMb2NhdGlvbiArIHN1YnJh
bmdlTGVuZ3RoIDwgZW50aXJlUmFuZ2VMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMmIzYTE0YjU5YTRlNzg4NDI3Y2Y5MTRiN2Iy
MzJkYTEwYzI4MDVhLi4xZWEzMWRiZjgwNzgyNDEyZjIzMWVmYzg5ZGM0MjMzZTRhYzExMDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQy
MCwyMCArNTQyMCwyMSBAQCB2b2lkIFdlYlBhZ2U6OmRlbGV0ZVN1cnJvdW5kaW5nKGludDY0X3Qg
b2Zmc2V0LCB1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudCkKICAgICBpZiAoIXRhcmdldEZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24g
PSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgYXV0byYgc2VsZWN0
aW9uID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxl
Y3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2VsZWN0aW9uU3Rh
cnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CiAgICAgYXV0byBzdXJyb3VuZGluZ1Jhbmdl
ID0gbWFrZVJhbmdlKHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3RhcnQpLCBzZWxl
Y3Rpb25TdGFydCk7Ci0gICAgYXV0byBjdXJzb3JQb3NpdGlvbiA9IFdlYkNvcmU6OmNoYXJhY3Rl
ckNvdW50KCpzdXJyb3VuZGluZ1JhbmdlKTsKLSAgICBhdXRvJiByb290Tm9kZSA9IHN1cnJvdW5k
aW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICBh
dXRvIHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCgmcm9vdE5vZGUsIGN1cnNvclBvc2l0aW9uICsgb2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7
Ci0gICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkKKyAgICBpZiAoIXN1cnJvdW5kaW5nUmFuZ2UpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGF1dG8mIHJvb3ROb2RlID0gc3Vycm91bmRpbmdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOworICAgIGF1dG8gY2hhcmFj
dGVyUmFuZ2UgPSBXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZShXZWJDb3JlOjpjaGFyYWN0ZXJDb3Vu
dCgqc3Vycm91bmRpbmdSYW5nZSkgKyBvZmZzZXQsIGNoYXJhY3RlckNvdW50KTsKKyAgICBhdXRv
IHNlbGVjdGlvblJhbmdlID0gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhyb290Tm9kZSksIGNoYXJhY3RlclJhbmdlKTsKKwogICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIHRhcmdl
dEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqc2VsZWN0
aW9uUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgdGFyZ2V0RnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLCBTRUxf
REVGQVVMVF9BRkZJTklUWSkpOwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5kZWxldGVTZWxl
Y3Rpb25XaXRoU21hcnREZWxldGUoZmFsc2UpOwogICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5z
ZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKICAgICBzZW5kRWRpdG9yU3RhdGVVcGRh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggYTg3ZGJlZjU0NzIwNzE1MTc1Y2U3MjU2NGM2YThmNWFhYzE0MWM3Yi4u
YWRjZWE4YzdkZTYzYjNjNjdhYjQxZTkzMTEyMDYyNzJkZWU0ZDdkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2Mywx
MiArMjYzLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAvLyB0byBhdm9pZCB0aGUgbmVl
ZCB0byBmb3JjZSBhIHN5bmNocm9ub3VzIGxheW91dCBoZXJlIHRvIGNvbXB1dGUgdGhlc2UgZW50
cmllcy4gSWYgd2UKICAgICAvLyBoYXZlIGEgY29tcG9zaXRpb24gb3IgYXJlIHVzaW5nIGEgaGFy
ZHdhcmUga2V5Ym9hcmQgdGhlbiB3ZSBzZW5kIHRoZSBmdWxsIGVkaXRvciBzdGF0ZQogICAgIC8v
IGltbWVkaWF0ZWx5IHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBjYW4gdXBkYXRlIFVJLCBpbmNsdWRp
bmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldC4KLSAgICBib29sIG5lZWRzTGF5b3V0ID0gdmll
dy0+bmVlZHNMYXlvdXQoKTsKLSAgICBib29sIHJlcXVpcmVzUG9zdExheW91dERhdGEgPSBmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOwotI2Vu
ZGlmCi0gICAgaWYgKG5lZWRzTGF5b3V0IHx8IHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKKyAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQoKSB8fCByZXN1bHQuaXNNaXNzaW5nUG9zdExh
eW91dERhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0g
cmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CkBAIC00MDc2LDggKzQwNzEsOSBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0
X3QgbGVuZ3RoRGVsdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHJvb3QsIG5ld1Nl
bGVjdGlvbkxvY2F0aW9uLnVuc2FmZUdldCgpLCBuZXdTZWxlY3Rpb25MZW5ndGgudW5zYWZlR2V0
KCkpKQotICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5n
ZXQoKSwgRE9XTlNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIGF1dG8gbmV3U2VsZWN0aW9uUmFuZ2UgPSBD
aGFyYWN0ZXJSYW5nZShuZXdTZWxlY3Rpb25Mb2NhdGlvbi51bnNhZmVHZXQoKSwgbmV3U2VsZWN0
aW9uTGVuZ3RoLnVuc2FmZUdldCgpKTsKKyAgICBhdXRvIHJlc29sdmVkUmFuZ2UgPSByZXNvbHZl
Q2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KSwgbmV3
U2VsZWN0aW9uUmFuZ2UpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlZFJhbmdlKS5wdHIoKSwgRE9XTlNUUkVBTSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTQxOTIsMTYgKzQxODgsMTUgQEAg
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHJv
b3RDb250YWluZXJOb2RlID0gcm9vdE5vZGUtPmlzQ29udGFpbmVyTm9kZSgpID8gZG93bmNhc3Q8
Q29udGFpbmVyTm9kZT4ocm9vdE5vZGUuZ2V0KCkpIDogcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsK
ICAgICAgICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyb290
Q29udGFpbmVyTm9kZS5nZXQoKSwgcmFuZ2VPZkludGVyZXN0LmdldCgpLCByYW5nZU9mSW50ZXJl
c3RMb2NhdGlvbiwgcmFuZ2VPZkludGVyZXN0TGVuZ3RoKTsKIAotICAgICAgICBDaGVja2VkU2l6
ZSBtaWRwb2ludExvY2F0aW9uIHsgcmFuZ2VPZkludGVyZXN0TG9jYXRpb24gfTsKKyAgICAgICAg
Q2hlY2tlZDx1aW50NjRfdCwgUmVjb3JkT3ZlcmZsb3c+IG1pZHBvaW50TG9jYXRpb24geyByYW5n
ZU9mSW50ZXJlc3RMb2NhdGlvbiB9OwogICAgICAgICBtaWRwb2ludExvY2F0aW9uICs9IHJhbmdl
T2ZJbnRlcmVzdExlbmd0aCAvIDI7CiAgICAgICAgIGlmIChtaWRwb2ludExvY2F0aW9uLmhhc092
ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWlkcG9pbnRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgocm9vdENvbnRhaW5lck5v
ZGUuZ2V0KCksIG1pZHBvaW50TG9jYXRpb24udW5zYWZlR2V0KCksIDApOworICAgICAgICBhdXRv
IG1pZHBvaW50ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJlc29sdmVDaGFyYWN0ZXJM
b2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnJvb3RDb250YWluZXJOb2Rl
KSwgbWlkcG9pbnRMb2NhdGlvbi51bnNhZmVHZXQoKSkpOwogCi0gICAgICAgIGF1dG8gbWlkcG9p
bnQgPSBtaWRwb2ludFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIHN0YXJ0T2ZSYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IHN0YXJ0T2ZXb3JkKG1pZHBvaW50KTsKICAgICAgICAg
aWYgKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA8IHJhbmdlT2ZJbnRlcmVzdFN0
YXJ0KSB7CiAgICAgICAgICAgICBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24gPSBl
bmRPZldvcmQobWlkcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGNhNDc5MzEwNTRiODAy
NjI2ODczZTNmNTNmYjVlZTMwNTRlOTg1MTMuLjY5MmVlMDc4MDYyNDE2MTJiOGRmOGI1YmE3MjFl
NTRjNDliYmI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTg2NSwxMiArODY1LDExIEBAIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3RyaW5nVmlldyBzdHJpCiAKICAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBb
W21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gY2hlY2tTcGVsbGluZ09mU3RyaW5n
OnN0cmluZy5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldOwogICAgIGZvciAo
TlNWYWx1ZSAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7Ci0gICAgICAgIE5T
UmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VWYWx1ZV07Ci0gICAgICAg
IEFTU0VSVChyZXN1bHRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIHJlc3VsdFJhbmdl
Lmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2VWYWx1ZS5s
b2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKKyAgICAgICAgQVNTRVJUKGluY29taW5nUmVzdWx0LnJh
bmdlVmFsdWUubGVuZ3RoID4gMCk7CiAgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CiAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAg
ICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICByZXN1
bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAgICByZXN1bHQucmFuZ2UgPSBp
bmNvbWluZ1Jlc3VsdC5yYW5nZVZhbHVlOwogICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQp
OwogICAgIH0KIApAQCAtOTM5LDExICs5MzgsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hl
Y2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAog
ICAgICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgICAgIE5TVmFsdWUgKmRl
dGFpbFJhbmdlQXNOU1ZhbHVlID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyUmFuZ2Vd
OwogICAgICAgICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUpOwotICAgICAgICBOU1Jhbmdl
IGRldGFpbE5TUmFuZ2UgPSBbZGV0YWlsUmFuZ2VBc05TVmFsdWUgcmFuZ2VWYWx1ZV07Ci0gICAg
ICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwotICAgICAg
ICBBU1NFUlQoZGV0YWlsTlNSYW5nZS5sZW5ndGggPiAwKTsKLSAgICAgICAgZ3JhbW1hckRldGFp
bC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgIGdyYW1tYXJEZXRh
aWwubGVuZ3RoID0gZGV0YWlsTlNSYW5nZS5sZW5ndGg7CisgICAgICAgIEFTU0VSVChkZXRhaWxS
YW5nZUFzTlNWYWx1ZS5yYW5nZVZhbHVlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOworICAgICAg
ICBBU1NFUlQoZGV0YWlsUmFuZ2VBc05TVmFsdWUucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKTsKKyAg
ICAgICAgZ3JhbW1hckRldGFpbC5yYW5nZSA9IGRldGFpbFJhbmdlQXNOU1ZhbHVlLnJhbmdlVmFs
dWU7CiAgICAgICAgIGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gW2RldGFpbCBvYmpl
Y3RGb3JLZXk6TlNHcmFtbWFyVXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgTlNBcnJheSAqZ3Vl
c3NlcyA9IFtkZXRhaWwgb2JqZWN0Rm9yS2V5Ok5TR3JhbW1hckNvcnJlY3Rpb25zXTsKICAgICAg
ICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk1NywyMiArOTU0LDIwIEBA
IHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5n
UmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
cmVzdWx0czsKIAogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0
IGluIGluY29taW5nUmVzdWx0cykgewotICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2lu
Y29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5
cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAgICAgIEFTU0VSVChyZXN1bHRS
YW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdl
Lmxlbmd0aCA+IDApOworICAgICAgICBBU1NFUlQoaW5jb21pbmdSZXN1bHQucmFuZ2UubG9jYXRp
b24gIT0gTlNOb3RGb3VuZCk7CisgICAgICAgIEFTU0VSVChpbmNvbWluZ1Jlc3VsdC5yYW5nZS5s
ZW5ndGggPiAwKTsKKyAgICAgICAgYXV0byByZXN1bHRSYW5nZSA9IGluY29taW5nUmVzdWx0LnJh
bmdlOwogICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGlu
ZyAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSkg
ewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7Ci0gICAgICAgICAgICByZXN1
bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5s
ZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSBy
ZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAg
IH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGNo
ZWNraW5nVHlwZXMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpIHsKICAgICAg
ICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBOU0FycmF5ICpk
ZXRhaWxzID0gW2luY29taW5nUmVzdWx0IGdyYW1tYXJEZXRhaWxzXTsKICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKLSAgICAgICAgICAgIHJlc3Vs
dC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAgICAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZSA9IHJl
c3VsdFJhbmdlOwogICAgICAgICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmluY29taW5nRGV0YWls
IGluIGRldGFpbHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5jb21pbmdEZXRhaWwpOwog
ICAgICAgICAgICAgICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwpAQCAtOTgxLDggKzk3Niw3IEBA
IHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5n
UmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgICAgICAgICAgTlNSYW5nZSBkZXRhaWxO
U1JhbmdlID0gW2RldGFpbFJhbmdlQXNOU1ZhbHVlIHJhbmdlVmFsdWVdOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXRhaWxOU1JhbmdlLmxlbmd0aCA+IDApOwotICAgICAgICAgICAg
ICAgIGRldGFpbC5sb2NhdGlvbiA9IGRldGFpbE5TUmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAg
ICAgICAgZGV0YWlsLmxlbmd0aCA9IGRldGFpbE5TUmFuZ2UubGVuZ3RoOworICAgICAgICAgICAg
ICAgIGRldGFpbC5yYW5nZSA9IGRldGFpbE5TUmFuZ2U7CiAgICAgICAgICAgICAgICAgZGV0YWls
LnVzZXJEZXNjcmlwdGlvbiA9IFtpbmNvbWluZ0RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFy
VXNlckRlc2NyaXB0aW9uXTsKICAgICAgICAgICAgICAgICBOU0FycmF5ICpndWVzc2VzID0gW2lu
Y29taW5nRGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJDb3JyZWN0aW9uc107CiAgICAgICAg
ICAgICAgICAgZm9yIChOU1N0cmluZyAqZ3Vlc3MgaW4gZ3Vlc3NlcykKQEAgLTk5MywzNiArOTg3
LDMxIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmlu
Y29taW5nUmVzdWx0cywgT3B0aW9uU2V0PFRleHRDCiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
VHlwZSA9PSBOU1RleHRDaGVja2luZ1R5cGVMaW5rICYmIGNoZWNraW5nVHlwZXMuY29udGFpbnMo
VGV4dENoZWNraW5nVHlwZTo6TGluaykpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6Okxp
bms7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAgIHJlc3VsdC5yZXBs
YWNlbWVudCA9IFtbaW5jb21pbmdSZXN1bHQgVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFR5
cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhU
ZXh0Q2hlY2tpbmdUeXBlOjpRdW90ZSkpIHsKICAgICAgICAgICAgIFRleHRDaGVja2luZ1Jlc3Vs
dCByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFRleHRDaGVja2luZ1R5cGU6OlF1
b3RlOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0UmFuZ2UubG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0UmFuZ2UubGVuZ3RoOworICAgICAg
ICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7CiAgICAgICAgICAgICByZXN1bHQucmVw
bGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFjZW1lbnRTdHJpbmddOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRUeXBl
ID09IE5TVGV4dENoZWNraW5nVHlwZURhc2ggJiYgY2hlY2tpbmdUeXBlcy5jb250YWlucyhUZXh0
Q2hlY2tpbmdUeXBlOjpEYXNoKSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IHJl
c3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZTo6RGFzaDsK
LSAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdFJhbmdlLmxvY2F0aW9uOwotICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdFJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAg
IHJlc3VsdC5yYW5nZSA9IHJlc3VsdFJhbmdlOwogICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2Vt
ZW50ID0gW2luY29taW5nUmVzdWx0IHJlcGxhY2VtZW50U3RyaW5nXTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0VHlwZSA9PSBO
U1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCAmJiBjaGVja2luZ1R5cGVzLmNvbnRhaW5zKFRl
eHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgVGV4dENoZWNraW5n
UmVzdWx0IHJlc3VsdDsKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSByZXN1bHRSYW5n
ZS5sb2NhdGlvbjsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSByZXN1bHRSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICByZXN1bHQucmFuZ2UgPSByZXN1bHRSYW5nZTsKICAgICAgICAgICAg
IHJlc3VsdC5yZXBsYWNlbWVudCA9IFtpbmNvbWluZ1Jlc3VsdCByZXBsYWNlbWVudFN0cmluZ107
CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9IGVsc2UgaWYg
KHJlc3VsdFR5cGUgPT0gTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiAmJiBjaGVja2luZ1R5
cGVzLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pKSB7CiAgICAgICAgICAg
ICBUZXh0Q2hlY2tpbmdSZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBU
ZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOwotICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9u
ID0gcmVzdWx0UmFuZ2UubG9jYXRpb247Ci0gICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVz
dWx0UmFuZ2UubGVuZ3RoOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlID0gcmVzdWx0UmFuZ2U7
CiAgICAgICAgICAgICByZXN1bHQucmVwbGFjZW1lbnQgPSBbaW5jb21pbmdSZXN1bHQgcmVwbGFj
ZW1lbnRTdHJpbmddOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAg
ICAgfQpAQCAtMTA0OSwxNiArMTAzOCwxOCBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcgc3RyaQogCiB2
b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNv
bnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgR3JhbW1hckRldGFpbCYgZ3JhbW1h
ckRldGFpbCkKIHsKLSAgICBOU011dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWls
Lmd1ZXNzZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1h
ckRldGFpbC5ndWVzc2VzW2ldOwotICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNz
XTsKKyAgICBOU011dGFibGVBcnJheSAqY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXldOworICAgIGZvciAoYXV0byYgZ3Vlc3MgOiBncmFtbWFyRGV0YWlsLmd1ZXNzZXMpIHsKKyAg
ICAgICAgTlNTdHJpbmcgKmd1ZXNzTlNTdHJpbmcgPSBndWVzczsKKyAgICAgICAgW2NvcnJlY3Rp
b25zIGFkZE9iamVjdDpndWVzc05TU3RyaW5nXTsKICAgICB9Ci0gICAgTlNSYW5nZSBncmFtbWFy
UmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0YWls
Lmxlbmd0aCk7Ci0gICAgTlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRpb24gPSBncmFtbWFy
RGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKLSAgICBOU0RpY3Rpb25hcnkqIGdyYW1tYXJEZXRhaWxE
aWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOltOU1ZhbHVl
IHZhbHVlV2l0aFJhbmdlOmdyYW1tYXJSYW5nZV0sIE5TR3JhbW1hclJhbmdlLCBncmFtbWFyVXNl
ckRlc2NyaXB0aW9uLCBOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb24sIGNvcnJlY3Rpb25zLCBOU0dy
YW1tYXJDb3JyZWN0aW9ucywgbmlsXTsKLSAgICAKLSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdy
YW1tYXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsKKyAgICBOU1N0cmluZyAqZGVz
Y3JpcHRpb25OU1N0cmluZyA9IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uOworICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IEB7CisgICAgICAgIE5TR3JhbW1hclJhbmdlIDogW05T
VmFsdWUgdmFsdWVXaXRoUmFuZ2U6Z3JhbW1hckRldGFpbC5yYW5nZV0sCisgICAgICAgIE5TR3Jh
bW1hclVzZXJEZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uTlNTdHJpbmcsCisgICAgICAgIE5TR3Jh
bW1hckNvcnJlY3Rpb25zIDogY29ycmVjdGlvbnMsCisgICAgfTsKKyAgICBbW05TU3BlbGxDaGVj
a2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3Ry
aW5nOmJhZEdyYW1tYXJQaHJhc2UgZGV0YWlsOmRpY3Rpb25hcnldOwogfQogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmIG1pc3NwZWxsZWRXb3JkKQpAQCAtMTE5NCw3ICsxMTg1LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0IGEKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3Nd
XSkgewogICAgICAgICB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCA9IGFjY2VwdGVkQ2FuZGlk
YXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGgg
PiAwKSB7Ci0gICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShh
Y2NlcHRlZENhbmRpZGF0ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgICAgICAg
ICAgTlNSYW5nZSByZXBsYWNlZFJhbmdlID0gTlNNYWtlUmFuZ2UoYWNjZXB0ZWRDYW5kaWRhdGUu
cmFuZ2UubG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIE5TUmFuZ2Ug
c29mdFNwYWNlUmFuZ2UgPSBOU01ha2VSYW5nZShOU01heFJhbmdlKHJlcGxhY2VkUmFuZ2UpIC0g
MSwgMSk7CiAgICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5k
c1dpdGgoIiAiKSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29m
dFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZWQ1ZWQyMDQwMjk1NTc4ZWJlOTllYjgwNzc0MmQ3ZTA2
YjA0OWUzMC4uZmU2NmQxYjU0Zjc1ZDdmZGM5ZjU2OGQyMmNkNDllZmZkNGRjOTk1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MTksMTIgKzgx
OSwxMCBAQCAtIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNS
YW5nZSluc3JhbmdlCiAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpuc3Jhbmdl
IHJhbmdlSXNSZWxhdGl2ZVRvOldlYlJhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3RdOwog
fQogCi0tIChSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5n
ZSluc3JhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlz
UmVsYXRpdmVUbworLSAoUmVmUHRyPFdlYkNvcmU6OlJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJh
bmdlSXNSZWxhdGl2ZVRvCiB7Ci0gICAgaWYgKG5zcmFuZ2UubG9jYXRpb24gPiBJTlRfTUFYKQor
ICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFYIHx8IG5zcmFuZ2UubG9jYXRp
b24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIG5zcmFuZ2UubGVuZ3RoID0g
SU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8g
PT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIg
Y3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVk
IGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAtODM2LDcgKzgzNCw3IEBAIC0gKFJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1Jl
bGF0aXZlVG86CiAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVs
ZW1lbnQsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpKTsKICAgICB9CiAKICAgICBBU1NFUlQocmFu
Z2VJc1JlbGF0aXZlVG8gPT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OlBhcmFncmFwaCk7CkBAIC04
NDQsMTAgKzg0Miw5IEBAIC0gKFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4pX2NvbnZlcnRUb0RPTVJh
bmdlOihOU1JhbmdlKW5zcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86CiAgICAgYXV0byBwYXJhZ3Jh
cGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNv
cmVGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBp
ZiAoIXBhcmFncmFwaFN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiBy
b290Tm9kZSA9IHBhcmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2Rl
KCk7CiAKLSAgICBhdXRvIHBhcmFncmFwaFN0YXJ0SW5kZXggPSBXZWJDb3JlOjpjaGFyYWN0ZXJD
b3VudCh7IHsgcm9vdE5vZGUsIDAgfSwgKnBhcmFncmFwaFN0YXJ0IH0pOwotICAgIHJldHVybiBX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKCZyb290Tm9k
ZSwgcGFyYWdyYXBoU3RhcnRJbmRleCArIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3Ro
KTsKKyAgICBhdXRvIHNjb3BlRW5kID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKHBh
cmFncmFwaFN0YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmVuZDsKKyAg
ICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7
IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpKTsK
IH0KIAogLSAoRE9NUmFuZ2UgKilfY29udmVydE5TUmFuZ2VUb0RPTVJhbmdlOihOU1JhbmdlKW5z
cmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
ZGRmMjNlY2YzY2JhNWI5YmM5ZWE5ZjI2ZWVkY2YwMzc5OTU2ODhjLi5jMzU5NTIxYzZkZGM3N2Y2
NmExMzU2Y2FhMTkxZjY1ODcwM2VmZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC03Mjc4LDEyICs3Mjc4LDkgQEAgY29uc3RleHByIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGUgY29yZVRleHRDaGVja2luZ1R5cGUoTlNUZXh0Q2hlY2tpbmdUeXBl
IHR5cGUKIAogc3RhdGljIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCB0ZXh0Q2hlY2tpbmdS
ZXN1bHRGcm9tTlNUZXh0Q2hlY2tpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm5zUmVz
dWx0KQogewotICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBuc1Jlc3VsdC5yYW5nZTsKLQogICAg
IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LnR5cGUgPSBj
b3JlVGV4dENoZWNraW5nVHlwZShuc1Jlc3VsdC5yZXN1bHRUeXBlKTsKLSAgICByZXN1bHQubG9j
YXRpb24gPSByZXN1bHRSYW5nZS5sb2NhdGlvbjsKLSAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0
UmFuZ2UubGVuZ3RoOworICAgIHJlc3VsdC5yYW5nZSA9IG5zUmVzdWx0LnJhbmdlOwogICAgIHJl
c3VsdC5yZXBsYWNlbWVudCA9IG5zUmVzdWx0LnJlcGxhY2VtZW50U3RyaW5nOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4ZGYxYzcyMWJiNjhmNmUwMTAx
N2U2NTUyNGM5M2MwZGZlZTI4ODQ2Li5lZmVkYTQ0YTk4MTk4MDk1ZDAxN2EwOTBiZmM3YWE3ZTg3
MjhkZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTc5MCwxNCArNzkwLDE4IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZl
Y3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgIGlmIChlbnVtRGV0YWlsc09iai0+TmV4dCgxLCAm
ZGV0YWlsT2JqLCAmZmV0Y2hlZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIEdyYW1tYXJEZXRhaWwgZGV0YWlsOwotICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+
bGVuZ3RoKCZkZXRhaWwubGVuZ3RoKSkpCisgICAgICAgIGludCBsZW5ndGg7CisgICAgICAgIGlm
IChGQUlMRUQoZGV0YWlsT2JqLT5sZW5ndGgoJmxlbmd0aCkpKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5sb2NhdGlvbigmZGV0YWlsLmxvY2F0
aW9uKSkpCisgICAgICAgIGludCBsb2NhdGlvbjsKKyAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxP
YmotPmxvY2F0aW9uKCZsb2NhdGlvbikpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IEJTdHJpbmcgdXNlckRlc2M7CiAgICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT51c2VyRGVz
Y3JpcHRpb24oJnVzZXJEZXNjKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBH
cmFtbWFyRGV0YWlsIGRldGFpbDsKKyAgICAgICAgZGV0YWlsLnJhbmdlID0gQ2hhcmFjdGVyUmFu
Z2UobG9jYXRpb24sIGxlbmd0aCk7CiAgICAgICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBT
dHJpbmcodXNlckRlc2MsIFN5c1N0cmluZ0xlbih1c2VyRGVzYykpOwogCiAgICAgICAgIENPTVB0
cjxJRW51bVNwZWxsaW5nR3Vlc3Nlcz4gZW51bUd1ZXNzZXNPYmo7CkBAIC04MjYsNyArODMwLDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgY28KICAgICAgICAgZ3Vlc3Nlc0JTVFJzLmFwcGVuZChn
dWVzcy5yZWxlYXNlKCkpOwogICAgIH0KICAgICBCU3RyaW5nIHVzZXJEZXNjcmlwdGlvbkJTVFIo
ZGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7Ci0gICAgZWQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyhCU3RyaW5nKHN0cmluZyksIGRldGFpbC5sb2NhdGlvbiwgZGV0YWlsLmxlbmd0
aCwgdXNlckRlc2NyaXB0aW9uQlNUUiwgZ3Vlc3Nlc0JTVFJzLmRhdGEoKSwgKGludClndWVzc2Vz
QlNUUnMuc2l6ZSgpKTsKKyAgICBlZC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KEJTdHJpbmcoc3RyaW5nKSwgZGV0YWlsLnJhbmdlLmxvY2F0aW9uLCBkZXRhaWwucmFuZ2UubGVu
Z3RoLCB1c2VyRGVzY3JpcHRpb25CU1RSLCBndWVzc2VzQlNUUnMuZGF0YSgpLCAoaW50KWd1ZXNz
ZXNCU1RScy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBndWVzc2VzQlNU
UnMuc2l6ZSgpOyBpKyspCiAgICAgICAgIFN5c0ZyZWVTdHJpbmcoZ3Vlc3Nlc0JTVFJzW2ldKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZDcwNTNlYzMyMDRjYWFlZTBl
NDlhODFlMTViZTExMjgzNDk4Y2RjNC4uNGYyMzI0Nzc3NTg5MjY3NTBkZjVlMDIxNDBmMjBlYTk3
MTljMjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTc3NjEsMjMgKzc3
NjEsMTkgQEAgSFJFU1VMVCBXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRl
c3RpbmcoVUlOVCBsb2NhdGlvbiwgVUlOVCBsZW5ndGgKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIEludFJlY3QgcmVzdWx0SW50UmVjdDsKLSAgICByZXN1
bHRJbnRSZWN0LnNldExvY2F0aW9uKEludFBvaW50KDAsIDApKTsKLSAgICByZXN1bHRJbnRSZWN0
LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7Ci0gICAgCi0gICAgaWYgKGxvY2F0aW9uID4gSU5UX01B
WCkKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCBsb2NhdGlv
biArIGxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSBsb2NhdGlv
bjsKLSAgICAgICAgCi0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisK
KyAgICBhdXRvIGNoYXJhY3RlclJhbmdlID0gQ2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxlbmd0
aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShyZXNvbHZlQ2hh
cmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgY2hh
cmFjdGVyUmFuZ2UpKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
Ci0gICAgIAorCiAgICAgSW50UmVjdCByZWN0ID0gZnJhbWUuZWRpdG9yKCkuZmlyc3RSZWN0Rm9y
UmFuZ2UocmFuZ2UuZ2V0KCkpOwotICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS52aWV3KCktPmNv
bnRlbnRzVG9XaW5kb3cocmVjdCk7CisgICAgSW50UmVjdCByZXN1bHRJbnRSZWN0ID0gZnJhbWUu
dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOwogCiAgICAgcmVzdWx0SW50UmVjdC5zY2Fs
ZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4MTgwMTZjZTQ3NmQ2ZTc3ODljNmEw
ZGVjYjFkYzczMmUzNTRkMTEuLmZmYzZjYmRmZjlkNTQwZmE2YmQ0MWU1NDEzOGUzNDYwMWY5Yjkx
OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wMy0yOSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIG9mZiBvZiBsaXZlIHJhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NDA4CisKKyAgICAgICAgRml4IE1hYy1zcGVjaWZp
YyBmaXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCB0ZXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU3OTkwNzE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgt
b3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sOgorICAg
ICAgICBVcGRhdGVkIHRvIGV4cGVjdCB0ZXh0TWFya2VyRm9ySW5kZXggdG8gY2xhbXAgcmF0aGVy
IHRoYW4gcmV0dXJuaW5nIHNvbWV0aGluZyBpbnZhbGlkLgorCisgICAgICAgICogZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGVkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBs
YWluLmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdGVzdCBvdXRwdXQgdG8gaW5jbHVkZSB3aGF0IGlz
IGJlaW5nIHRlc3RlZCwgbm90IGp1c3QgdGhlIHRlc3QgcmVzdWx0LgorICAgICAgICBVcGRhdGVk
IHRlc3QgcmVzdWx0cyB0byBleHBlY3QgY2xhbXBpbmcgcmF0aGVyIHRoYW4gYW4gZW1wdHkgcmVj
dGFuZ2xlLCBmb3IgdmFsdWVzCisgICAgICAgIHRoYXQgYXJlIG91dCBvZiBib3VuZHMuIEFsc28g
Z290IHJpZCBvZiBkdW1waW5nIG9mIGVpZHRpbmcgY2FsbGJhY2tzIHNpbmNlIHRoZXJlIGlzCisg
ICAgICAgIG5vIHJlYXNvbiB0byBpbmNsdWRlIHRoZW0gaW4gdGhpcyB0ZXN0LgorCisgICAgICAg
ICogZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbDoKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNpbmNlIG91ciBvbGRlc3Qgc3VwcG9ydGVk
IHJlbGVhc2UgaXMgTW9qYXZlLCBkZWxldGVkCisgICAgICAgIGFsbCBydWxlcyB3aXRoIFNpZXJy
YSBvciBIaWdoU2llcnJhIGNvbmRpdGlvbmFscyBzaW5jZSB0aG9zZSBjb25kaXRpb25zIGFyZSBh
bHdheXMgZmFsc2UsCisgICAgICAgIGFuZCByZW1vdmVkIGFueSBjb25kaXRpb25hbHMgdGhhdCBz
YWlkIFNpZXJyYSssIEhpZ2hTaWVycmErLCBvciBNb2phdmUrIGJlY2F1c2UgdGhvc2UKKyAgICAg
ICAgY29uZGl0aW9ucyBhcmUgYWx3YXlzIHRydWUuIE9uZSB0ZXN0LCBmaXJzdHJlY3Rmb3JjaGFy
YWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCwgaGFkIHJlc3VsdHMKKyAgICAgICAgY2hlY2tlZCBpbiB0
aGF0IHdlcmUgY29ycmVjdCBmb3IgTW9qYXZlIGJ1dCBpbmNvcnJlY3QgZm9yIENhdGFsaW5hLiBG
b3IgdGhhdCB0ZXN0LCB0aGUKKyAgICAgICAgcmVzdWx0cyBhcmUgbm93IGNvcnJlY3QgZm9yIENh
dGFsaW5hLCBzbyB1cGRhdGVkIGV4cGVjdGF0aW9ucyBmb3IgdGhhdC4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uIEFsc28gc29tZSB0ZXN0cyB0
aGF0IGNsYWltZWQgSW1hZ2VPbmx5RmFpbHVyZQorICAgICAgICBhcmUgZmxha3kgYW5kIHNvbWV0
aW1lcyBwYXNzaW5nLCBzbyBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgSW1hZ2VPbmx5
RmFpbHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOiBEaXR0
by4gQWxzbyBzb21lIHRlc3RzIG1hcmtlZCBGYWlsdXJlIHdlcmUgZmxha3kgYW5kCisgICAgICAg
IHNvbWV0aW1lcyBwYXNzaW5nLCBzbyBtYXJrZWQgdGhlbSBmb3IgZWl0aGVyIFBhc3Mgb3IgRmFp
bHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJl
Y3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICBUaGlzIGlzIGFscmVhZHkgYSBNYWMtc3BlY2lmaWMgdGVzdDsgaXQgZG9lc24ndCBtYWtlIHNl
bnNlIHRvIGhhdmUgYW4gYWRkaXRpb25hbAorICAgICAgICBNYWMtc3BlY2lmaWMgb3ZlcnJpZGRl
biByZXN1bHQgc2luY2UgdGhlIGJhc2UgcmVzdWx0IGlzIGFscmVhZHkgTWFjLXNwZWNpZmljLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1m
cm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sOgorICAgICAgICBV
cGRhdGVkIHRoaXMgdGVzdCB0byBleHBlY3QgdGhlIGVtcHR5IHN0cmluZywgbm90ICJ1bmRlZmlu
ZWQiIGZvciBhbiBvdXQgb2YgcmFuZ2UsCisgICAgICAgIHNpbmNlIHdlIG5vdyBjbGFtcCBpbnN0
ZWFkIG9mIGZhaWxpbmcgaW4gc3VjaCBjYXNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9t
LXJhbmdlLmh0bWw6CisgICAgICAgIERpdHRvLgorCiAyMDIwLTAzLTI4ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbjogZmFz
dC9oaWRwaS9pbWFnZS1zcmNzZXQtc3ZnLWNhbnZhcy0yeC5odG1sIGlzIGZhaWxpbmcgY29uc2lz
dGVudGx5IG9uIGlPUyBFV1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1vZi1ib3VuZHMtY3Jhc2gtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0
LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggMGY0MGVmZDgzY2JhODAwMmQxOGEx
NjA3YjljNTg3MmVmZTFkZTcyYy4uMjM0ZDMzOTY3M2EyMzY4YTNlODQyNjE3OGU3MTIxM2Y4NDFh
MGYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtl
ci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5k
cy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIHRleHQKIHRleHQKIHRleHQK
LVRoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFya2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVu
IGdpdmVuIGFuIGluZGV4IG91dCBvZiBib3VuZHMKK1RoaXMgdmVyaWZpZXMgdGhhdCB0ZXh0TWFy
a2VyRm9ySW5kZXggZm9yIG5vdCBjcmFzaCB3aGVuIGdpdmVuIGFuIGluZGV4IGdyZWF0ZXIgdGhh
biAyXjMxCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGl0ZW0xLmlzVGV4
dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCg5OTk5OTk5OTk5OSkpIGlzIGZh
bHNlCitQQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRl
eCg5OTk5OTk5OTk5OSkpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5kcy1jcmFzaC5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1mb3ItaW5kZXgtb3V0LW9mLWJvdW5k
cy1jcmFzaC5odG1sCmluZGV4IDBhYjJmMTc5NTk4ZGJhMDc1YzA2ZWQ3MjhhZjExMDY5NmQ1ZTcy
YTEuLjZhYzdmOWY2NzJjYjY4NTE1ZTA3YTNjNTAxMGVlNjgwMGEzMWJiZWYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItZm9yLWluZGV4LW91dC1v
Zi1ib3VuZHMtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90
ZXh0bWFya2VyLWZvci1pbmRleC1vdXQtb2YtYm91bmRzLWNyYXNoLmh0bWwKQEAgLTE0LDEyICsx
NCwxMiBAQCB0ZXh0CiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmll
cyB0aGF0IHRleHRNYXJrZXJGb3JJbmRleCBmb3Igbm90IGNyYXNoIHdoZW4gZ2l2ZW4gYW4gaW5k
ZXggb3V0IG9mIGJvdW5kcyIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHZlcmlmaWVzIHRoYXQg
dGV4dE1hcmtlckZvckluZGV4IGZvciBub3QgY3Jhc2ggd2hlbiBnaXZlbiBhbiBpbmRleCBncmVh
dGVyIHRoYW4gMl4zMSIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwog
ICAgICAgICB2YXIgaXRlbTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEu
dGV4dE1hcmtlckZvckluZGV4KDk5OTk5OTk5OTk5KSkiKTsgICAgICAgCisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiaXRlbTEuaXNUZXh0TWFya2VyVmFsaWQoaXRlbTEudGV4dE1hcmtlckZvckluZGV4
KDk5OTk5OTk5OTk5KSkiKTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9y
Y2hhcmFjdGVycmFuZ2UtcGxhaW4tZXhwZWN0ZWQudHh0CmluZGV4IDZhNDg1YWViMjgyNjU1ODdl
M2QzY2M2NDQ5NzQzYmRiNTZlMDM5YTIuLmJiMDJjN2JlMTIwZTgwNzBmMjA0NWRhMzY1ZDJkMDlk
MzQ2NmIzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi1leHBl
Y3RlZC50eHQKQEAgLTEsMjAgKzEsMTcgQEAKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDIgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0xOCw1NzIsMCwxOAot
NTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcyLDgsMTgKLTUwLDU3
Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgsMTgKLTEwLDU3Miw0
OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCwwCitj
YXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQorY2FyZXQgYWZ0ZXIg
dGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBl
bmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRoZSBlbmQgb2YgbGlu
ZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAoMCwxKSwgKDEwLDU3
Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgpCitsYXN0IGNoYXJh
Y3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAoNSwxMDApLCAoNTAs
NTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkKK2ZpcnN0IGxpbmU6
ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2NzI5NSksICgxMCw1
NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsNDI5
NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRo
ZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRo
ZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVy
cmFuZ2UtcGxhaW4uaHRtbAppbmRleCA3OTI1OGIxOWFlZjFjZjZiYWJmOWNhNWNlM2RkNWQ4ZDIy
NmQ2MGRlLi42MmNkYzliODI2Zjk2NWY4NTVkN2Q1Yzg3YWU3ZTU5MGQ0NDYyOWRhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1wbGFpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0
cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0bWwKQEAgLTEsMTAgKzEsNSBAQAogPGh0bWw+
CiA8aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgIHRlc3RSdW5u
ZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKLTwvc2NyaXB0PgotCiA8c3R5bGU+CiBib2R5IHsg
bWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiA8L3N0eWxlPgpAQCAtMTIsNyArNyw2IEBAIGJvZHkg
eyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0KIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KIDEyMzQ1
NgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCiAJdmFyIGNvbnNvbGVfbWVzc2Fn
ZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogCQogCWZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQpAQCAtMjEsNDAgKzE1LDQyIEBAIGJvZHkgeyBtYXJnaW46IDEwOyBwYWRkaW5nOiAwIH0K
IAkJaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CiAJ
CWNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CiAJfQotCQorCisgICAgZnVuY3Rp
b24gbG9nUmVjdChjb21tZW50LCBzdGFydCwgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgbG9nKGNv
bW1lbnQgKyAiOiAoIiArIHN0YXJ0ICsgIiwiICsgbGVuZ3RoICsgIiksICgiCisgICAgICAgICAg
ICArIHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uoc3RhcnQs
IGxlbmd0aCkgKyAiKSIpOworICAgIH0KKwogCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotCQkK
IAkJdHJ5IHsKLQkJCiAJCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQkJCi0JCQl3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CiAKLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8g
Y2FyZXQgYXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNo
YXJhY3RlciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElu
cHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSIt
Ci0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgw
LCAxKSk7IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAv
LyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDUsIDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1
dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJ
CWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQy
OTQ5NjcyOTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0
aGUgZmlyc3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJv
IHJlY3QKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKDEwMDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0K
KwkJCXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsK
IAorCQkJbG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVj
dCgiY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgi
Y2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0
aGUgZW5kIG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwg
MCwgMSk7CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgi
bGFzdCBjaGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwg
MTAwKTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0
IGxpbmUiLCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsK
KwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwg
NDI5NDk2NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQiLCA3LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVu
ZCIsIDEwMDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUg
ZW5kIiwgNywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBl
bmQiLCA3LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9u
OiAiICsgZXguZGVzY3JpcHRpb24pOwogCQl9Ci0JCQorCiAJCXZhciBjb25zb2xlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgicCIpOwogCQljb25zb2xlLmFwcGVuZENoaWxkKGNvbnNvbGVfbWVz
c2FnZXMpOwogCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotCQkKIAl9IGVs
c2UgewogCQlkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKIAl9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3Jj
aGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9t
YWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hhcmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dApp
bmRleCBhY2ZkNTJmMGI5NDhhNjUzZmMwNmYyOGM1M2ZkMjcyMTY0MGE4YWQ0Li5iYjAyYzdiZTEy
MGU4MDcwZjIwNDVkYTM2NWQyZDA5ZDM0NjZiM2JmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNo
YXJhY3RlcnJhbmdlLXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTEsMjQgKzEsMTcgQEAKLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQK
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2lu
RWRpdGluZ05vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4
dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IEkgPiBC
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3Rl
eHQgPiBJID4gQiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBJID4g
QiA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiAxMjM0NTYKLTEwLDU3MiwwLDE4Ci0x
OCw1NzIsMCwxOAotNTgsNTcyLDAsMTgKLTU4LDU3MiwwLDE4Ci0xMCw1NzIsOCwxOAotNTAsNTcy
LDgsMTgKLTUwLDU3Miw4LDE4Ci01MCw1NzIsOCwxOAotMTAsNTcyLDQ4LDE4Ci0xMCw1NzIsNDgs
MTgKLTEwLDU3Miw0OCwxOAotMTgsNTcyLDQwLDE4Ci0wLDAsMCwwCi0wLDAsMCwwCi0wLDAsMCww
Ci0wLDAsMCwwCitjYXJldCBhdCB0aGUgYmVnaW5uaW5nOiAoMCwwKSwgKDEwLDU3MiwwLDE4KQor
Y2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlcjogKDEsMCksICgxOCw1NzIsMCwxOCkKK2Nh
cmV0IGF0IHRoZSBlbmQgb2YgbGluZTogKDYsMCksICg1OCw1NzIsMCwxOCkKK2NhcmV0IGF0IHRo
ZSBlbmQgb2YgbGluZTogKDYsMTAwKSwgKDU4LDU3MiwwLDE4KQorZmlyc3QgY2hhcmFjdGVyOiAo
MCwxKSwgKDEwLDU3Miw4LDE4KQorbGFzdCBjaGFyYWN0ZXI6ICg1LDEpLCAoNTAsNTcyLDgsMTgp
CitsYXN0IGNoYXJhY3RlcjogKDUsMiksICg1MCw1NzIsOCwxOCkKK2xhc3QgY2hhcmFjdGVyOiAo
NSwxMDApLCAoNTAsNTcyLDgsMTgpCitmaXJzdCBsaW5lOiAoMCw2KSwgKDEwLDU3Miw0OCwxOCkK
K2ZpcnN0IGxpbmU6ICgwLDcpLCAoMTAsNTcyLDQ4LDE4KQorZmlyc3QgbGluZTogKDAsNDI5NDk2
NzI5NSksICgxMCw1NzIsNDgsMTgpCitmaXJzdCBsaW5lIHdpdGhvdXQgdGhlIGZpcnN0IGNoYXJh
Y3RlcjogKDEsNDI5NDk2NzI5NSksICgxOCw1NzIsNDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICg3LDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBjbGFt
cGVkIHRvIHRoZSBlbmQ6ICgxMDAwLDApLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBj
bGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDEpLCAoNTgsNTcyLDAsMTgpCitvdXQgb2YgYm91bmRzLCBj
bGFtcGVkIHRvIHRoZSBlbmQ6ICg3LDQyOTQ5NjcyOTUpLCAoNTgsNTcyLDAsMTgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJy
YW5nZS1zdHlsZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCmluZGV4IGZkY2ZjNmQ0YjM3NzliOWJkMzlk
ODc3MWNkMmZiMGRiYTYzMGYyMWUuLmU1YmYyODY2MGNjMzc4YjZhZWViYmMzNmQzYmU5ZjkyOTlk
ZWZhOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL2lucHV0L2ZpcnN0cmVj
dGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
bWFjL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXN0eWxlZC5odG1sCkBAIC0xLDEw
ICsxLDUgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08L3NjcmlwdD4KLQog
PHN0eWxlPgogYm9keSB7IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogPC9zdHlsZT4KQEAgLTIx
LDMzICsxNiwzNiBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAJCWl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogCQljb25zb2xlX21l
c3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogCX0KLQkKKworICAgIGZ1bmN0aW9uIGxvZ1JlY3Qo
Y29tbWVudCwgc3RhcnQsIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGxvZyhjb21tZW50ICsgIjog
KCIgKyBzdGFydCArICIsIiArIGxlbmd0aCArICIpLCAoIgorICAgICAgICAgICAgKyB0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHN0YXJ0LCBsZW5ndGgpICsg
IikiKTsKKyAgICB9CisKIAlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLQkJCiAJCXRyeSB7Ci0J
CQogCQkJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0JCQorCiAJCQl3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgNCk7CiAgICAgICAgICAgICB0ZXh0SW5w
dXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoIjU2IiwgMCwgMSk7CiAKLQkJCWxvZyh0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDApKTsgLy8gY2FyZXQg
YXQgdGhlIGJlZ2lubmluZyAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKDEsIDApKTsgLy8gY2FyZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3Rl
ciAKLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KDYsIDApKTsgLy8gY2FyZXQgYXQgdGhlIGVuZCBvZiBsaW5lCi0JCQlsb2codGV4dElucHV0Q29u
dHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSg2LCAxMDApKTsgLy8gLSItCi0JCQls
b2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSgwLCAxKSk7
IC8vIGZpcnN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMSkpOyAvLyBsYXN0IGNoYXJhY3RlcgotCQkJbG9nKHRleHRJ
bnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNSwgMikpOyAvLyAtIi0K
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDUs
IDEwMCkpOyAvLyAtIi0KLQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlKDAsIDYpKTsgLy8gZmlyc3QgbGluZQotCQkJbG9nKHRleHRJbnB1dENvbnRy
b2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMCwgNykpOyAvLyAtIi0KLQkJCWxvZyh0
ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIDQyOTQ5Njcy
OTUpKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSgxLCA0Mjk0OTY3Mjk1KSk7IC8vIGZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmly
c3QgY2hhcmFjdGVyCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSg3LCAwKSk7IC8vIG91dCBvZiBib3VuZHMsIHNob3VsZCBiZSB6ZXJvIHJlY3QK
LQkJCWxvZyh0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEw
MDAsIDApKTsgLy8gLSItCi0JCQlsb2codGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSg3LCAxKSk7IC8vIC0iLQotCQkJbG9nKHRleHRJbnB1dENvbnRyb2xsZXIu
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoNywgNDI5NDk2NzI5NSkpOyAvLyAtIi0KLQorCQkJ
bG9nUmVjdCgiY2FyZXQgYXQgdGhlIGJlZ2lubmluZyIsIDAsIDApOworCQkJbG9nUmVjdCgiY2Fy
ZXQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciIsIDEsIDApOworCQkJbG9nUmVjdCgiY2FyZXQg
YXQgdGhlIGVuZCBvZiBsaW5lIiwgNiwgMCk7CisJCQlsb2dSZWN0KCJjYXJldCBhdCB0aGUgZW5k
IG9mIGxpbmUiLCA2LCAxMDApOworCQkJbG9nUmVjdCgiZmlyc3QgY2hhcmFjdGVyIiwgMCwgMSk7
CisJCQlsb2dSZWN0KCJsYXN0IGNoYXJhY3RlciIsIDUsIDEpOworCQkJbG9nUmVjdCgibGFzdCBj
aGFyYWN0ZXIiLCA1LCAyKTsKKwkJCWxvZ1JlY3QoImxhc3QgY2hhcmFjdGVyIiwgNSwgMTAwKTsK
KwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA2KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUi
LCAwLCA3KTsKKwkJCWxvZ1JlY3QoImZpcnN0IGxpbmUiLCAwLCA0Mjk0OTY3Mjk1KTsKKwkJCWxv
Z1JlY3QoImZpcnN0IGxpbmUgd2l0aG91dCB0aGUgZmlyc3QgY2hhcmFjdGVyIiwgMSwgNDI5NDk2
NzI5NSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3
LCAwKTsKKwkJCWxvZ1JlY3QoIm91dCBvZiBib3VuZHMsIGNsYW1wZWQgdG8gdGhlIGVuZCIsIDEw
MDAsIDApOworCQkJbG9nUmVjdCgib3V0IG9mIGJvdW5kcywgY2xhbXBlZCB0byB0aGUgZW5kIiwg
NywgMSk7CisJCQlsb2dSZWN0KCJvdXQgb2YgYm91bmRzLCBjbGFtcGVkIHRvIHRoZSBlbmQiLCA3
LCA0Mjk0OTY3Mjk1KTsKIAkJfSBjYXRjaCAoZXgpIHsKIAkJCWxvZygiRXhjZXB0aW9uOiAiICsg
ZXguZGVzY3JpcHRpb24pOwogCQl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggOWIzZDcwNzI0MjdkY2VkMDVlMzY2OGI4Njc4OTI3YmQyYTUw
MTNlMC4uODFmZjFkYTMwNzFlYjgxNDAyMTk4MjAxNzdjZTZkYzY0MjdhNmIyZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIsOSArOTIs
NiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNl
cy9XZWJTb2NrZXQvcmVhZHlTdGF0ZS8wMDYuaAogIyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzIG5v
dCB5ZXQgc3VwcG9ydGVkIGluIFdLMQogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5IFsgU2tpcCBd
CiAKLVsgU2llcnJhIF0gYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUtcGF5LWxhYmVscy5odG1sIFsg
U2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5L21hYy9hcHBsZS1wYXktc2Vzc2lv
bi12NC5odG1sIFsgU2tpcCBdCi0KICMgPGEgZG93bmxvYWQ+IGlzIG5vdCBzdXBwb3J0ZWQgaW4g
V0sxIHlldC4KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTYw
NjkgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwgWyBGYWls
dXJlIF0KQEAgLTIzOCwyNiArMjM1LDExIEBAIHdlYmtpdC5vcmcvYi8xNTUwNjcgc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtcHJpdmF0ZS5odG1sIFsgUGFzcyBDcmFzCiAKIHdl
YmtpdC5vcmcvYi8xNzIwOTIgWyBEZWJ1ZyBdIGZhc3QvcGFyc2VyL2Fkb3B0aW9uLWFnZW5jeS11
bmxvYWQtaWZyYW1lLTQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzgy
NzIgWyBTaWVycmEgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0Lmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWh0dHAtdXJs
LWFsbG93ZWQtYnktY3NwLW1lZGlhLXNyYy1zdGFyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlk
ZW8tc291cmNlLWZyb20tcmVtb3RlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE3ODI3MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2lu
LWFjY2Vzc3NhbWVvcmlnaW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTc4
MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZv
cm1hbmNlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJy
YSBdIGh0dHAvdGVzdHMvbWVkaWEvYXV0b3BsYXktaWYtYXVkaW8taXMtcGxheWluZy5odG1sIFsg
UGFzcyBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xNzgyNzIgWyBTaWVycmEgXSBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWxvYWQtdHdpY2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3Jn
L2IvMTc4MjcyIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNz
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBdIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhv
c3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc4MjcyIFsgU2llcnJhIF0g
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGly
ZWN0Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3ODI3MiBbIFNpZXJyYSBd
IGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmcuaHRtbCBbIFBh
c3MgVGltZW91dCBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFs
LWVudGl0eS54bWwgWyBTa2lwIF0KIAotIyByZGFyOi8vcHJvYmxlbS8yMDAwMTk4NQotWyBTaWVy
cmEgXSBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbCBbIEZhaWx1cmUg
XQotCiAjIHJkYXI6Ly9wcm9ibGVtLzM0NzE2MTYzIEJyZWFrcyBzdWJzZXF1ZW50IHRlc3RzIHVz
aW5nIHJlc3BvbnNlLnhtbAotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmFuZ2UtdGVzdC5odG1sIFsgU2tpcCBdCisjIEZJWE1FOiBTaG91bGQgYmUgZml4ZWQgaW4g
Q2F0YWxpbmE7IG5lZWQgdG8gcmUtZW5hYmxlLgoraHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
YW5nZS10ZXN0Lmh0bWwgWyBTa2lwIF0KIAogIyBXSzEgZG9lcyBub3Qgc3VwcG9ydCBzeW5jIFhI
UiByZWRpcmVjdGlvbnMgYXMgZG9lcyBXSzIKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1z
eW5jLXhoci1pbi1tYWluLWZyYW1lLmh0bWwgWyBTa2lwIF0KQEAgLTQxMyw3ICszOTUsNyBAQCBo
dHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQtYXN5bmMtaW1hZ2UuaHRtbAogCiBmYXN0L3J1
YnkvcnVieS1leHBhbnNpb24tY2prLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi1bIFNp
ZXJyYSsgXSBjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCitjc3MzL21hc2tpbmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTIxNzggZmFzdC9yZXBs
YWNlZC9yZXBsYWNlZC1icmVha2luZy5odG1sIFsgRmFpbHVyZSBdCiAKQEAgLTUyMCwxOSArNTAy
LDE5IEBAIGZhc3QvcmVwYWludC92ZXJ0aWNhbC10ZXh0LXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTU4NTg1IHdlYmdsL3dlYmdsLWJhY2tpbmctc3RvcmUtc2l6
ZS11cGRhdGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI0ODE4
NzEyPgotWyBTaWVycmErIF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1pbnNlcnQtaHRtbC5o
dG1sIFsgUGFzcyBUaW1lb3V0IF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaW5zZXJ0LWh0
bWwuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI2Mzk5NTk4Pgot
WyBTaWVycmErIF0gZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwgWyBGYWls
dXJlIF0KLVsgU2llcnJhKyBdIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVs
YXRpb24uaHRtbCBbIEZhaWx1cmUgXQorZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5j
Lmh0bWwgWyBGYWlsdXJlIF0KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVs
YXRpb24uaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8yNjA1MDkyMz4gVGhl
IHJlc3VsdCBpcyBwcm9iYWJseSBzdGlsbCBhIHBhc3MsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5
CiAjIHRvIGhhdmUgcGxhdGZvcm0gc3BlY2lmaWMgcmVzdWx0cyB0aGF0IGFyZSBkaWZmZXJlbnQg
YmV0d2VlbiBXSzEgYW5kIFdLMi4KLVsgU2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL2RvY3Vt
ZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQotWyBTaWVycmErIF0gYWNjZXNzaWJpbGl0
eS9wYXJlbnQtZGVsZXRlLmh0bWwgWyBGYWlsdXJlIF0KK2FjY2Vzc2liaWxpdHkvbWFjL2RvY3Vt
ZW50LWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1cmUgXQorYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVs
ZXRlLmh0bWwgWyBGYWlsdXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNjQ3ODI5NgotWyBTaWVy
cmErIF0gc3ZnL2hpeGllL3RleHQvMDAzLmh0bWwgWyBGYWlsdXJlIF0KK3N2Zy9oaXhpZS90ZXh0
LzAwMy5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTk4OTMgWyBEZWJ1ZyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2V2ZW50LXJlYWR5c3RhdGVjaGFuZ2Ut
bG9hZGVkLmFueS5qcyBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTU0MSwxMyArNTIzLDEzIEBAIHdl
YmtpdC5vcmcvYi8xNjAxMDEgdXNlcnNjcmlwdHMvd2luZG93LW9uZXJyb3ItZm9yLWlzb2xhdGVk
LXdvcmxkLTMuaHRtbCBbIFBhc3MKIHdlYmtpdC5vcmcvYi8xMDU4NzAgWyBEZWJ1ZyBdIHdlYmF1
ZGlvL2F1ZGlvbm9kZS1jb25uZWN0LW9yZGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogIyByZGFy
Oi8vcHJvYmxlbS8yNzcyMzcxOAotWyBTaWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRp
bmcvY2hpbGQtdHJhbnNmb3JtLXdpdGgtYW5jaG9yLXBvaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK2ltcG9ydGVkL2JsaW5rL2NvbXBvc2l0aW5nL2NoaWxkLXRyYW5zZm9ybS13aXRoLWFu
Y2hvci1wb2ludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjEw
NTYgZ2FtZXBhZCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTYyNTkyIFsgU2llcnJhKyBdIGNz
czMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1yZWZsZWN0aW9uLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2MjU5MSBbIFNpZXJyYSsg
XSBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtcmVmbGVjdGlvbi1h
ZGQtYmFja2Ryb3AuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MTYyNTkxIFsgU2llcnJhKyBdIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXIt
d2l0aC1yZWZsZWN0aW9uLXZhbHVlLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8xNjI1OTIgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZp
bHRlci13aXRoLXJlZmxlY3Rpb24uaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTYyNTkxIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0
aC1yZWZsZWN0aW9uLWFkZC1iYWNrZHJvcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xNjI1OTEgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRl
ci13aXRoLXJlZmxlY3Rpb24tdmFsdWUtY2hhbmdlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQogCiB3ZWJraXQub3JnL2IvMTYxMzYwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL2hpc3RvcnktdHJhdmVyc2FsL3BlcnNp
c3RlZC11c2VyLXN0YXRlLXJlc3RvcmF0aW9uL3Njcm9sbC1yZXN0b3JhdGlvbi1mcmFnbWVudC1z
Y3JvbGxpbmctY3Jvc3Mtb3JpZ2luLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC01NzYsNyAr
NTU4LDcgQEAgd2Via2l0Lm9yZy9iLzE2NDkzMyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNv
bi1iZWZvcmVsb2FkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtb3ZlcmxhcC1leHRlbnQtcnRsLmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1vdmVy
Zmxvdy5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNTQ2MTIgWyBTaWVycmErIF0g
Y29tcG9zaXRpbmcvcmVwYWludC9maXhlZC1iYWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTQ2MTIgY29tcG9zaXRpbmcvcmVwYWludC9maXhlZC1i
YWNrZ3JvdW5kLXNjcm9sbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2
NTU4OSBwb2ludGVyLWxvY2svbG9jay1sb3N0LW9uLWVzYy1pbi1mdWxsc2NyZWVuLmh0bWwgWyBT
a2lwIF0KIApAQCAtNjM0LDggKzYxNiw2IEBAIGh0dHAvdGVzdHMvcHJlY29ubmVjdCBbIFNraXAg
XQogCiB3ZWJraXQub3JnL2IvMTc1MzQ1IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1zY3JvbGxp
bmctY3Jhc2guaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8xNzU1NTQgWyBT
aWVycmEgXSBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS1sZWdhY3kuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzQyMTggc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFr
LWxpc3QtcHJvcGVydHktaW5zdGFuY2VzLnN2ZyBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8xNzI4Nzcgc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWJhY2tncm91
bmQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC02NDksMjMgKzYyOSwyMyBAQCB3
ZWJraXQub3JnL2IvMTc2OTIwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9waXBpbmcvZXJyb3ItcHJvcGFnYQogd2Via2l0Lm9yZy9iLzE3NTg4NiBzdmcvYW5pbWF0aW9u
cy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8
cmRhcjovL3Byb2JsZW0vMjkyMDE2OTg+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFw
cGxlLkNvcmVHcmFwaGljczogQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YSArIDM3NwotWyBIaWdoU2ll
cnJhKyBdIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgt
cG90ZW50aWFsbHktc3Vic2FtcGxlZC1pbWFnZS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9jYW52YXMv
d2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxseS1zdWJzYW1w
bGVkLWltYWdlLmh0bWwgWyBDcmFzaCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5MDMxNTA5PiBS
RUdSRVNTSU9OPyAoRm9udFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0q
IGFuZCBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcKLVsgSGlnaFNp
ZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wNC1iLnN2ZyBbIEZhaWx1cmUgXQor
c3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDQtYi5zdmcgWyBGYWlsdXJlIF0KIAogIyA8cmRh
cjovL3Byb2JsZW0vMzE4OTM3MTQ+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90ZXh0L211
bHRpcGxlLWNvZGV1bml0LXZlcnRpY2FsLXVwcmlnaHQuaHRtbCBpcyBmYWlsaW5nIG9uIFdLMQot
WyBIaWdoU2llcnJhKyBdIGZhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5pdC12ZXJ0aWNhbC11cHJp
Z2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3QvdGV4dC9tdWx0aXBsZS1jb2RldW5p
dC12ZXJ0aWNhbC11cHJpZ2h0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8cmRhcjov
L3Byb2JsZW0vMzE4OTUxOTI+IER1bXBSZW5kZXJUcmVlIGNyYXNoZWQgaW4gY29tLmFwcGxlLklt
YWdlSU8uZnJhbWV3b3JrOiBJSU9EaWN0aW9uYXJ5OjpnZXRCb29sRm9yS2V5ICsgMAotWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvbWlzYy9zbG93LWxvYWRpbmctYW5pbWF0ZWQtaW1hZ2UuaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5o
dG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMzNTIyNDIwPiBDcmFzaDogTXVsdGlw
bGUgTGF5b3V0IHRlc3QgaW4gZmFzdC9ldmVudHMgYW5kIGZhc3QvZm9ybXMgYW5kIGZhc3QvdGV4
dCBhcmUgY3Jhc2hpbmcKLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50
LWNvZGUuaHRtbCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0L2V2ZW50cy9rZXlib2Fy
ZGV2ZW50LWtleS5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvZXZlbnRzL2tl
eWRvd24tbGVmdHJpZ2h0LWtleXMuaHRtbCBbIENyYXNoIF0KLVsgSGlnaFNpZXJyYSsgXSBmYXN0
L2Zvcm1zL3RleHRhcmVhLW1heGxlbmd0aC5odG1sIFsgQ3Jhc2ggXQotWyBIaWdoU2llcnJhKyBd
IGZhc3QvdGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1sIFsgQ3Jhc2ggXQorZmFz
dC9ldmVudHMva2V5Ym9hcmRldmVudC1jb2RlLmh0bWwgWyBDcmFzaCBdCitmYXN0L2V2ZW50cy9r
ZXlib2FyZGV2ZW50LWtleS5odG1sIFsgQ3Jhc2ggXQorZmFzdC9ldmVudHMva2V5ZG93bi1sZWZ0
cmlnaHQta2V5cy5odG1sIFsgQ3Jhc2ggXQorZmFzdC9mb3Jtcy90ZXh0YXJlYS1tYXhsZW5ndGgu
aHRtbCBbIENyYXNoIF0KK2Zhc3QvdGV4dC9zeXN0ZW0tZm9udC1mYWxsYmFjay1lbW9qaS5odG1s
IFsgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMTc5Nzc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL2ZpcmluZy1ldmVudHMtaHR0cC1uby1jb250ZW50LWxlbmd0aC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIApAQCAtNzMxLDMyICs3MTEsMzIgQEAgd2Via2l0Lm9yZy9iLzE4NzU1
NyBbIERlYnVnIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDA5MS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xODc3MTEgWyBEZWJ1ZyBdIHN2Zy9jdXN0b20vbGlua2luZy11
cmktMDEtYi5zdmcgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80MjYyNTY1
Nz4KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmlt
YXRpb24uaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2Ut
YmFja2dyb3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0
L2ltYWdlcy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9q
YXZlKyBdIGZhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5o
dG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVk
LWdpZi1vdXRzaWRlLXZpZXdwb3J0Lmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1h
Z2VzL2RlY29kZS1yZW5kZXItYW5pbWF0ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUr
IF0gZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMtaW1hZ2UuaHRtbCBbIFNraXAgXQot
WyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5jLXNtYWxsLWlt
YWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBdIGZhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJp
YnV0ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KLVsgTW9qYXZlKyBd
IGZhc3QvaW1hZ2VzL3Nwcml0ZS1zaGVldC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
aW1hZ2VzL2FuaW1hdGVkLWdpZi1wYWludC1hZnRlci1hbmltYXRpb24uaHRtbCBbIFNraXAgXQor
ZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3VuZC1pbWFnZS1yZXBlYXRlZC5odG1sIFsg
U2tpcCBdCitmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBT
a2lwIF0KK2Zhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5o
dG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9jb21wb3NpdGVkLWFuaW1hdGVkLWdpZi1vdXRzaWRl
LXZpZXdwb3J0Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kZS1yZW5kZXItYW5pbWF0
ZWQtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RlLXJlbmRlci1zdGF0aWMt
aW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvZGVjb2RpbmctYXR0cmlidXRlLWFzeW5j
LXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL2RlY29kaW5nLWF0dHJpYnV0
ZS1keW5hbWljLWFzeW5jLXNtYWxsLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2VzL3Nw
cml0ZS1zaGVldC1pbWFnZS1kcmF3Lmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
NDI2Mjc1NjI+Ci1bIE1vamF2ZSsgXSBtZWRpYS92aWRlby1yZXN0cmljdGVkLWludmlzaWJsZS1h
dXRvcGxheS1ub3QtYWxsb3dlZC1zb3VyY2UuaHRtbCBbIFNraXAgXQotWyBNb2phdmUrIF0gbWVk
aWEvdmlkZW8tcmVzdHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFsbG93ZWQuaHRtbCBb
IFNraXAgXQorbWVkaWEvdmlkZW8tcmVzdHJpY3RlZC1pbnZpc2libGUtYXV0b3BsYXktbm90LWFs
bG93ZWQtc291cmNlLmh0bWwgWyBTa2lwIF0KK21lZGlhL3ZpZGVvLXJlc3RyaWN0ZWQtaW52aXNp
YmxlLWF1dG9wbGF5LW5vdC1hbGxvd2VkLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2Js
ZW0vNDI3MzYyMTM+Ci1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlz
dC5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1
ZGVzLXNoYWRvdy5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBkaXNwbGF5bGlzdHMvZXh0
ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMuaHRtbCBbIEZhaWx1cmUgXQotWyBNb2phdmUrIF0gZGlz
cGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0Lmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBd
IGRpc3BsYXlsaXN0cy9yZXBsYXktc2tpcC1jbGlwcGVkLXJlY3QuaHRtbCBbIEZhaWx1cmUgXQor
ZGlzcGxheWxpc3RzL2NhbnZhcy1kaXNwbGF5LWxpc3QuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxh
eWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3cuaHRtbCBbIEZhaWx1cmUgXQorZGlzcGxheWxp
c3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLmh0bWwgWyBGYWlsdXJlIF0KK2Rpc3BsYXls
aXN0cy9sYXllci1kaXNwYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCitkaXNwbGF5bGlzdHMvcmVw
bGF5LXNraXAtY2xpcHBlZC1yZWN0Lmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4
NDYxMSBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1vdmVybGFwLWV4dGVudC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDI5MDQ3ODA+Ci1bIE1vamF2
ZSsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJ
L2Rlcml2ZV9iaXRzX2tleXMvaGtkZi5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQorWyBS
ZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVy
aXZlX2JpdHNfa2V5cy9oa2RmLmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xODkwODcgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1lbmQtYXR0cmlidXRlLW51bWVy
aWMtcHJlY2lzaW9uLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC03NzIsNyArNzUyLDcgQEAg
d2Via2l0Lm9yZy9iLzE5MTM1NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3NvbS12aWV3L3Njcm9sbC1iZWhhdmkKIAogd2Via2l0Lm9yZy9iLzE4OTkwOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291cmNlLXRpbWluZy9yZXNvdXJjZV90aW1pbmcud29y
a2VyLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE4OTc1NiBbIE1vamF2ZSsgXSBj
b21wb3NpdGluZy9maWx0ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50cy1pbnRv
LWFuY2VzdG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4
OTc1NiBjb21wb3NpdGluZy9maWx0ZXJzL29wYWNpdHktY2hhbmdlLW9uLWZpbHRlcmVkLXBhaW50
cy1pbnRvLWFuY2VzdG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTg5NzIzIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXhzbC1yZWRpcmVj
dC1CTE9DS0VELmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC03ODIsNyArNzYyLDcgQEAgd2Vi
a2l0Lm9yZy9iLzE5MDgzMiBbIERlYnVnIF0gZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5v
bi1lZGl0ZWQtY29udHJvbHMuaHQKIAogd2Via2l0Lm9yZy9iLzE5MDg0OSBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLW11bHRpcGxlLWhlYWRlcnMtc2Ft
ZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTg2NDA2
IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFtZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE4NjQwNiBjb21wb3NpdGluZy9pZnJh
bWVzL2Rpc3BsYXktbm9uZS1zdWJmcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtbG9vcC1jb3VudC5odG1sIFsg
UGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTAzODMgZmFzdC9pbWFnZXMv
YW5pbWF0ZWQtcG5nLWxvb3AtY291bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCkBA
IC03OTAsNyArNzcwLDcgQEAgd2Via2l0Lm9yZy9iLzE5MDM4MyBmYXN0L2ltYWdlcy9hbmltYXRl
ZC1pbWFnZS1kaWZmZXJlbnQtZGVzdC1zaXplLmh0bWwgWyBQYXNzIEkKIAogd2Via2l0Lm9yZy9i
LzE5MTYzOSBpbXBvcnRlZC9ibGluay9jb21wb3NpdGluZy9zcXVhc2hpbmcvc3F1YXNoaW5nLWlu
dG8tYW5jZXN0b3ItcGFpbnRlZC1sYXllci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzE5MDYyNyBbIE1vamF2ZSsgXSBjb21wb3NpdGluZy9tYXNrcy9jb21w
b3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzE5MDYyNyBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlw
LXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCAgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTcyMzg0IGZhc3QvaGlkcGkvaGlkcGktbG9uZy1wYWdlLXdpdGgtaW5zZXQtZWxlbWVu
dC5odG1sIFsgU2tpcCBdCiAKQEAgLTgyNiwxMCArODA2LDEwIEBAIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQvcmFu
Z2Utc2V0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS9k
aXNwbGF5LW5vbmUtaW5saW5lLWltZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJk
YXI6Ly9wcm9ibGVtLzQyNjI1NjU3PiBSRUdSRVNTSU9OIChNb2phdmUpOiAxMiBmYXN0L2ltYWdl
cyB0ZXN0cyB0aW1pbmcgb3V0IG9uIFdLMQotWyBNb2phdmUrIF0gZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtaGVpY3MtZHJhdy5odG1sIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBmYXN0L2ltYWdlcy9hbmlt
YXRlZC1oZWljcy12ZXJpZnkuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVp
Y3MtZHJhdy5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy12ZXJpZnku
aHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjAwMDAyIFsgTW9qYXZlKyBEZWJ1ZyBdIGlt
cG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwg
WyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMDAwMDIgWyBEZWJ1ZyBdIGltcG9ydGVkL2JsaW5r
L3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItYmFzaWNzLW1ldGFkYXRhLmh0bWwgWyBUaW1lb3V0IF0K
IAogIyBTa2lwIElzTG9nZ2VkSW4KIGh0dHAvdGVzdHMvaXMtbG9nZ2VkLWluLyBbIFNraXAgXQpA
QCAtODQ5LDcgKzgyOSw3IEBAIHdlYmtpdC5vcmcvYi8yMDM1MTcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNpemluZy9keW5hbWljLWF2YWlsCiAjIFN0YWxlLXdoaWxl
LXJldmFsaWRhdGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSBbIFNraXAgXQogCi13ZWJr
aXQub3JnL2IvMjA1MzE0IFsgQ2F0YWxpbmEgXSBlZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rm
b3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZhaWx1cmUgXQorWyBNb2phdmUgXSBlZGl0
aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQuaHRtbCBbIEZh
aWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA1NDEyIFsgTW9qYXZlIERlYnVnIF0gd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBd
CiAKQEAgLTk2Myw0ICs5NDMsNCBAQCB3ZWJraXQub3JnL2IvMjA5NDk0IGZhc3QvZXZlbnRzL21v
dXNlLWN1cnNvci1uby1tb3VzZW1vdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMDk1NjAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2VuZC1yZXNw
b25zZS11cGxvYWQtZXZlbnQtcHJvZ3Jlc3MuaHRtIFsgUGFzcyBDcmFzaCBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzIwOTYyMSBmYXN0L2xvYWRlci9jaGlsZC1mcmFtZS1hZGQtYWZ0ZXItYmFj
ay1mb3J3YXJkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKK3dlYmtpdC5vcmcvYi8yMDk2MjEgZmFzdC9sb2FkZXIvY2hpbGQtZnJhbWUtYWRkLWFmdGVy
LWJhY2stZm9yd2FyZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhY2IxZWY2YzMzZjFkY2Y0OTZiNmRh
N2FmZTc1YWVkZDcxMWFhZTlkLi45ODRhNGQwYzI1NTk1ZjljYjg2ZDA3ZmU4ZjRmYjY4ZGQ0ZDM0
MThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMywyNiArMzMsMTQgQEAgZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11
cGRhdGUtaW4tc3ViZnJhbWVzLmh0bWwgWyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9t
ZS1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNl
ZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3MgXQogCi1bIFNpZXJyYSsgXSBodHRwL3Rl
c3RzL3NzbC9hcHBsZXBheS8gWyBQYXNzIF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBw
bGVwYXkvQXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGh0dHAvdGVz
dHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBo
dHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WMy5odG1sIFsgU2tpcCBdCi1b
IFNpZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwg
WyBTa2lwIF0KLVsgU2llcnJhIF0gaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNz
aW9uVjUuaHRtbCBbIFNraXAgXQotWyBTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9B
cHBsZVBheVJlcXVlc3RTaGlwcGluZ0NvbnRhY3RWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNp
ZXJyYSBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdBZGRyZXNzQ2hh
bmdlRXZlbnRFcnJvcnNWMy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIGFjY2Vzc2li
aWxpdHkvbWFjL2FwcGxlLXBheS1sYWJlbHMuaHRtbCBbIFNraXAgXQotWyBIaWdoU2llcnJhIF0g
aHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlCdXR0b25WNC5odG1sIFsgU2tpcCBdCi1b
IEhpZ2hTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25WNC5o
dG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb25WNS5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBhY2Nlc3NpYmlsaXR5
L21hYy9hcHBsZS1wYXktc2Vzc2lvbi12NC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3NzbC9h
cHBsZXBheS8gWyBQYXNzIF0KIAogZmFzdC92aXN1YWwtdmlld3BvcnQvcnViYmVyYmFuZGluZy12
aWV3cG9ydC1yZWN0cy5odG1sIFsgUGFzcyBdCiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydWJiZXJi
YW5kaW5nLXZpZXdwb3J0LXJlY3RzLWhlYWRlci1mb290ZXIuaHRtbCAgWyBQYXNzIF0KIAotWyBT
aWVycmErIF0gaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdCBbIFBhc3MgXQotWyBTaWVycmErIF0g
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVudHJlcXVlc3QgWyBQYXNzIF0KLVsgU2llcnJhKyBd
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0IFsgUGFzcyBd
CitodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0IFsgUGFzcyBdCitodHRwL3Rlc3RzL2luc3BlY3Rv
ci9wYXltZW50cmVxdWVzdCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9wYXltZW50LXJlcXVlc3QgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVz
dC9hbGxvd3BheW1lbnRyZXF1ZXN0LWF0dHJpYnV0ZS1jcm9zcy1vcmlnaW4tYmMtY29udGFpbmVy
cy5odHRwcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvbm8t
YXR0cmlidXRlLWNyb3NzLW9yaWdpbi1iYy1jb250YWluZXJzLmh0dHBzLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXlt
ZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9yZW1vdmluZy1hbGxvd3BheW1lbnRyZXF1
ZXN0Lmh0dHBzLnN1Yi5odG1sIFsgU2tpcCBdCkBAIC03MCw3ICs1OCw3IEBAIGFwcGxpY2F0aW9u
bWFuaWZlc3QvIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODcxODMgaHR0cC90ZXN0cy9zZWN1
cml0eS9wYXN0ZWJvYXJkLWZpbGUtdXJsLmh0bWwgWyBQYXNzIF0KIAotWyBNb2phdmUrIF0gZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC11cGRhdGUtb24tZGlzcGxheS1jb25maWd1cmF0aW9uLmh0
bWwgWyBQYXNzIF0KK2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXkt
Y29uZmlndXJhdGlvbi5odG1sIFsgUGFzcyBdCiAKIGZhc3QvbWlzYy92YWxpZC1wcmltYXJ5LXNj
cmVlbi1kaXNwbGF5SUQuaHRtbCBbIFBhc3MgXQogCkBAIC03OSwxMSArNjcsMTEgQEAgaHR0cC90
ZXN0cy93ZWJBUElTdGF0aXN0aWNzIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xODQ1Njkgc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiAKLVsgTW9qYXZlKyBdIGZhc3QvZXZlbnRzL2RldGVjdC1jYXBz
LWxvY2suaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0
dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1
dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBd
IGZhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1u
b3QtYmUtdmlzaWJsZS13aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZp
c2libGUuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9mb3Jtcy9wYXNzd29yZC1zY3Jv
bGxlZC1hZnRlci1jYXBzLWxvY2stdG9nZ2xlZC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2Iv
MTk0MTcwIFsgTW9qYXZlKyBSZWxlYXNlIF0gZmFzdC9yZXBhaW50L3BsYWNlaG9sZGVyLWFmdGVy
LWNhcHMtbG9jay1oaWRkZW4uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9kZXRl
Y3QtY2Fwcy1sb2NrLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9j
YXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1iZS12aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZp
bGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRvbi5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2F1dG8t
ZmlsbC1idXR0b24vY2Fwcy1sb2NrLWluZGljYXRvci1zaG91bGQtbm90LWJlLXZpc2libGUtd2hl
bi1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRvbi1pcy12aXNpYmxlLmh0bWwgWyBQYXNz
IF0KK2Zhc3QvZm9ybXMvcGFzc3dvcmQtc2Nyb2xsZWQtYWZ0ZXItY2Fwcy1sb2NrLXRvZ2dsZWQu
aHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE5NDE3MCBbIFJlbGVhc2UgXSBmYXN0L3JlcGFp
bnQvcGxhY2Vob2xkZXItYWZ0ZXItY2Fwcy1sb2NrLWhpZGRlbi5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogZmFzdC9ldmVudHMvaW5hY3RpdmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQ
YXNzIF0KIApAQCAtMjIzLDkgKzIxMSw5IEBAIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9t
YWMvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0CiB3ZWJr
aXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGluZS1h
ZnRlci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbCBbIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQt
Y2FuZGlkYXRlLWFsbG93cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVu
LWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlci1pbmNsdWRlcy1oeXBo
ZW4uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLW1hcmtlcnMtaW4tb3ZlcmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctbWFya2VyLWluY2x1ZGVzLWh5cGhlbi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tYXJrZXJz
LWluLW92ZXJsYXBwaW5nLWxpbmVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW1hcmtlcnMtaW4tb3Zl
cmxhcHBpbmctbGluZXMtbGFyZ2UtZm9udC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1idC10ZXh0LXdp
dGgtc3BlbGxpbmctbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xMDU2MTYgZmFzdC93cml0aW5nLW1vZGUvZW5nbGlzaC1ybC10ZXh0LXdpdGgtc3BlbGxpbmct
bWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIApAQCAtNDkyLDEzICs0ODAsMTIgQEAg
d2Via2l0Lm9yZy9iLzE0MTA4NSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0K
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY29udGVudGV4dGVuc2lvbnMgWyBQYXNzIF0K
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMgWyBQYXNz
IF0KLVsgU2llcnJhKyBdIGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucyBbIFBhc3Mg
XQoraHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zIFsgUGFzcyBdCiAKICMgVGhlIGZv
bGxvd2luZyB0ZXN0cyBhcmUgZmxha3kuCiB3ZWJraXQub3JnL2IvMTc5NTU3IGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVuc2lvbnMvdXBncmFkZS13b3JrZXIuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTY4MDgxIGh0dHAvdGVzdHMvY29udGVu
dGV4dGVuc2lvbnMvYXN5bmMteGhyLW9uZXJyb3IuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJr
aXQub3JnL2IvMTQ2NDAwIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY2hhcmFjdGVyLXNl
dC1iYXNpYy1zdXBwb3J0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE2ODA4
MiBbIFNpZXJyYSBdIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvaW52YWxpZC1zZWxlY3Rv
ci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBXZWJLaXQxLW9ubHkgZmFpbHVy
ZS4KIHdlYmtpdC5vcmcvYi8xMDM4NTcgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLWNoYW5nZS5o
dG1sIFsgUGFzcyBdCkBAIC01MTAsNTYgKzQ5Nyw1NiBAQCBpbXBvcnRlZC9ibGluay9odHRwL3Rl
c3RzL3BsdWdpbnMvZ2V0LXVybC1ub3RpZnktb24tcmVtb3ZhbC5odG1sIFsgUGFzcyBUaW1lb3V0
CiBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL25ld211bHRpY29sL211bHRpY29sLWJlY29t
ZXMtcmVndWxhci1ibG9jay5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVk
L2JsaW5rL2Zhc3QvdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdXBkYXRlLWZyYW1lLW92ZXJmbG93Lmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTU1NzU3IFsgU2ll
cnJhKyBdIG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJlcGFpbnQuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTU1NzU3IG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJl
cGFpbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTc1ODkgZmFzdC90
ZXh0LWF1dG9zaXppbmcvaW9zL3RleHQtYXV0b3NpemluZy1hZnRlci1iYWNrLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCiAjIFBpUCB0ZXN0cyBhcmUgb25seSBlbmFibGVkIGZvciBTaWVycmEgV2Vi
S2l0Mi4KICMgcmRhcjovL3Byb2JsZW0vMjc1NzQzMDMKLVsgU2llcnJhKyBdIG1lZGlhL2NvbnRy
b2xzL3BpY3R1cmUtaW4tcGljdHVyZS5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTcwNjIw
IFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL3BpcC1wbGFjZWhvbGRlci13aXRob3V0LXZpZGVv
LWNvbnRyb2xzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotWyBTaWVycmErIF0gbWVkaWEvZWxlbWVu
dC1jb250YWluaW5nLXBpcC12aWRlby1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3Mg
VGltZW91dCBdCi13ZWJraXQub3JnL2IvMTcyOTk4IFsgU2llcnJhKyBdIG1lZGlhL2Z1bGxzY3Jl
ZW4tYXBpLWVuYWJsZWQtbWVkaWEtd2l0aC1wcmVzZW50YXRpb24tbW9kZS5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMTczMTk5IFsgU2llcnJhKyBdIG1lZGlhL25hdmlnYXRlLXdpdGgt
cGlwLXNob3VsZC1ub3QtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIFNpZXJyYSsgXSBt
ZWRpYS9waXAtdmlkZW8tZ29pbmctaW50by1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIF0KLVsgU2ll
cnJhKyBdIG1lZGlhL3BpY3R1cmUtaW4tcGljdHVyZSBbIFBhc3MgXQorbWVkaWEvY29udHJvbHMv
cGljdHVyZS1pbi1waWN0dXJlLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzA2MjAgbWVk
aWEvY29udHJvbHMvcGlwLXBsYWNlaG9sZGVyLXdpdGhvdXQtdmlkZW8tY29udHJvbHMuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCittZWRpYS9lbGVtZW50LWNvbnRhaW5pbmctcGlwLXZpZGVvLWdvaW5n
LWludG8tZnVsbHNjcmVlbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xNzI5
OTggbWVkaWEvZnVsbHNjcmVlbi1hcGktZW5hYmxlZC1tZWRpYS13aXRoLXByZXNlbnRhdGlvbi1t
b2RlLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNzMxOTkgbWVkaWEvbmF2aWdhdGUt
d2l0aC1waXAtc2hvdWxkLW5vdC1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK21lZGlhL3Bp
cC12aWRlby1nb2luZy1pbnRvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3MgXQorbWVkaWEvcGljdHVy
ZS1pbi1waWN0dXJlIFsgUGFzcyBdCiAKICMgUlRMIFNjcm9sbGJhcnMgYXJlIGVuYWJsZWQgb24g
U2llcnJhIFdlYktpdDIuCi13ZWJraXQub3JnL2IvMTc5NDU1IFsgU2llcnJhKyBdIGZhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBT
aWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtc2ltcGxlLmh0bWwgWyBQYXNz
IF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWNv
bnRlbnRzLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLW92ZXJmbG93LWRpci1ydGwuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctcGFkZGluZy5odG1sIFsgUGFzcyBdCi1b
IFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1zaW1wbGUu
aHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
b3ZlcmZsb3cuaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNj
cm9sbGJhcnMtb3ZlcmZsb3ctZWxlbWVudEZyb21Qb2ludC5odG1sIFsgUGFzcyBdCi1bIFNpZXJy
YSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wb3NpdGlvbi1hYnNv
bHV0ZS5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1vdmVyZmxvdy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1hYnNvbHV0ZS5o
dG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1w
b3NpdGlvbi1maXhlZC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9y
dGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIFsgUGFzcyBdCi1bIFNp
ZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi5odG1s
IFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1pZnJh
bWUtb2Zmc2V0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1z
Y3JvbGxiYXJzLWVsZW1lbnRGcm9tUG9pbnQtc3RhdGljLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJh
KyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWlmcmFtZS1zY3JvbGxlZC5odG1sIFsg
UGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlv
bmluZy5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1saXN0Ym94LXNjcm9sbC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0Lmh0bWwgWyBQYXNzIF0KLVsg
U2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJp
Z2h0Lmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWxpc3Rib3gtc2ltcGxlLmh0bWwgWyBQYXNzIF0KLVsgU2llcnJhKyBdIGZhc3Qvc2Nyb2xs
aW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3guaHRtbCBbIFBhc3MgXQotWyBTaWVycmErIF0gZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb25lZC1pbnRlcnNlY3Qtc2Nyb2xsYmFy
cy5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFy
cy1hbHRlcm5hdGUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNl
bWVudC5odG1sIFsgUGFzcyBdCi1bIFNpZXJyYSsgXSBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1hbHRlcm5hdGUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBs
YWNlbWVudC0yLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNjI2MzggWyBTaWVycmErIF0g
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1h
dHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50Lmh0bWwgWyBQYXNzIEltYWdl
T25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
YW5pbWF0aW9uLXByb3BlcnR5Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNzk0NTUgZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBd
CitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1zaW1wbGUuaHRtbCBbIFBhc3MgXQorZmFz
dC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctY29udGVudHMuaHRtbCBbIFBhc3Mg
XQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctZGlyLXJ0bC5odG1sIFsg
UGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBs
ZS5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy5o
dG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1lbGVt
ZW50RnJvbVBvaW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LW92ZXJmbG93LXBvc2l0aW9uLWFic29sdXRlLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRlLmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWZpeGVk
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0
aW9uLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJz
LXRleHQtc2VsZWN0aW9uLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWlmcmFtZS1vZmZzZXQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtZWxlbWVudEZyb21Qb2ludC1zdGF0aWMuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtaWZyYW1lLXNjcm9sbGVkLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLXBvc2l0aW9uaW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwgWyBQYXNzIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbCBbIFBhc3Mg
XQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtcmlnaHQuaHRt
bCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUu
aHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1s
IFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWludGVy
c2VjdC1zY3JvbGxiYXJzLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWFsdGVybmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxh
Y2VtZW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWFsdGVy
bmF0ZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50LTIu
aHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE2MjYzOCBmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1hbHRlcm5hdGUtaWZyYW1lLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNj
cm9sbGJhci1wbGFjZW1lbnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Nj
cm9sbGluZy9ydGwtc2Nyb2xsYmFycy1hbmltYXRpb24tcHJvcGVydHkuaHRtbCBbIFBhc3MgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8yNTA2MzEyOD4KLVsgU2llcnJhKyBdIG1lZGlhL21lZGlhLWNv
bnRyb2xzLWRyYWctdGltZWxpbmUtc2V0LWNvbnRyb2xzLXByb3BlcnR5Lmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQorbWVkaWEvbWVkaWEtY29udHJvbHMtZHJhZy10aW1lbGluZS1zZXQtY29udHJvbHMt
cHJvcGVydHkuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKICMgSGl0dGluZyAiVGhlIGNlcnRpZmlj
YXRlIGZvciB0aGlzIHNlcnZlciBpcyBpbnZhbGlkIiBsb2FkaW5nIGVycm9yIChub3QgaGFwcGVu
aW5nIGluIFdLMSkKLXdlYmtpdC5vcmcvYi8xNjA0NDUgWyBTaWVycmErIF0gaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91
cGdyYWRlLWluc2VjdXJlLWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTYwNDQ1IFsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRj
aC1pbi1tYWluLWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNjA0NDUgaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1y
ZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWZldGNoLWluLXdvcmtlci5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTYwNDQ1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1mZXRjaC1p
bi1tYWluLWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NzYwNyBbIERl
YnVnIF0gaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2Jsb2Itc2NyaXB0LXdpdGgtY3Jvc3Mt
ZG9tYWluLWltcG9ydGVkLXNjcmlwdHMuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAKQEAgLTU4Miw4
ICs1NjksNiBAQCB3ZWJraXQub3JnL2IvMTYyMDgxIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWlu
c2VydC1saW5rLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2MDAxNyBqcy9yZWdy
ZXNzLTEzOTU0OC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE2MjUyNCBb
IFNpZXJyYSBSZWxlYXNlIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUt
cmVkaXJlY3QuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xNjE5MjYgc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiAKQEAg
LTU5OSw4ICs1ODQsNiBAQCB3ZWJraXQub3JnL2IvMTYyOTc1IGh0dHAvdGVzdHMvY2FjaGUvZGlz
ay1jYWNoZS9tZW1vcnktY2FjaGUtcmV2YWxpZGF0aW9uLXVwZGF0ZQogCiB3ZWJraXQub3JnL2Iv
MTYxNjUzIFsgRGVidWcgXSBzdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgWyBQ
YXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTYzNDUzIFsgU2llcnJhIFJlbGVhc2UgXSBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJl
LXJlcXVlc3RzL2Jhc2ljLXVwZ3JhZGUtY29ycy5odHRwcy5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
LQogd2Via2l0Lm9yZy9iLzE2MzcwMiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3Rh
dGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTY0ODcwIFsgRGVidWcgXSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJjdXJzb3JfaXRlcmF0aW5n
Lmh0bSBbIFBhc3MgRmFpbHVyZSBdCkBAIC02MTEsOCArNTk0LDYgQEAgd2Via2l0Lm9yZy9iLzE2
NTM1MiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1jb250ZW50cy5odG1sIFsgUGFzcyBU
aW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE2NzY1MyBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL2Jsb2NrLWV2ZXJ5dGhpbmctdW5sZXNzLWRvbWFpbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
IAotd2Via2l0Lm9yZy9iLzE2NzIwNiBbIFNpZXJyYSBSZWxlYXNlIF0gbWF0aG1sL29wZW50eXBl
L2xhcmdlLW9wZXJhdG9ycy1kaXNwbGF5c3R5bGUtZHluYW1pYy5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE2ODA2NSBpbnNwZWN0b3IvdW5pdC10ZXN0cy9o
ZWFwLXNuYXBzaG90Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcv
Yi8xNjgyMzUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLWEtZWxlbWVudC9hLWRvd25sb2FkLWNs
aWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtNjM4LDE2ICs2MTksMTAgQEAgd2Via2l0Lm9y
Zy9iLzE3MTc2MyBjb21wb3NpdGluZy90aWxpbmcvbm9uLWFjdGl2ZS13aW5kb3ctdGlsZXMtc2l6
ZS5odG1sIFsgUGFzcwogCiB3ZWJraXQub3JnL2IvMTcxODM3IFsgRGVidWcgXSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcxOTM5IFsgU2llcnJhIFJlbGVhc2UgXSBtZWRpYS90
cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLW9uLXJlc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
LQotd2Via2l0Lm9yZy9iLzE3MTk0NyBbIFNpZXJyYSBSZWxlYXNlIF0gdHJhbnNpdGlvbnMvZXh0
cmEtdHJhbnNpdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3MDY5
OSBbIFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy90aW1lcnMvbmVnYXRpdmUtc2V0dGltZW91dC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzE2ODkzNyAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwt
aWZyYW1lLWxhdGNoZWQtbWFpbmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQu
b3JnL2IvMTcyMDU0IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNl
c3RhdGUtc2l6ZS1pZnJhbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8x
NzI0NTQgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N0YXRpc3RpY3MuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzMxODggZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEt
Z3JhbnQtcGVyc2lzdGVuY3kzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtNjYxLDEwICs2MzYs
MTAgQEAgd2Via2l0Lm9yZy9iLzE4NzY0OSBlZGl0aW5nL3NlbGVjdGlvbi91cGRhdGUtc2VsZWN0
aW9uLWJ5LXN0eWxlLWNoYW5nZS5odG1sIFsgUGEKICMgVG91Y2ggZXZlbnRzIGFyZSBub3QgYXZh
aWxhYmxlIG9uIG9wZW4gc291cmNlIGJvdHMsIHRodXMgb25seSB0ZXN0ZWQgb24gTWFjLgogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24taW4tY3Jvc3Mt
b3JpZ2luLXN1Yi1mcmFtZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVt
b3ZhbC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzLyBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1hY2Nlc3MtdGhlbi1uYXZpZ2F0ZS1jcm9zcy1zaXRlLXNob3VsZC1u
b3QtaGF2ZS1hY2Nlc3MtZGF0YWJhc2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCi1bIEhpZ2hTaWVy
cmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3Qt
cHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1wcm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVy
ZS1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvIFsgUGFz
cyBdCitodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtYWNjZXNzLXRo
ZW4tbmF2aWdhdGUtY3Jvc3Mtc2l0ZS1zaG91bGQtbm90LWhhdmUtYWNjZXNzLWRhdGFiYXNlLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQoraHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktd2l0aC1w
cm9tcHQtZG9lcy1ub3QtcHJlc2VydmUtZ2VzdHVyZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvZGVueS13aXRoLXByb21wdC1kb2VzLW5vdC1wcmVzZXJ2ZS1nZXN0dXJl
LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIAogIyBFbmFibGUgYWdhaW4gd2hlbiBmaXhpbmcgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMC4KIGh0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdHJ1ZS1pZi10aGlyZC1wYXJ0eS1oYXMt
Y29va2llcy1lcGhlbWVyYWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQpAQCAtNjkzLDggKzY2OCw2
IEBAIHdlYmtpdC5vcmcvYi8xNzM2NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9odHRwLWNhY2hlL2ludmFsaWRhdGUuCiAKIHdlYmtpdC5vcmcvYi8xNzM1MDAgaHR0cC90
ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVtb3ZlLWNyZWRlbnRpYWxzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTcyODI5IFsgU2llcnJhIERlYnVnIF0gbG9hZGVyL3N0
YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtc2l6ZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KLQogd2Vi
a2l0Lm9yZy9iLzE3NTc4MSBzdmcvaW4taHRtbC9ieS1yZWZlcmVuY2UuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzYwNTQgbWVkaWEvdmlkZW8tY29udHJvbHMtaW4tbWVk
aWEtZG9jdW1lbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC03MTMsMzAgKzY4NiwzMCBAQCB3
ZWJraXQub3JnL2IvMTg1OTk0IGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ct
ZmFtaWx5Lmh0bWwgWyBQYXNzIEltYQogd2Via2l0Lm9yZy9iLzE4NTk5NCBmYXN0L3RleHQvdXNl
ci1pbnN0YWxsZWQtZm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZmFtaWx5Lmh0bWwgWyBQYXNzIElt
YWdlT25seUZhaWx1cmUgXQogCiAjIFJlZW5hYmxlZCB0ZXN0cyBmb3Igc3VwcG9ydGVkIHBsYXRm
b3JtcwotWyBNb2phdmUrIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVk
LWNoYXJhY3Rlci5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L3RleHQvdXNlci1pbnN0
YWxsZWQtZm9udHMvZXh0ZW5kZWQtY2hhcmFjdGVyLXdpdGgtdXNlci1mb250Lmh0bWwgWyBQYXNz
IF0KK2Zhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9leHRlbmRlZC1jaGFyYWN0ZXIuaHRt
bCBbIFBhc3MgXQorZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL2V4dGVuZGVkLWNoYXJh
Y3Rlci13aXRoLXVzZXItZm9udC5odG1sIFsgUGFzcyBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1
MDEwMzA3PgotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5
RXJyb3IuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvblYzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGh0dHAvdGVz
dHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY0Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZl
KyBdIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblY1Lmh0bWwgWyBQYXNz
IF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheVJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RWMy5odHRwcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3NDaGFuZ2VFdmVu
dEVycm9yc1YzLmh0dHBzLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBhY2Nlc3NpYmls
aXR5L21hYy9hcHBsZS1wYXktbGFiZWxzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGFjY2Vz
c2liaWxpdHkvbWFjL2FwcGxlLXBheS1zZXNzaW9uLXY0Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVz
dHMvc3NsL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9z
c2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjMuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9z
c2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9z
c2wvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uVjUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9z
c2wvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0U2hpcHBpbmdDb250YWN0VjMuaHR0cHMuaHRtbCBb
IFBhc3MgXQoraHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0FkZHJlc3ND
aGFuZ2VFdmVudEVycm9yc1YzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2FjY2Vzc2liaWxpdHkvbWFj
L2FwcGxlLXBheS1sYWJlbHMuaHRtbCBbIFBhc3MgXQorYWNjZXNzaWJpbGl0eS9tYWMvYXBwbGUt
cGF5LXNlc3Npb24tdjQuaHRtbCBbIFBhc3MgXQogIyA8cmRhcjovL3Byb2JsZW0vMzE2MzQ0NTE+
Ci1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tp
ZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGln
aFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0
aW9uLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29raWVzLWlu
LWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2RvLW5vdC1yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFBhc3MgXQot
WyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1p
bi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJh
KyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5k
LXBlcnNpc3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsg
UGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwg
WyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1s
IFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFBhc3Mg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3Mt
Y29va2llcy1pbi1hLXRoaXJkLXBhcnR5LWNvbnRleHQuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsg
UGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1i
bG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0bWwgWyBQ
YXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnkt
YW5kLXBlcnNpc3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9y
LXRoaXJkLXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1y
ZXF1ZXN0cy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAK
ICMgVGhlIFNhbWVTaXRlIGNvb2tpZSBBUEkgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQ2F0
YWxpbmEgYW5kIGFib3ZlLgogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFBhc3Mg
XQpAQCAtNzQ0LDkgKzcxNyw2IEBAIHdlYmtpdC5vcmcvYi8xODU5OTQgZmFzdC90ZXh0L3VzZXIt
aW5zdGFsbGVkLWZvbnRzL3NoYWRvdy1wb3N0c2NyaXB0LWZhbWlseS5odG1sCiAjIFNraXBwZWQg
aW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhleSBvbmx5IHdvcmsgb24gaU9TIGFuZCBN
YWMsIFdLMi4KIG1lZGlhL2RlYWN0aXZhdGUtYXVkaW8tc2Vzc2lvbi5odG1sIFsgUGFzcyBdCiAK
LSMgTGluayBwcmVjb25uZWN0IGlzIGRpc2FibGVkIG9uIHByZS1IaWdoIFNpZXJyYSBiZWNhdXNl
IHRoZSBDRk5ldHdvcmsgU1BJIGlzIG1pc3NpbmcuCi1bIFNpZXJyYSBdIGh0dHAvdGVzdHMvcHJl
Y29ubmVjdCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTc3Njg3IGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtbWVtb3J5LWNhY2hlLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCiB3ZWJraXQub3JnL2IvMTc4NDcyIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtcmVzb3VyY2UtaGFuZGxlZC1rZXlkb3duLmh0bWwgWyBTa2lwIF0KQEAg
LTc1NCwxMCArNzI0LDYgQEAgd2Via2l0Lm9yZy9iLzE3ODQ3MiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXMKIAogd2Via2l0Lm9yZy9i
LzE3Njg4MSBwbHVnaW5zL2pzLWZyb20tZGVzdHJveS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzE3ODU1MyBbIEhpZ2hTaWVycmEgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL29wZW5p
bmctdGhlLWlucHV0LXN0cmVhbS8wMTEuaHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMTY1
NjIwIFsgU2llcnJhIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVx
dWVzdC1oZWFkZXJzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTc5Nzcz
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L3NlcnZpY2V3
b3JrZXItaW50ZXJjZXB0ZWQuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8xNzYwNzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVl
ckNvbm5lY3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KQEAg
LTc5Miw5ICs3NTgsNyBAQCB3ZWJraXQub3JnL2IvMTgwOTgyIFsgRGVidWcgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZQogCiB3ZWJraXQub3JnL2Iv
MTgyMTc2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2FwcGNhY2hlLW9yZGVyaW5nLW1haW4uaHR0cHMuaHRtbCBbIFNraXAgXQog
Ci13ZWJraXQub3JnL2IvMTgzODY5IFsgSGlnaFNpZXJyYSsgXSBtZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvc2Vlay1iYWNrd2FyZC1zdXBwb3J0L3NlZWstYmFja3dhcmQtc3VwcG9ydC5odG1s
IFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KLQotd2Via2l0Lm9yZy9iLzE4Mzg2MCBbIFNpZXJyYSBS
ZWxlYXNlIF0gaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3RoaXJkLXBhcnR5LXJlZ2lzdHJhdGlv
bi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xODM4NjkgbWVkaWEvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL3NlZWstYmFja3dhcmQtc3VwcG9ydC9zZWVrLWJhY2t3YXJkLXN1cHBv
cnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCiAKIHdlYmtpdC5vcmcvYi8xODQyNDUgaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY2FjaGUtYXBpLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC04NDUsMTcgKzgwOSwxNSBAQCBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBb
IFNraXAgXQogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBbIFNraXAg
XQogCi0jIE5GQyBzdXBwb3J0IHJlcXVpcmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVt
IGZvciBIaWdoU2llcnJhIGFuZCBNb2phdmUuCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93
cHQvd2ViYXV0aG4vY3RhcC1uZmMtZmFpbHVyZS5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hT
aWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZl
IF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLW5mYy5odHRwcy5odG1s
IFsgU2tpcCBdCi1bIEhpZ2hTaWVycmEgTW9qYXZlIF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCisjIE5G
QyBzdXBwb3J0IHJlcXVpcmUgQ2F0YWxpbmErLCB0aGVyZWZvcmUgc2tpcCB0aGVtIGZvciBNb2ph
dmUuCitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtbmZjLWZhaWx1cmUuaHR0cHMu
aHRtbCBbIFNraXAgXQorWyBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZl
IF0gaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LW5mYy5odHRwcy5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBdIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1uZmMuaHR0cHMuaHRtbCBbIFNraXAgXQor
WyBNb2phdmUgXSBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtbmZjLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE4Mzg3OCBtZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC11cC1jbGlj
ay1vdmVyLW1lZGlhLWRvZXMtbm90LWRpbWlzcy1tZWRpYS1jb250cm9scy13aGVuLW1lZGlhLWlz
LXBsYXlpbmcuaHRtbCBbIFBhc3MgVGltZW91dCBdIAogCi13ZWJraXQub3JnL2IvMTkxNjU4IFsg
U2llcnJhIFJlbGVhc2UgXSBmYXN0L2xheWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4t
YWRkZWQtYWZ0ZXItdHJhbnNmb3JtLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotCiB3
ZWJraXQub3JnL2IvMTk0ODI2IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1u
b3QtYmxvY2stdG9wLWxldmVsLW5hdmlnYXRpb24tcmVkaXJlY3QuaHRtbCBbIFBhc3MgVGltZW91
dCBdCiAKIHdlYmtpdC5vcmcvYi8xOTQ5MTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtODkwLDE2ICs4NTIsMTYgQEAg
d2Via2l0Lm9yZy9iLzE5ODY2MyBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQt
Z3JhbnQtYWNjZXNzLXRoZW4tbmF2aWcKIAogd2Via2l0Lm9yZy9iLzE3NjAzMCBbIERlYnVnIF0g
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9iamVjdC10b3N0cmluZy1jaGVj
ay5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5ODkyMSBbIE1vamF2ZSsg
XSB3ZWJncHUvYmxlbmQtY29sb3ItdHJpYW5nbGUtc3RyaXAuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTk4OTIxIHdlYmdwdS9ibGVuZC1jb2xvci10cmlhbmds
ZS1zdHJpcC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5
OTY1MSBbIE1vamF2ZSBEZWJ1ZyBdIHdlYmdwdS93aGxzbC9idWlsdGluLXZlY3RvcnMtMi5odG1s
IFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8xOTkwODkgWyBNb2phdmUrIERlYnVnIF0gcGx1Z2lu
cy93aW5kb3ctb3Blbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTk5MDg5IFsgRGVidWcg
XSBwbHVnaW5zL3dpbmRvdy1vcGVuLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3Byb2JsZW0v
NTY1MDYwNjM+IExheW91dCBUZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjL1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5odHRwcy5odG1sIGlzIGEg
Zmxha3kgZmFpbHVyZSAoMjAzMjU2KQogd2Via2l0Lm9yZy9iLzIwMzI1NiBbIERlYnVnIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNl
Q29ubmVjdGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3Jn
L2IvMjA1MzAxIFsgTW9qYXZlKyBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJj
ZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA1MzAxIGluc3Bl
Y3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13ZWJncHUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDU4MDggZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdW5pY29k
ZS1iaWRpLW90aGVyLW5ldXRyYWxzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkBAIC0xMDc0LDQg
KzEwMzYsNCBAQCB3ZWJraXQub3JnL2IvMjA5NjI0IFsgUmVsZWFzZSBdIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL2ZpeGVkL2ZvdXItYmFycy16b29tZWQuaAogCiB3ZWJraXQub3JnL2IvMjA5Njcy
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5o
dHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzIwOTY4OCBt
ZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXItc3VwcG9ydC9zY3J1YmJlci1zdXBw
b3J0LWNsaWNrLmh0bWwgWyBQYXNzIENyYXNoIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cit3ZWJraXQub3JnL2IvMjA5Njg4IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJl
ci1zdXBwb3J0L3NjcnViYmVyLXN1cHBvcnQtY2xpY2suaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTEwMTExMTMyYzhl
YWRlYjgxMGMwMDA2YWZjYjcxYmFjNmU1ZGQ0Li40MDgwNWUxNGQwODM5ODkzMWRjNjk3NDExYWVl
MWI0ODliNTM3ZDliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzQsOCArMzQsNyBAQCBmYXN0L2V2ZW50cy9kby1ub3QtZHJhZy1hbmQtZHJvcC1kYXRh
LWRldGVjdG9ycy1saW5rLmh0bWwgWyBQYXNzIF0KIAogaHR0cC90ZXN0cy9nemlwLWNvbnRlbnQt
ZW5jb2RpbmcgWyBQYXNzIF0KIAotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvZ3ppcC1jb250ZW50LXR5cGUtbm8tY29udGVudC1lbmNvZGluZy5odG1sIFsg
RmFpbHVyZSBdCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2d6aXAtY29u
dGVudC10eXBlLW5vLWNvbnRlbnQtZW5jb2RpbmcuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9nemlwLWNvbnRlbnQtdHlwZS1uby1jb250ZW50LWVuY29kaW5nLmh0bWwg
WyBQYXNzIF0KIAogZmFzdC90ZXh0L21hYyBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4MTk2NCBm
YXN0L3RleHQvbWFjL3NlbGVjdC1jaGFyYWN0ZXItYmVmb3JlLXplcm8td2lkdGgtam9pbmVyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTE0OCw5ICsxNDcsNiBAQCBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWljZS5odG1sIFsgU2tpcCBdCiBmYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLW1lZGlhLXNldHVwLWNhbGxiYWNrcy1zaW5nbGUtZGlhbG9nLmh0
bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHMuaHRt
bCBbIFNraXAgXQogCi1bIEhpZ2hTaWVycmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRp
bmctSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZC5odG1sIFsgU2tpcCBdCi1bIEhpZ2hTaWVy
cmEgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5h
YmxlZC5odG1sIFsgU2tpcCBdCi0KICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVidWcgXSBmYXN0
L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIApAQCAtNzY2LDcg
Kzc2Miw3IEBAIHdlYmtpdC5vcmcvYi8xMzE4NTUgbWVkaWEvZXZlbnQtYXR0cmlidXRlcy5odG1s
IFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzEzMzM2MyBtZWRpYS92aWRl
by1ydGwuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTMzNjg2
IG1lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzUwNzEgbWVkaWEvdmlkZW8tc2Vlay13aXRoLW5l
Z2F0aXZlLXBsYXliYWNrLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzEzNTE2
MCBbIFNpZXJyYSsgXSBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN1YnRpdGxlcy10b28tbGFy
Z2UuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEzNTE2MCBtZWRpYS90cmFjay90cmFj
ay1pbi1iYW5kLXN1YnRpdGxlcy10b28tbGFyZ2UuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzEzNTE2MCBtZWRpYS90cmFjay90cmFjay1sb25nLXdvcmQtY29udGFpbmVyLXNpemluZy5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTM3MzExIG1lZGlhL3ZpZGVvLWZ1bGxzY3Jl
ZW4tb25seS1wbGF5YmFjay5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KIHdlYmtpdC5vcmcv
Yi8xMzk3ODkgbWVkaWEvbWVkaWEtY29udHJvbHMtdGltZWxpbmUtdXBkYXRlcy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KQEAgLTg1NCw3ICs4NTAsNyBAQCB3ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMTYyNjYgbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xp
bmcuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTYzMjMxIFsgU2llcnJhKyBdIG1lZGlh
L2NvbnRyb2xzL2FpcnBsYXktcGlja2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzE2MzIzMSBtZWRpYS9jb250cm9scy9haXJwbGF5LXBpY2tlci5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAogIyAtLS0gRW5kIG1lZGlhIHRlc3RzIC0tLQogd2Via2l0Lm9yZy9iLzEzNjk5NCBo
dHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb29raWUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTAx
Myw3ICsxMDA5LDYgQEAgd2Via2l0Lm9yZy9iLzE0ODYzNiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9y
LWR5bmFtaWMtc3BlY2lmaWNpdHkuaHRtbCBbIFBhc3MgVGltZW8KIHdlYmtpdC5vcmcvYi8xNDg2
MzYgaW5zcGVjdG9yL2Nzcy9zZWxlY3Rvci1zcGVjaWZpY2l0eS5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KIHdlYmtpdC5vcmcvYi8xNTg3NDIgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVh
ay1pbi1jb25zdHJ1Y3Rvci1iZWZvcmUtc3VwZXIuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJr
aXQub3JnL2IvMTYzNjA0IGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFs
Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE2ODMzOCBbIFNpZXJyYSBdIGlu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1kZXRhY2guaHRtbCBbIFBhc3MgVGlt
ZW91dCBdCiB3ZWJraXQub3JnL2IvMTY1NzcyIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1sb2cuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTYxMzg3IGlu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi13aXRoLWV4Y2VwdGlvbi5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjQyOTMgWyBEZWJ1ZyBdIGluc3BlY3Rvci9k
ZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTA1OSw3
ICsxMDU0LDcgQEAgd2Via2l0Lm9yZy9iLzE0OTEyOCBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0
ZXJzIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAjIFRvdWNoIGV2ZW50cyBhcmUgbm90IGVuYWJsZWQg
b24gTWFjCiB3ZWJraXQub3JnL2IvMTQ5NTkyIGZhc3Qvc2hhZG93LWRvbS90b3VjaC1ldmVudC1p
b3MuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTQ5ODE5IFsgRGVidWcgU2llcnJhKyBd
IGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBDcmFzaCBdCit3ZWJr
aXQub3JnL2IvMTQ5ODE5IFsgRGVidWcgXSBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIu
aHRtbCBbIFBhc3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMTY4OTUzIFsgUmVsZWFzZSBdIGNv
bXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLXBvc3Rlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApAQCAt
MTA5NiwyMSArMTA5MSwyMSBAQCBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3Rpb24tZWxlbWVudC10
YWJiaW5nLXRvLWxpbmsuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNTI1
MDYgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9nZXQtZXh0ZW5zaW9uLmh0bWwg
WyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTU0NzA5IFsgU2llcnJhKyBdIGZhc3Qv
dGV4dC9jcmFzaC1jb21wbGV4LXRleHQtc3Vycm9nYXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzE1NDcwOSBmYXN0L3RleHQvY3Jhc2gtY29tcGxleC10ZXh0LXN1cnJvZ2F0
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NTA5MiBqcy9hcnJheWJ1
ZmZlci13cmFwcGVycy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE1NTE0
MCBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xODcxMDMganMvZXJyb3Itc2hvdWxkLW5vdC1zdHJvbmctcmVm
ZXJlbmNlLWdsb2JhbC1vYmplY3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIAotd2Vi
a2l0Lm9yZy9iLzE1NTUwNSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzE1NTUwNSBbIFNpZXJyYSsgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8uaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzE1NTUwNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8uaHRtbCBbIFNraXAgXQogCiB3
ZWJraXQub3JnL2IvMTU0Njg4IGluc3BlY3Rvci9jb250cm9sbGVyL3J1bnRpbWUtY29udHJvbGxl
ci5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzE1NjExMiBbIFNpZXJyYSsg
XSBtZWRpYS9hdWRpby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTU2MTEyIFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTYxMTIgWyBTaWVycmErIF0gbWVkaWEv
Y29udHJvbHMtd2l0aG91dC1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzE1NjExMiBtZWRpYS9hdWRpby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTU2MTEyIG1lZGlhL2NvbnRyb2xzLXN0cmljdC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTYxMTIgbWVkaWEvY29udHJvbHMtd2l0aG91
dC1wcmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTU2MzUxIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0LXByaXZhdGUuaHRtbCBb
IFBhc3MgVGltZW91dCBdCiAKQEAgLTExMjYsNDQgKzExMjEsNDQgQEAgd2Via2l0Lm9yZy9iLzE1
ODEwMSBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMvZ2V0LXVybC1ub3RpZnktb24t
cmVtb3ZhbC4KIHdlYmtpdC5vcmcvYi8xNTg1MzQgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2R5bmFt
aWMtYmFja2Ryb3AtZmlsdGVyLWNoYW5nZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
IAogIyBUaGVzZSB0ZXN0cyBoYXJkY29kZSBwbGF0Zm9ybS1zcGVjaWZpYyBmb250IGFsaWFzZXMu
Ci13ZWJraXQub3JnL2IvMTU4NjQ5IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9jaGluZXNlLWZvbnQt
bmFtZS1hbGlhc2VzLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE1
ODY0OSBmYXN0L3RleHQvY2hpbmVzZS1mb250LW5hbWUtYWxpYXNlcy0yLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1ODg4OSBtZWRpYS92aWRlby1jb250cm9scy1z
aG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCiAKLVsg
U2llcnJhKyBdIGZhc3QvY3NzL2FwcGVhcmFuY2UtYXBwbGUtcGF5LWJ1dHRvbi5odG1sIFsgUGFz
cyBdCitmYXN0L2Nzcy9hcHBlYXJhbmNlLWFwcGxlLXBheS1idXR0b24uaHRtbCBbIFBhc3MgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8yMzUwMDMyNz4gc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5m
by10YWJsZS5odG1sCi1bIFNpZXJyYSsgXSBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRh
YmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorc3RvcmFnZS93ZWJzcWwvYWx0ZXItdG8taW5mby10
YWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMjM1MDQ3NDk+
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3Jlc3BvbnNlLW1ldGhvZC5odG0g
ZmFpbGluZwotWyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
cmVzcG9uc2UtbWV0aG9kLmh0bSBbIFBhc3MgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3hoci9yZXNwb25zZS1tZXRob2QuaHRtIFsgUGFzcyBGYWlsdXJlIF0KIAog
IyA8cmRhcjovL3Byb2JsZW0vMjM1MDU1ODI+IEZhaWxzIG9uIGlNYWMxMCwxIGFuZCBpTWFjMTEs
MQotWyBTaWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1y
ZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21v
b3RoaW5nRW5hYmxlZC1yZXBhaW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFNpZXJyYSBz
dXBwb3J0cyB0cnVlIGZvbnQgZmVhdHVyZSBjb3ZlcmFnZSBxdWVyaWVzLiBXZSB1c2UgdGhlIC1j
b3ZlcmFnZSB2ZXJzaW9ucyBvZiB0aGVzZSB0ZXN0cyBpbnN0ZWFkLgotWyBTaWVycmErIF0gY3Nz
My9mb250LXZhcmlhbnQtc21hbGwtY2Fwcy1zeW50aGVzaXMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotWyBTaWVycmErIF0gY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMtc3ludGhlc2lz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMt
c3ludGhlc2lzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9udC12YXJpYW50LXBl
dGl0ZS1jYXBzLXN5bnRoZXNpcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzI1Mjc5MTg5PiBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUuaHRtbCBpcyBmbGFreQot
WyBTaWVycmErIF0gaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVk
aW8tdmlkZW8taW4tbWFpbi1mcmFtZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI1NzgwMDM1PiBDU1Ag
ZG9lcyBub3QgaWdub3JlIHBhdGhzIGZvciBtZWRpYSByZWRpcmVjdHMKLVsgU2llcnJhKyBdIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFs
bG93ZWQyLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhKyBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0
LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLmh0bWwgWyBTa2lwIF0KIAogIyByZGFy
Oi8vcHJvYmxlbS8yNjk1MjYyNwotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2Jh
Y2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tYWRkLmh0bWwg
WyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmErIF0gY3NzMy9maWx0ZXJzL2JhY2tk
cm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24uaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ry
b3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRtbCBbIFBh
c3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmls
dGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogIyByZGFyOi8vcHJvYmxlbS8yNzE0MTI5MQotWyBTaWVycmErIF0gZWRp
dGluZy9zZWxlY3Rpb24vdHJpcGxlLWNsaWNrLWluLXByZS5odG1sIFsgRmFpbHVyZSBdCitlZGl0
aW5nL3NlbGVjdGlvbi90cmlwbGUtY2xpY2staW4tcHJlLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBy
ZGFyOi8vcHJvYmxlbS8zMTI0MzgyNAogd2Via2l0Lm9yZy9iLzE1ODc0NyBtZWRpYS9yZXN0b3Jl
LWZyb20tcGFnZS1jYWNoZS5odG1sIFsgUGFzcyBGYWlsdXJlIENyYXNoIF0KIAogIyBTZWUgYWxz
byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDk0Ci13ZWJraXQu
b3JnL2IvMTUxMjg3IFsgU2llcnJhKyBdIG1lZGlhL2NvbnRyb2xzL2lubGluZS1lbGVtZW50cy1k
cm9wb2ZmLW9yZGVyLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNTEyODcgbWVkaWEv
Y29udHJvbHMvaW5saW5lLWVsZW1lbnRzLWRyb3BvZmYtb3JkZXIuaHRtbCBbIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTU4NTAwIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLXBy
aXZhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTExNzIsMjUgKzExNjcsMjUgQEAgd2Vi
a2l0Lm9yZy9iLzE2MzEyMiBpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZh
bGlkLWFmdGVyLWRlbGV0aW9uLmgKIHdlYmtpdC5vcmcvYi8xMjgzMTIgbWVkaWEvdmlkZW8tbG9h
ZC1wcmVsb2FkLW1ldGFkYXRhLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIHJkYXI6Ly9wcm9i
bGVtLzI3NDc1MTYyCi1bIFNpZXJyYSsgXSBjb21wb3NpdGluZy92aWRlby9wb3N0ZXIuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmEr
IF0gZmFzdC90ZXh0L2Vtb2ppLW51bS1nbHlwaHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9i
LzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItMy5odG1sIFsgUGFz
cyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5k
ZXItMi00Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFz
dC90ZXh0L2Vtb2ppLWdlbmRlci0yLTUuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1
NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNi5odG1sIFsgUGFzcyBdCi13
ZWJraXQub3JnL2IvMTU5NzU1IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi03
Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0
L2Vtb2ppLWdlbmRlci0yLTguaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNp
ZXJyYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOS5odG1sIFsgUGFzcyBdCi0KLXdlYmtp
dC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTMu
aHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3RleHQv
ZW1vamktZ2VuZGVyLWZlMGYtNC5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1IFsg
U2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi01Lmh0bWwgWyBQYXNzIF0KLXdl
YmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBm
LTYuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0L3Rl
eHQvZW1vamktZ2VuZGVyLWZlMGYtNy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTU5NzU1
IFsgU2llcnJhKyBdIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi04Lmh0bWwgWyBQYXNzIF0K
LXdlYmtpdC5vcmcvYi8xNTk3NTUgWyBTaWVycmErIF0gZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1m
ZTBmLTkuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE1OTc1NSBbIFNpZXJyYSsgXSBmYXN0
L3RleHQvZW1vamktZ2VuZGVyLmh0bWwgWyBQYXNzIF0KK2NvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rl
ci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBm
YXN0L3RleHQvZW1vamktbnVtLWdseXBocy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5
NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi0zLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcv
Yi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTQuaHRtbCBbIFBhc3MgXQord2Via2l0
Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItNS5odG1sIFsgUGFzcyBdCit3
ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi02Lmh0bWwgWyBQYXNz
IF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLTcuaHRtbCBb
IFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItOC5o
dG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
Mi05Lmh0bWwgWyBQYXNzIF0KKword2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamkt
Z2VuZGVyLWZlMGYtMy5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4
dC9lbW9qaS1nZW5kZXItZmUwZi00Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUg
ZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9i
LzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZlMGYtNi5odG1sIFsgUGFzcyBdCit3ZWJr
aXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItZmUwZi03Lmh0bWwgWyBQYXNz
IF0KK3dlYmtpdC5vcmcvYi8xNTk3NTUgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci1mZTBmLTguaHRt
bCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzE1OTc1NSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLWZl
MGYtOS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTU5NzU1IGZhc3QvdGV4dC9lbW9qaS1n
ZW5kZXIuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTYxMTQ0IGh0dHAvdGVzdHMvbWVk
aWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLW1lbnUuaHRtbCBbIFNraXAg
XQogCkBAIC0xMTk4LDE4ICsxMTkzLDE0IEBAIHdlYmtpdC5vcmcvYi8xNjE4ODMgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUHJvY2Vzc2luZ0luc3RydWN0CiAKIHdl
YmtpdC5vcmcvYi8xNjIzMDggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtZHVyYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8xNjI1MjMgWyBTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xNjI1MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcHJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzE2MjYyNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1saXZlc2Vla2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8xNjI2NDcgWyBTaWVycmErIF0gaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9v
bmFib3J0LXJlc3BvbnNlLWdldHRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMTYyNjQ3IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25hYm9ydC1yZXNwb25zZS1nZXR0
ZXJzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYyODMwIFsgRGVidWcg
XSBmYXN0L2V2ZW50cy90YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KIAotIyBWYXJpYXRpb24gZm9udHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBlYXJsaWVyIHRoYW4g
SGlnaCBTaWVycmEuCi1bIFNpZXJyYSBdIGZhc3QvdGV4dC92YXJpYXRpb25zIFsgUGFzcyBGYWls
dXJlIEltYWdlT25seUZhaWx1cmUgXQotWyBTaWVycmEgXSBhbmltYXRpb25zL2ZvbnQtdmFyaWF0
aW9ucyBbIFBhc3MgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIFRpbWVvdXQgXQotCiBbIERlYnVn
IF0gZmFzdC9zZWxlY3RvcnMvc2xvdy1zdHlsZS1zaGFyaW5nLXdpdGgtbG9uZy1jb3VzaW4tbGlz
dC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xNjE3MjAgWyBEZWJ1ZyBdIHN0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwgWyBQYXNzIFRpbWVvdXQgXQpAQCAtMTMwMSw4
ICsxMjkyLDYgQEAgd2Via2l0Lm9yZy9iLzE3MDgzMSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVu
ZGVyaW5nLXJ0bC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzE2NTU1MyBt
ZWRpYS9tZWRpYS1jb250cm9scy10aW1lbGluZS11cGRhdGVzLXdoZW4taG92ZXJlZC5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3MTI3MiBbIFNpZXJyYSBdIGZhc3QvdGV4
dC9rYWl0aGkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTcxNDY1
IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
IHdlYmtpdC5vcmcvYi8xNzE3NjAgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBsYWludGV4
dC0wMTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtMTMzNyw5ICsxMzI2LDYgQEAgd2Vi
a2l0Lm9yZy9iLzE2OTE1OCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXN1cHBv
cnQvdHJhY2tzLXN1cHBvcnQtc2gKIAogd2Via2l0Lm9yZy9iLzE3MDkwNyBbIERlYnVnIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZGVyaXZlX2JpdHNfa2V5
cy9oa2RmLmh0dHBzLndvcmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCi13ZWJr
aXQub3JnL2IvMTczMzI4IFsgU2llcnJhIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWZhbGxiYWNr
LWVtb2ppLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzMzMjggWyBTaWVycmEgXSBm
YXN0L3RleHQvc3lzdGVtLWZvbnQtZmFsbGJhY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
CiB3ZWJraXQub3JnL2IvMTc4MDgzIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGFp
bnQtdG8tY2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3MzA2OCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9nZXRL
ZXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xMzg3LDEyNiArMTM3MywxMjYgQEAgd2Via2l0
Lm9yZy9iLzE2MTQ5MSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQtYWxsb3ctdGhlbi1zY3JvbGwu
aHRtbCBbIFBhc3MgRmFpbHUKIHdlYmtpdC5vcmcvYi8xNzIwNTIgWyBEZWJ1ZyBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3RpbWVycy90eXBlLWxvbmct
c2V0aW50ZXJ2YWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzI5
MDMxNTA5PiBSRUdSRVNTSU9OPyAoRm9udFBhcnNlci0xOTUpOiBzdmcvVzNDLVNWRy0xLjEvZm9u
dHMtZWxlbS0qIGFuZCBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0qIHRlc3RzIGZhaWxpbmcK
LVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMS10LnN2ZyBbIEZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQu
c3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVs
ZW0tMDMtYi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEv
Zm9udHMtZWxlbS0wNy1iLnN2ZyBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9XM0Mt
U1ZHLTEuMS90ZXh0LWludHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0g
c3ZnL1czQy1TVkctMS4xL3RleHQtaW50cm8tMDItYi5zdmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNp
ZXJyYSsgXSBzdmcvVzNDLVNWRy0xLjEvdGV4dC1pbnRyby0wMy1iLnN2ZyBbIEZhaWx1cmUgXQot
WyBIaWdoU2llcnJhKyBdIHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQuc3ZnIFsgRmFp
bHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDMuc3ZnIFsg
RmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL2JhdGlrL3RleHQvdGV4dFBvc2l0aW9uMi5z
dmcgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBzdmcvY3VzdG9tL2FjaWQzLXRlc3QtNzcu
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWZh
bGxiYWNrLnhodG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gc3ZnL3dpY2QvdGVzdC1y
aWdodHNpemluZy1iLnhodG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQorc3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDEtdC5z
dmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS9mb250cy1lbGVtLTAyLXQuc3ZnIFsgRmFp
bHVyZSBdCitzdmcvVzNDLVNWRy0xLjEvZm9udHMtZWxlbS0wMy1iLnN2ZyBbIEZhaWx1cmUgXQor
c3ZnL1czQy1TVkctMS4xL2ZvbnRzLWVsZW0tMDctYi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0Mt
U1ZHLTEuMS90ZXh0LWludHJvLTAxLXQuc3ZnIFsgRmFpbHVyZSBdCitzdmcvVzNDLVNWRy0xLjEv
dGV4dC1pbnRyby0wMi1iLnN2ZyBbIEZhaWx1cmUgXQorc3ZnL1czQy1TVkctMS4xL3RleHQtaW50
cm8tMDMtYi5zdmcgWyBGYWlsdXJlIF0KK3N2Zy9XM0MtU1ZHLTEuMS90ZXh0LWludHJvLTA0LXQu
c3ZnIFsgRmFpbHVyZSBdCitzdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My5zdmcgWyBGYWlsdXJl
IF0KK3N2Zy9iYXRpay90ZXh0L3RleHRQb3NpdGlvbjIuc3ZnIFsgRmFpbHVyZSBdCitzdmcvY3Vz
dG9tL2FjaWQzLXRlc3QtNzcuaHRtbCBbIEZhaWx1cmUgXQorc3ZnL2N1c3RvbS9zdmctZm9udHMt
ZmFsbGJhY2sueGh0bWwgWyBGYWlsdXJlIF0KK3N2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi54
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvaW5pdGlhbC1sZXR0
ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSAgXQogCiAjIDxy
ZGFyOi8vcHJvYmxlbS8zMDQ5MzkxMD4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBmYXN0L3dyaXRp
bmctbW9kZS9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbCBmYWlsaW5nCi1bIEhpZ2hT
aWVycmErIF0gZmFzdC93cml0aW5nLW1vZGUvYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0
bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQorZmFzdC93cml0aW5nLW1vZGUvYnJva2Vu
LWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8zMDE4MjQwMT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFib3J0LXJlc2V0cy1wYXJzZXIuaHRtbCBmYWls
aW5nCi1bIEhpZ2hTaWVycmErIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hYm9y
dC1yZXNldHMtcGFyc2VyLmh0bWwgWyBGYWlsdXJlIF0KK21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYWJvcnQtcmVzZXRzLXBhcnNlci5odG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6
Ly9wcm9ibGVtLzMwNTE3MjgzPiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBzZWN1cml0eS9ibG9j
ay10ZXN0Lmh0bWwgYW5kIHNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sIGZhaWxpbmcK
LVsgSGlnaFNpZXJyYSsgXSBzZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwKLVsgSGlnaFNpZXJyYSsg
XSBzZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQuaHRtbAorc2VjdXJpdHkvYmxvY2stdGVzdC5o
dG1sCitzZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQuaHRtbAogCiAjIDxyZGFyOi8vcHJvYmxl
bS8zMTE3Nzk5MD4gUkVHUkVTU0lPTjogY2FudmFzLzJkLmdyYWRpZW50LiogTGF5b3V0VGVzdHMg
ZmFpbGluZwogIyBUaGVzZSBhcmUgaW1wb3J0ZWQgdGVzdHMsIHNvIHdlJ2xsIGhhdmUgdG8gcHVz
aCBjaGFuZ2VzIGJhY2sgdG8gVzNDLgotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52
YXMvMmQuZ3JhZGllbnQubGluZWFyLnRyYW5zZm9ybS4xLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGln
aFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LmxpbmVhci50cmFuc2Zv
cm0uMi5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZh
cy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuYm90
dG9tLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFz
LzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmN5bGluZGVyLmh0bWwgWyBGYWlsdXJlIF0KLVsgSGln
aFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZy
b250Lmh0bWwgWyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFz
LzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLnNoYXBlMS5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hT
aWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3Au
aHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQu
Z3JhZGllbnQucmFkaWFsLmluc2lkZTEuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmluc2lkZTIuaHRtbCBbIEZh
aWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQu
cmFkaWFsLmluc2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVk
L3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0K
LVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5v
dXRzaWRlMi5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2Nh
bnZhcy8yZC5ncmFkaWVudC5yYWRpYWwub3V0c2lkZTMuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdo
U2llcnJhKyBdIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRvdWNoMi5o
dG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gZmFzdC9jYW52YXMvY2FudmFzLWJsZW5k
aW5nLWZpbGwtc3R5bGUuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBd
IGZhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2Nh
bnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjEuaHRtbCBbIEZhaWx1cmUgXQoraW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3JtLjIuaHRtbCBbIEZh
aWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5saW5lYXIudHJhbnNmb3Jt
LjMuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5yYWRp
YWwuY29uZS5ib3R0b20uaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5n
cmFkaWVudC5yYWRpYWwuY29uZS5jeWxpbmRlci5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93
M2MvY2FudmFzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwgWyBGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuc2hhcGUxLmh0bWwg
WyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUu
dG9wLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFk
aWFsLmluc2lkZTEuaHRtbCBbIEZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFk
aWVudC5yYWRpYWwuaW5zaWRlMi5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2MvY2FudmFz
LzJkLmdyYWRpZW50LnJhZGlhbC5pbnNpZGUzLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUxLmh0bWwgWyBGYWlsdXJlIF0KK2lt
cG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUyLmh0bWwgWyBGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLm91dHNpZGUzLmh0
bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGllbnQucmFkaWFsLnRv
dWNoMi5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZmlsbC1z
dHlsZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0
bWwgWyBGYWlsdXJlIF0KK2Zhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQog
CiAjIDxyZGFyOi8vcHJvYmxlbS8zMTMyMjQyNT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBtZWRp
YS92aWRlby1vcmllbnRhdGlvbi5odG1sIGlzIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBtZWRp
YS92aWRlby1vcmllbnRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCittZWRpYS92aWRlby1vcmllbnRh
dGlvbi5odG1sIFsgRmFpbHVyZSBdCiAKICMgV2ViQ3J5cHRvQVBJIGZlYXR1cmVzIHRoYXQgZW5h
YmxlZCBvbmx5IGZvciBIaWdoIFNpZXJyYS9pT1MgMTEKLVsgSGlnaFNpZXJyYSsgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93
cmFwS2V5X3Vud3JhcEtleS5odHRwcy53b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi1bIEhp
Z2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkv
d3JhcEtleV91bndyYXBLZXkvdGVzdF93cmFwS2V5X3Vud3JhcEtleS5odHRwcy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJh
dGUtZXhwb3J0LWtleS1qd2stc2hhMS5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1sIFsg
UGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4
cG9ydC1rZXktandrLXNoYTI1Ni5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRv
L3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFz
cyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9y
dC1rZXktandrLXNoYTUxMi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1
YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktcGtjczguaHRtbCBbIFBhc3MgXQotWyBI
aWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXNw
a2kuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1n
ZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUv
cnNhLXBzcy1pbXBvcnQtandrLXByaXZhdGUta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJy
YSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVz
YWdlcy5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWltcG9ydC1qd2stcHVibGljLWtleS1zaGExLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsg
XSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTIyNC5odG1s
IFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1q
d2stcHVibGljLWtleS1zaGEyNTYuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0
by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBQYXNz
IF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJs
aWMta2V5LXNoYTUxMi5odG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KLVsgSGln
aFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQ
YXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS12
ZXJpZnkuaHRtbCBbIFBhc3MgXQotWyBIaWdoU2llcnJhKyBdIGNyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8v
c3VidGxlL3JzYS1wc3MtaW1wb3J0LXNwa2kta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBd
Ci1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1zcGtpLWtleS5o
dG1sIFsgUGFzcyBdCi1bIEhpZ2hTaWVycmErIF0gY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1w
c3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBjcnlwdG8v
d29ya2Vycy9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5LXZlcmlmeS5odG1sIFsgUGFzcyBdCi1b
IEhpZ2hTaWVycmErIF0gaHR0cC93cHQvY3J5cHRvL3JzYS1wc3MtY3Jhc2guYW55Lmh0bWwgWyBQ
YXNzIF0KLVsgSGlnaFNpZXJyYSsgXSBodHRwL3dwdC9jcnlwdG8vcnNhLXBzcy1jcmFzaC5hbnku
d29ya2VyLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2Vi
Q3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtl
ci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3Rlc3Rfd3JhcEtleV91bndyYXBLZXkuaHR0
cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUt
ZXhwb3J0LWtleS1qd2stc2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
Z2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0
bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3MgXQor
Y3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1s
IFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2st
c2hhNTEyLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBv
cnQta2V5LXBrY3M4Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0
ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdl
bmVyYXRlLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3
ay1wcml2YXRlLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0
LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVzYWdlcy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxl
L3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRv
L3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyMjQuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyNTYuaHRt
bCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1z
aGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVi
bGljLWtleS1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWlt
cG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQtcGtjczgta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQt
c3BraS1rZXktZW1wdHktdXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KK2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KK2h0dHAvd3B0L2NyeXB0
by9yc2EtcHNzLWNyYXNoLmFueS5odG1sIFsgUGFzcyBdCitodHRwL3dwdC9jcnlwdG8vcnNhLXBz
cy1jcmFzaC5hbnkud29ya2VyLmh0bWwgWyBQYXNzIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzIz
NTI3MDI+IFJFR1JFU1NJT046IGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFy
YW5jZXMgTGF5b3V0VGVzdHMgZmFpbGluZwotWyBIaWdoU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxN
ZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHkuaHRtbCBbIEZhaWx1cmUgXQot
WyBIaWdoU2llcnJhKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5j
ZXMtcmF0aW5nLXJlbGV2YW5jeS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2RvbS9IVE1MTWV0ZXJF
bGVtZW50L21ldGVyLWFwcGVhcmFuY2VzLWNhcGFjaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3Qv
ZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5o
dG1sIFsgRmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNjIwMDI0PiBSRUdSRVNTSU9O
OiBMYXlvdXRUZXN0cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5o
dG1sIGFuZCBpbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIGFy
ZSBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXRoLnN0
cm9rZS5zY2FsZTIuaHRtbCBbIEZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3cz
Yy9jYW52YXMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2NhbnZhcy9w
aGlsaXAvdGVzdHMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9y
dGVkL3czYy9jYW52YXMvMmQucGF0aC5zdHJva2Uuc2NhbGUyLmh0bWwgWyBGYWlsdXJlIF0KIAog
IyA8cmRhcjovL3Byb2JsZW0vMzI3OTk1NzM+IFJFR1JFU1NJT046IExheW91dFRlc3QgZmFzdC90
ZXh0L2lwYS10b25lLWxldHRlcnMuaHRtbCBpcyBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gZmFz
dC90ZXh0L2lwYS10b25lLWxldHRlcnMuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC90ZXh0L2lwYS10
b25lLWxldHRlcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS8zMjc5OTYy
ND4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdHMgY3NzMy9mb250LXZhcmlhbnQtcGV0aXRlLWNhcHMt
c3ludGhlc2lzLWNvdmVyYWdlLmh0bWwgYW5kIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNhcHMt
c3ludGhlc2lzLWNvdmVyYWdlLmh0bWwgYXJlIGZhaWxpbmcKLVsgSGlnaFNpZXJyYSsgXSBjc3Mz
L2ZvbnQtdmFyaWFudC1wZXRpdGUtY2Fwcy1zeW50aGVzaXMtY292ZXJhZ2UuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotWyBIaWdoU2llcnJhKyBdIGNzczMvZm9udC12YXJpYW50LXNtYWxsLWNh
cHMtc3ludGhlc2lzLWNvdmVyYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2NzczMvZm9u
dC12YXJpYW50LXBldGl0ZS1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFnZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitjc3MzL2ZvbnQtdmFyaWFudC1zbWFsbC1jYXBzLXN5bnRoZXNpcy1jb3ZlcmFn
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyNzk5NTk2
PiBSRUdSRVNTSU9OOiBMYXlvdXRUZXN0cyBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50
LmludGVycG9sYXRlLnNvbGlkLmh0bWwgYW5kIGltcG9ydGVkL3czYy9jYW52YXMvMmQuZ3JhZGll
bnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBmYWlsaW5nCi1bIEhpZ2hTaWVycmErIF0gY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVy
ZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5ncmFkaWVudC5pbnRl
cnBvbGF0ZS5zb2xpZC5odG1sIFsgRmFpbHVyZSBdCitjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdy
YWRpZW50LmludGVycG9sYXRlLnNvbGlkLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy9j
YW52YXMvMmQuZ3JhZGllbnQuaW50ZXJwb2xhdGUuc29saWQuaHRtbCBbIEZhaWx1cmUgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS8zMjgwMDA5NT4gUkVHUkVTU0lPTjogTGF5b3V0VGVzdCBpbXBvcnRl
ZC9ibGluay9mYXN0L2dyYWRpZW50cy9ncmFkaWVudC10cmFuc3BhcmVuY3kuaHRtbCBpcyBmYWls
aW5nCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvYmxpbmsvZmFzdC9ncmFkaWVudHMvZ3JhZGll
bnQtdHJhbnNwYXJlbmN5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL2JsaW5r
L2Zhc3QvZ3JhZGllbnRzL2dyYWRpZW50LXRyYW5zcGFyZW5jeS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMyODI2MzkxPiBMYXlvdXRUZXN0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3NldHJlcXVlc3RoZWFkZXItY29udGVudC10eXBl
Lmh0bSBpcyBmYWlsaW5nIG9uIEhpZ2ggU2llcnJhCi1bIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc2V0cmVxdWVzdGhlYWRlci1jb250ZW50LXR5cGUu
aHRtIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zZXRy
ZXF1ZXN0aGVhZGVyLWNvbnRlbnQtdHlwZS5odG0gWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3By
b2JsZW0vMzI4NjQzMDY+IFVuc2tpcCBhZnRlciBib3RzIGhhdmUgQ1RGb250Q29weVBoeXNpY2Fs
Rm9udCgpCi1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L3N5c3RlbS1mb250LWphcGFuZXNlLXN5
bnRoZXRpYy1pdGFsaWMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQv
c3lzdGVtLWZvbnQtamFwYW5lc2Utc3ludGhldGljLWl0YWxpYy5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogIyBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHZhcmlhdGlvbiBmb250
cyBhcmUgZGlzYWJsZWQgb24gT1NlcyB3aGljaCBkb24ndCBzdXBwb3J0IHRoZW0uIFNvLAogIyB0
aGUgdGVzdCBzaG91bGQgYmUgc2tpcHBlZCBvbiBPU2VzIHdoaWNoIGRvIHN1cHBvcnQgdGhlbS4g
QXMgc29vbiBhcyBhbGwgT1NlcyBzdXBwb3J0IHRoZW0sCiAjIHdlIHNob3VsZCBkZWxldGUgdGhl
IHRlc3QuCi1bIEhpZ2hTaWVycmErIF0gZmFzdC90ZXh0L2ZvbnQtdmFyaWF0aW9ucy1mZWF0dXJl
LWRldGVjdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3RleHQvZm9udC12YXJp
YXRpb25zLWZlYXR1cmUtZGV0ZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8
cmRhcjovL3Byb2JsZW0vMzM0Mzc1OTc+IE11bHRpcGxlIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2ggYXJlIGZhaWxpbmcgb24gSGlnaCBTaWVycmEKLVsgSGlnaFNpZXJyYSsg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0
LWhlYWRlcnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBdCi1bIEhpZ2hTaWVycmErIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFk
ZXJzLmFueS5odG1sIFsgRmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuYW55Lndvcmtlci5odG1sIFsgRmFpbHVy
ZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1
ZXN0LWhlYWRlcnMuYW55Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyA8cmRhcjovL3Byb2JsZW0vMzM3
MzEwODY+Ci1bIEhpZ2hTaWVycmErIF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RpbWUt
bGFiZWxzLXN1cHBvcnQvZWxhcHNlZC10aW1lLmh0bWwgWyBTa2lwIF0KK21lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy90aW1lLWxhYmVscy1zdXBwb3J0L2VsYXBzZWQtdGltZS5odG1sIFsgU2tp
cCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzMzODUwMTg5PgotWyBIaWdoU2llcnJhKyBdIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbCBb
IEZhaWx1cmUgXQoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZsYXRlLWZyYW1l
LXBhcmFtZXRlci5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzczMTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZm9ybS1l
bGVtZW50L2Zvcm0tZWxlbWVudHMtZmlsdGVyLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtMTUyMCwx
OSArMTUwNiw5IEBAIHdlYmtpdC5vcmcvYi8xNzc4MjYgaW5zcGVjdG9yL2RvbS9jc3AtYmlnNS1o
YXNoLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTc1OTk4IGh0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNzcy13aXRoLXNlY3VyZS1jb29raWVz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jIEFWQ29udGVudEtleVNlc3Npb24gbm90IGF2YWls
YWJsZSBwcmUtSGlnaCBTaWVycmEKLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9mcHMtY3JlYXRlTWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0g
cGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9mcHMtcmVxdWVzdE1lZGlhS2V5U3lz
dGVtQWNjZXNzLmh0bWwgWyBTa2lwIF0KLVsgU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9mcHMtY3JlYXRlU2Vzc2lvbi5odG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBd
IHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5o
dG1sIFsgU2tpcCBdCi1bIFNpZXJyYSBdIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvZnBzLWVuY3J5cHRlZC1ldmVudC5odG1sIFsgU2tpcCBdCi0KICMgVXNlci1pbnN0YWxsZWQg
Zm9udCBpbmZyYXN0cnVjdHVyZSBpcyBvbnkgcHJlc2VudCBvbiBjZXJ0YWluIE9TZXMuCi13ZWJr
aXQub3JnL2IvMTgwMDYyIFsgU2llcnJhIEhpZ2hTaWVycmEgXSBmYXN0L3RleHQvdXNlci1pbnN0
YWxsZWQtZm9udHMvZGlzYWJsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTgwMDYyIGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlw
dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgwMDYyIGZhc3QvdGV4
dC91c2VyLWluc3RhbGxlZC1mb250cy9zaGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzE4NzIyOCBbIFNpZXJyYSBIaWdoU2llcnJhIF0gZmFzdC90ZXh0L3VzZXIt
aW5zdGFsbGVkLWZvbnRzL2xvY2FsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogCiB3ZWJr
aXQub3JnL2IvMTgwNTYwIGFjY2Vzc2liaWxpdHkvbWFjL2h0bWw1LWlucHV0LW51bWJlci5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIApAQCAtMTU0NiwxMCArMTUyMiw2IEBAIHdlYmtpdC5vcmcvYi8x
ODE0NzkgaHR0cC90ZXN0cy9taXNjL3Nsb3ctbG9hZGluZy1hbmltYXRlZC1pbWFnZS5odG1sIFsg
UGFzcyBJbWFnCiAKIHdlYmtpdC5vcmcvYi8xODE0OTQgYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1t
dWx0aXBsZS1saXZlcmVnaW9ucy1ub3RpZmljYXRpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LSMgQSBsb3Qgb2YgR1BVIGhhcmR3YXJlIHNpbXBseSBjcmFzaGVzIHdpdGggdGhlc2UgdGVzdHMs
IHNpbmNlIHRoZXkgYWxsb2NhdGUgYSBsb3Qgb2YgbWVtb3J5LgotIyBUaGV5IGFyZSBlbmFibGVk
IG9uIHN5c3RlbXMgdGhhdCBpbnN0ZWFkIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZLgotWyBTaWVy
cmEgXSBmYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXdpdGgtc3Vic2VxdWVudC1k
cmF3cy5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8xODAyNjAgaHR0cC93cHQvcmVzb3Vy
Y2UtdGltaW5nL3J0LXJlc291cmNlcy1wZXItd29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTgxODMwIFsgRGVidWcgXSBtZWRpYS92aWRlby1tYWluLWNvbnRlbnQt
YWxsb3ctdGhlbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtMTU2Miw3ICsxNTM0LDcg
QEAgd2Via2l0Lm9yZy9iLzE4MTU2NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb24KIAogd2Via2l0Lm9yZy9iLzE4MTk2OSBmYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTgxODMxIFsg
SGlnaFNpZXJyYSsgXSBmYXN0L2Zvcm1zL3NlYXJjaGZpZWxkLWhlaWdodHMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTgxODMxIGZhc3QvZm9ybXMvc2VhcmNoZmllbGQtaGVp
Z2h0cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3Mzk0NiBbIERlYnVn
IF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2Z1bGxzY3JlZW4tc3VwcG9ydC9mdWxsc2Ny
ZWVuLXN1cHBvcnQtcHJlc3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKQEAgLTE1NzksMTUgKzE1
NTEsMTIgQEAgd2Via2l0Lm9yZy9iLzE4Mzc2NCBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0tY29udHJv
bC1jb2xvcnMuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTg0MTE2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4
Ny1ldmVudF9vcmRlci5odG0gWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc3NjE2
IFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNv
bnRhaW5zLWN1cnJlbnRUaW1lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE3
NzYxNiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJl
bnRUaW1lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTg0NjEwIG1lZGlh
L3ZpZGVvLXZvbHVtZS1zbGlkZXItZHJhZy5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogd2Via2l0
Lm9yZy9iLzE4NDYxMiBtZWRpYS9hdWRpby1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIAotIyBGb250IGNvbGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGV2
ZXJ5IE9TLgotd2Via2l0Lm9yZy9iLzE4NDYyNCBbIFNpZXJyYSBdIGZhc3QvdGV4dC9mb250LWNv
bGxlY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg0NDU3
IG1lZGlhL3ZpZGVvLWFzcGVjdC1yYXRpby5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0
Lm9yZy9iLzE4NDYwOSBwbGF0Zm9ybS9tYWMvbWVkaWEvYXVkaW8tc2Vzc2lvbi1jYXRlZ29yeS12
aWRlby10cmFjay1jaGFuZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC0xNTk5LDEzICsxNTY4
LDYgQEAgd2Via2l0Lm9yZy9iLzE4NTY1OSBbIERlYnVnIF0gYW5pbWF0aW9ucy9uZWVkcy1sYXlv
dXQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHUKICMgbWFjT1MgZG9lc24ndCBoYXZlIElDVSB2
NTkKIHdlYmtpdC5vcmcvYi8xODUzNzUganMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBh
cnRzLmh0bWwgWyBGYWlsdXJlIF0KIAotIyA8PSBIaWdoIFNpZXJyYSBkb2Vzbid0IHN1cHBvcnQg
TW9kZXJuIEVNRQotWyBIaWdoU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9mcHMtY3JlYXRlTWVkaWFLZXlzLmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBs
YXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWNyZWF0ZVNlc3Npb24uaHRtbCBb
IFNraXAgXQotWyBIaWdoU2llcnJhIF0gcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRp
YS9mcHMtZW5jcnlwdGVkLWV2ZW50Lmh0bWwgWyBTa2lwIF0KLVsgSGlnaFNpZXJyYSBdIHBsYXRm
b3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZnBzLWdlbmVyYXRlUmVxdWVzdC5odG1sIFsg
U2tpcCBdCi1bIEhpZ2hTaWVycmEgXSBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L2Zwcy1yZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaHRtbCBbIFNraXAgXQotCiAjIEltcG9y
dGVkIGNzcy10ZXh0IHRlc3Qgc3VpdGUgZnJvbSBXUFQKIHdlYmtpdC5vcmcvYi8xODMyNTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvaTE4bi9jc3MzLXRleHQt
bGluZS1icmVhay1vcGNsbnMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQv
aTE4bi9jc3MzLXRleHQtbGluZS1icmVhay1vcGNsbnMtMDExLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KQEAgLTE2MjksNTYgKzE1OTEsNTAgQEAgZmFzdC9jc3MvcHNldWRvLXZpc2l0ZWQtYmFj
a2dyb3VuZC1jb2xvci1vbi1pbnB1dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8xODczOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQv
aW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtb3JpZ2luLnN1Yi5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAotWyBNb2phdmUrIF0gaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3Mg
XQoraHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZSBbIFBhc3MgXQogCiAjIEZJWE1FOiBNYXJr
IGFzIFBhc3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNDcxNjU5Mzk+IGlzIGZpeGVkLgotWyBNb2ph
dmUrIF0gaHR0cC90ZXN0cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5LWNvb2tpZXMu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9jb29raWVzL29ubHktYWNjZXB0LWZpcnN0LXBhcnR5
LWNvb2tpZXMuaHRtbCBbIFNraXAgXQogCiAjIEZJWE1FOiBNYXJrIGFzIFBhc3Mgb25jZSB0aGUg
Zml4IGZvciA8cmRhcjovL3Byb2JsZW0vNDIyNTUyNTE+IGlzIHNoaXBwZWQuCi1bIE1vamF2ZSsg
XSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1jcm9zcy1zaXRl
LWNvb2tpZXMucGhwIFsgU2tpcCBdCi1bIE1vamF2ZSsgXSBodHRwL3Rlc3RzL2Nvb2tpZXMvc2Ft
ZS1zaXRlL3NldC1maXJzdC1wYXJ0eS1zYW1lLXNpdGUtY29va2llcy5waHAgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0LXBhcnR5LWNyb3NzLXNpdGUtY29v
a2llcy5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0LWZpcnN0
LXBhcnR5LXNhbWUtc2l0ZS1jb29raWVzLnBocCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxl
bS8zNjYzOTExNz4gUkVHUkVTU0lPTiAoTW9qYXZlKTogTGF5b3V0VGVzdCBzdmcvY3VzdG9tL3N1
YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgaXMgZmFpbGluZwotWyBNb2phdmUrIF0g
c3ZnL2N1c3RvbS9zdWJwYXRocy1tb3ZldG8tb25seS1yZW5kZXJpbmcuc3ZnIFsgRmFpbHVyZSBd
CitzdmcvY3VzdG9tL3N1YnBhdGhzLW1vdmV0by1vbmx5LXJlbmRlcmluZy5zdmcgWyBGYWlsdXJl
IF0KIAogIyA8cmRhcjovL3Byb2JsZW0vNDA0OTgyOTA+IFJFR1JFU1NJT04gKE1vamF2ZSk6IEhU
TUxNZXRlckVsZW1lbnQgTGF5b3V0VGVzdHMgZmFpbGluZwotWyBNb2phdmUrIF0gZmFzdC9kb20v
SFRNTE1ldGVyRWxlbWVudC9tZXRlci1ib3VuZGFyeS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQot
WyBNb2phdmUrIF0gZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXJlcGFp
bnQtb24tdXBkYXRlLXZhbHVlLmh0bWwgWyBGYWlsdXJlIF0KLVsgTW9qYXZlKyBdIGZhc3QvZG9t
L0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCi1bIE1vamF2
ZSsgXSBmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwgWyBGYWls
dXJlIF0KLVsgTW9qYXZlKyBdIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVz
Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYm91bmRh
cnktdmFsdWVzLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0
ZXItZWxlbWVudC1yZXBhaW50LW9uLXVwZGF0ZS12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCitmYXN0
L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQorZmFz
dC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1vcHRpbXVtcy5odG1sIFsgRmFpbHVyZSBdCitm
YXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXN0eWxlcy5odG1sIFsgRmFpbHVyZSBdCiAK
ICMgPHJkYXI6Ly9wcm9ibGVtLzQxMTAzMjYwPiBSRUdSRVNTSU9OIChNb2phdmUpOiBUaHJlZSB0
ZXh0IHRlc3RzIGZhaWxpbmcgd2l0aCBzbWFsbCBhbnRpYWxpYXNpbmcoPykgZGlmZnMKLVsgTW9q
YXZlKyBdIGZhc3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1bIE1vamF2ZSsgXSBpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC90ZXh0LXNoYXBpbmctYXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLVsgTW9qYXZl
KyBdIGltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0
aW9uaW5nLXdpdGgtY29tYmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQot
IyA8IE1vamF2ZSB1c2VzIGZvbnQgc21vb3RoaW5nLgotWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNv
bXBvc2l0aW5nL2NvbnRlbnRzLWZvcm1hdC9zdWJwaXhlbC1hbnRpYWxpYXNlZC10ZXh0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK2Zhc3QvaW5saW5lL2JyZWFrLWJldHdlZW4tbm9ici5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC90ZXh0LXNoYXBpbmctYXJhYmljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9y
dGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3ZlcnRpY2FsLXBvc2l0aW9uaW5nLXdp
dGgtY29tYmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyA8IE1vamF2
ZSBkb2Vzbid0IHN1cHBvcnQgdGhlIENHIG5lZWRlZCBmb3IgQ29uaWMgR3JhZGllbnRzCi1bIE1v
amF2ZSsgXSBodHRwL3dwdC9jc3MvY3NzLWltYWdlcy00L2NvbmljLWdyYWRpZW50LXBhcnNpbmcu
aHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5n
Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQ
YXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLW9mZi1jZW50ZXIuaHRtbCBb
IFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29uaWMtY2VudGVyLW91dHNpZGUt
Ym94Lmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLWV4dGVu
ZGVkLXN0b3BzLmh0bWwgWyBQYXNzIF0KLVsgTW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2Nvbmlj
LWZyb20tYW5nbGUuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0gZmFzdC9ncmFkaWVudHMvY29u
aWMtcmVwZWF0aW5nLWxhc3Qtc3RvcC5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgUGFzcyBdCi1bIE1vamF2ZSsgXSBm
YXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBd
Ci1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFzcyBd
Ci1bIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3Mg
XQoraHR0cC93cHQvY3NzL2Nzcy1pbWFnZXMtNC9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwg
WyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy5odG1sIFsgUGFzcyBdCitm
YXN0L2dyYWRpZW50cy9jb25pYy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1v
ZmYtY2VudGVyLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLWNlbnRlci1vdXRz
aWRlLWJveC5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1leHRlbmRlZC1zdG9w
cy5odG1sIFsgUGFzcyBdCitmYXN0L2dyYWRpZW50cy9jb25pYy1mcm9tLWFuZ2xlLmh0bWwgWyBQ
YXNzIF0KK2Zhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy1sYXN0LXN0b3AuaHRtbCBbIFBh
c3MgXQorZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFBhc3MgXQor
ZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3Mg
XQorZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9ncmFk
aWVudHMvY29uaWMtdHdvLWhpbnRzLmh0bWwgWyBQYXNzIF0KIFsgTW9qYXZlIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9tdWx0aXBsZS1wb3NpdGlvbi1j
b2xvci1zdG9wLWNvbmljLmh0bWwgWyBQYXNzIF0KIAogIyBEYXJrIE1vZGUgaXMgTW9qYXZlIGFu
ZCBsYXRlci4KLVsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KLVsgTW9qYXZlKyBd
IGNzcy1kYXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQotWyBNb2phdmUrIF0gaW5zcGVj
dG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQotWyBNb2phdmUrIF0g
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsg
UGFzcyBdCi0KLSMgVGVzdCBEYXJrIE1vZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24g
b2xkZXIgc3lzdGVtcy4KLVsgU2llcnJhIEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVy
LXN5c3RlbXMgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUgWyBQYXNzIF0KK2Nzcy1kYXJrLW1vZGUv
b2xkZXItc3lzdGVtcyBbIFNraXAgXQoraW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFu
Y2UuaHRtbCBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xv
ci1maWx0ZXJlZC5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8xODk2ODYgd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13
aXRoLWFycmF5LWJ1ZmZlci12aWV3Lmh0bWwgWyBTbG93IF0KIApAQCAtMTY5NCwxNCArMTY1MCw2
IEBAIHdlYmtpdC5vcmcvYi8xOTA4OTIgWyBEZWJ1ZyBdIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
Mi90ZXh0dXJlcy9taXNjL3RleC11bnBhY2stCiAKIHdlYmtpdC5vcmcvYi8xOTA5NzYgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2hhbmdl
dHlwZS1wbGF5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsg
SGlnaFNpZXJyYSBdIHdlYmdwdSBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hT
aWVycmEgXSBpbnNwZWN0b3IvY2FudmFzL2NyZWF0ZS1jb250ZXh0LXdlYmdwdS5odG1sIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMv
cmVxdWVzdENsaWVudE5vZGVzLXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5
Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvcmVxdWVzdFNoYWRlclNvdXJjZS13
ZWJncHUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5OTI3NSBbIEhpZ2hTaWVycmEgXSBp
bnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDb250ZXh0LXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMTk5Mjc1IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJv
Z3JhbS1hZGQtcmVtb3ZlLXdlYmdwdS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTk5Mjc1
IFsgSGlnaFNpZXJyYSBdIGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLXdlYmdwdS5odG1s
IFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8xODk2ODAgcGxhdGZvcm0vbWFjL21lZGlhL2F1ZGlv
LXNlc3Npb24tY2F0ZWdvcnktdmlkZW8tcGF1c2VkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3
ZWJraXQub3JnL2IvMTk1NDY2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeS1zdGF0ZXMvYXV0
b3BsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCkBAIC0xNzI5LDcgKzE2NzcsNyBAQCB3
ZWJraXQub3JnL2IvMTk2MTEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1s
L3JlbGF0aW9ucy9jc3Mtc3R5bGluZwogIyBGbGFreSBmb3Igbm9uIE1hdGhNTCBjb3JlLgogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9z
Y3JpcHRzL2NyYW1wZWQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTk2NTAgWyBIaWdoU2llcnJhKyBdIGFjY2Vzc2liaWxpdHkvbWFjL3ByZXNzLW5vdC13b3JrLWZv
ci1kaXNhYmxlZC1tZW51LWxpc3QuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTk2NTAgYWNjZXNzaWJpbGl0eS9tYWMvcHJlc3Mtbm90LXdvcmstZm9yLWRpc2FibGVkLW1lbnUt
bGlzdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBTa2lwIGlPUy1zcGVjaWZpYyBQb2ludGVy
IEV2ZW50cyBXUFQgdGVzdHMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50
ZXJldmVudHMvcG9pbnRlcmV2ZW50X2NoYW5nZS10b3VjaC1hY3Rpb24tb25wb2ludGVyZG93bl90
b3VjaC5odG1sIFsgU2tpcCBdCkBAIC0xNzQ0LDE2ICsxNjkyLDE2IEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyZXZlbnRfcG9pbnRlcm91dF9w
ZW4uaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xOTc0NzMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9yZXNvdXJjZS10aW1pbmcvcmVzb3VyY2UtdGltaW5nLWxldmVsMS5zdWIuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xMzY2MjcgWyBNb2phdmUrIF0gbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTM2NjI3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwu
aHRtbCBbIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS80NzA4ODkzOT4KLVsgTW9qYXZl
KyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtbWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9tZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZVRvU2NyaXB0UHJvY2Vzc29yVGVzdC5odG1sICBbIEZhaWx1cmUgXQotWyBNb2ph
dmUrIF0gd2ViYXVkaW8vcmVhbHRpbWVhbmFseXNlci1mZnQtc2NhbGluZy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KLVsgTW9qYXZlKyBdIHdlYmF1ZGlvL29zY2lsbGF0b3Itc2luZS5odG1sIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLW1lZGlhZWxlbWVudGF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvbWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VUb1NjcmlwdFByb2Nlc3NvclRlc3QuaHRtbCAgWyBGYWlsdXJlIF0KK3dlYmF1
ZGlvL3JlYWx0aW1lYW5hbHlzZXItZmZ0LXNjYWxpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3
ZWJhdWRpby9vc2NpbGxhdG9yLXNpbmUuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTk5
MDEzIFsgRGVidWcgTW9qYXZlKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
c29ja2V0cy9DcmVhdGUtU2VjdXJlLXZlcmlmeS11cmwtc2V0LW5vbi1kZWZhdWx0LXBvcnQuYW55
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5OTAxMyBbIERlYnVnIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL0NyZWF0ZS1TZWN1cmUtdmVy
aWZ5LXVybC1zZXQtbm9uLWRlZmF1bHQtcG9ydC5hbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8xOTA4ODIgWyBNb2phdmUrIF0gYW5pbWF0aW9ucy9jaGFuZ2Utb25lLWFu
aW0uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTkwODgyIGFuaW1hdGlvbnMv
Y2hhbmdlLW9uZS1hbmltLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIDxyZGFyOi8vcHJvYmxl
bS80ODc4MTA5OD4KIFsgQ2F0YWxpbmErIF0gZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJh
dy5odG1sIFsgUGFzcyBdCkBAIC0xODQ3LDE0ICsxNzk1LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDI1
MjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQvcGF0aC1vYmplY3Rz
LzJkLnBhCiAKIHdlYmtpdC5vcmcvYi8yMDI1OTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy8yZGNvbnRleHQvbGluZS1zdHlsZXMvMmQubGluZS5jYXAucm91bmQuaHRtbCBbIEZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMTk4ODY3IFsgTW9qYXZlKyBdIHdlYmdsL21hbnktY29udGV4
dHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE5ODg2NyB3ZWJnbC9tYW55LWNvbnRleHRz
Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzIwMzE3MSBpbnNwZWN0b3IvbGF5ZXJzL2xh
eWVycy1mb3Itbm9kZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMzQx
NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvYmVm
b3JlLWxvYWQtMDAxLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwMzMwNSBbIEhp
Z2hTaWVycmEgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNpdGlvbnMvcHJvcGVydGllcy12YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjAzMzA1IFsgSGlnaFNpZXJyYSBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVy
aXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NyBbIERlYnVn
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL2V2
ZW50LWRpc3BhdGNoLnRlbnRhdGl2ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMDMzNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IApAQCAtMTg3MCw3ICsxODE2LDcgQEAgd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBd
IGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHUKIHdlYmtpdC5v
cmcvYi8yMDQ4MjAgWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZW1vamktZ2VuZGVyLTguaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDgyMCBbIENhdGFsaW5hKyBdIGZh
c3QvdGV4dC9lbW9qaS1nZW5kZXItOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8yMDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0
LW1lbnUtc2VsZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MDQyNDYgWyBDYXRhbGluYSBdIGVkaXRpbmcvbWFjL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtc2Vs
ZWN0LWVkaXRhYmlsaXR5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA0
MjQ3IFsgQ2F0YWxpbmEgXSB3ZWJhdWRpby9zaWxlbmNlLWFmdGVyLXBsYXliYWNrLmh0bWwgWyBG
YWlsdXJlIF0KIApAQCAtMTg4NSwyMCArMTgzMSwyMCBAQCB3ZWJraXQub3JnL2IvMjAyMDY0IHdl
YmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwgWyBQYXNz
CiB3ZWJraXQub3JnL2IvMjA1NzU3IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3Rl
eHR1cmUtdXBsb2FkLXNpemUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjA1
NzU2IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9nbHNsMy9uby1hdHRyaWJ1dGUtdmVydGV4LXNo
YWRlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNTg2MiBbIE1vamF2
ZSsgXSB3ZWJncHUvd2hsc2wvd2hpbGUtbG9vcC1icmVhay5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDU4NjUgWyBNb2phdmUrIF0gd2ViZ3B1L3dobHNsL2Vu
c3VyZS1wcm9wZXItdmFyaWFibGUtbGlmZXRpbWUtMi5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMDU4NjcgWyBNb2phdmUrIF0gd2ViZ3B1L2RyYXctaW5kZXhl
ZC10cmlhbmdsZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjA1ODYyIHdlYmdwdS93aGxzbC93aGlsZS1sb29wLWJyZWFrLmh0bWwgWyBQYXNzIEltYWdlT25s
eUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNTg2NSB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Bl
ci12YXJpYWJsZS1saWZldGltZS0yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIwNTg2NyB3ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sIFsgUGFz
cyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE5NzIwNCB3ZWJleHBvc2VkL2Nz
cy1wcm9wZXJ0aWVzLWJlaGluZC1mbGFncy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUg
bmF2aWdhdG9yLmxhbmd1YWdlIHRlc3RzIHJlbHkgb24gZnVuY3Rpb25hbGl0eSBvbmx5IGF2YWls
YWJsZSBpbiByZWNlbnQgcmVsZWFzZXMgb2YgbWFjT1MgQ2F0YWxpbmEgYW5kIG9ud2FyZC4KLXdl
YmtpdC5vcmcvYi8yMDAwNDMgWyBTaWVycmEgSGlnaFNpZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1YWdl
IFsgUGFzcyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDAwNDMgWyBNb2phdmUgQ2F0YWxpbmEg
XSBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvbmF2aWdhdG9yLWxhbmd1
YWdlIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5zdmcg
WyBGYWlsdXJlIFBhc3MgXQogCiAjIExvY2FsZS1zcGVjaWZpYyBzaGFwaW5nIGlzIG9ubHkgZW5h
YmxlZCBvbiBjZXJ0YWluIE9TZXMuCi13ZWJraXQub3JnL2IvNzc1NjggWyBTaWVycmEgSGlnaFNp
ZXJyYSBNb2phdmUgQ2F0YWxpbmEgXSBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzc3NTY4IFsgU2llcnJhIEhpZ2hTaWVycmEg
TW9qYXZlIENhdGFsaW5hIF0gZmFzdC90ZXh0L2xvY2FsZS1zaGFwaW5nLWNvbXBsZXguaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzc3NTY4IFsgTW9qYXZlIENhdGFsaW5h
IF0gZmFzdC90ZXh0L2xvY2FsZS1zaGFwaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi83NzU2OCBbIE1vamF2ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9sb2NhbGUtc2hh
cGluZy1jb21wbGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIw
MzIyMiBzdmcvd2ljZC9yaWdodHNpemluZy1ncmlkLnhodG1sIFsgUGFzcyBGYWlsdXJlIF0KIApA
QCAtMjAxOSw4ICsxOTY1LDggQEAgd2Via2l0Lm9yZy9iLzIwOTA4NCBjc3MzL3NlbGVjdG9yczMv
eG1sL2NzczMtbW9kc2VsLWQ0LnhtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA3
MTUwIHBsYXRmb3JtL21hYy93ZWJydGMvY2FwdHVyZUNhbnZhcy13ZWJydGMtc29mdHdhcmUtZW5j
b2Rlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBUaGUgbGluZSBicmVha2luZyBydWxlcyBj
aGFuZ2VkIGluIElDVSA2Ni4gV2UndmUgdXBkYXRlZCB0aGUgdGVzdHMgdG8gbWF0Y2gsIGJ1dCBv
bGQgcGxhdGZvcm1zIHdvbid0IGdldCB1cGRhdGVkIGxpbmUgYnJlYWtpbmcgcnVsZXMuCi13ZWJr
aXQub3JnL2IvMjA5MjUwIFsgU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWsvbGluZS1icmVhay1ub3JtYWwtMDE1LnhodCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwOTI1MCBbIFNpZXJyYSsgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC9saW5lLWJyZWFrL2xpbmUtYnJl
YWstc3RyaWN0LTAxNS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMDky
NTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvbGluZS1icmVh
ay9saW5lLWJyZWFrLW5vcm1hbC0wMTUueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjA5MjUwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0
L2xpbmUtYnJlYWsvbGluZS1icmVhay1zdHJpY3QtMDE1LnhodCBbIEltYWdlT25seUZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMjA3ODU4IGZhc3QvY2FudmFzL3dlYmdsL3NpbXVsYXRlZC12ZXJ0
ZXhBdHRyaWIwLWludmFsaWQtaW5kaWNpZXMuaHRtbCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9tYWMvaW5wdXQvZmlyc3RyZWN0Zm9yY2hh
cmFjdGVycmFuZ2Utc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL21hYy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNjMTE1MTkwZmY3NGQ1
YjhmZTRjYzI2ZDRiMmQyNjRjMmVlNWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL21hYy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1zdHlsZWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0
aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAotRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCi1FRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxIG9mICN0ZXh0ID4gSSA+IEIgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IEkgPiBCID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLTEyMzQ1NgotMTAsNTcyLDAsMTgKLTE4LDU3MiwwLDE4Ci02MSw1NzIsMCwxOAotNjEs
NTcyLDAsMTgKLTEwLDU3Miw4LDE4Ci01Miw1NzIsOSwxOAotNTIsNTcyLDksMTgKLTUyLDU3Miw5
LDE4Ci0xMCw1NzIsNTEsMTgKLTEwLDU3Miw1MSwxOAotMTAsNTcyLDUxLDE4Ci0xOCw1NzIsNDMs
MTgKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKLTAsMCwwLDAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1y
YW5nZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKaW5kZXgg
NWFhY2UwNzQwMTAxMDYwZWNjYzQ5MjA1NzQ4N2JjNmJkODMwMzczOS4uNzU4NThjZTY1MzhhN2M1
MmQwOGRmNWMzZDMyYzQxMjFlMDQyNzQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1
dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS1leHBlY3RlZC50eHQKQEAgLTgsNSArOCw1IEBA
IFRlc3RpbmcgdGV4dCB3aXRoIGJyIGVsZW1lbnRzICg8ZGl2Pjxicj48L2Rpdj5oZWxsbzxicj4p
CiAoMSwgMTAwKTogaGVsbG8KICg2LCAxKToKICg3LCAxKToKLSgxMDAsIDApOiB1bmRlZmluZWQK
LSgxMDAsIDEwMCk6IHVuZGVmaW5lZAorKDEwMCwgMCk6CisoMTAwLCAxMDApOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLTAwMS5odG1sCmluZGV4IDNhOTMwMzI4
ZTEwNjAzOWYxNTMxM2Y0ZGM0MmExNDRlZGQ4ZWI0NWIuLjk0MzFhMzllNGU0NTNiMGJhOGU2NTUw
ODEyYjc3OGYzMmJkZjVlZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS0wMDEuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZy
b20tcmFuZ2UtMDAxLmh0bWwKQEAgLTM0LDggKzM0LDggQEAgYm9keSB7IG1hcmdpbjogMTA7IHBh
ZGRpbmc6IDAgfQogICAgICAgICAgICAgbG9nKCIoMSwgMTAwKTogIiArIHRleHRJbnB1dENvbnRy
b2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgxLCAxMDApLnN0cmluZygpKTsKICAg
ICAgICAgICAgIGxvZygiKDYsIDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVk
U3Vic3RyaW5nRnJvbVJhbmdlKDYsIDEpLnN0cmluZygpKTsKICAgICAgICAgICAgIGxvZygiKDcs
IDEpOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdl
KDcsIDEpLnN0cmluZygpKTsgLy8gc2hvdWxkIGJlIGVtcHR5Ci0gICAgICAgICAgICBsb2coIigx
MDAsIDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDEwMCwgMCkpOyAvLyBzaG91bGQgYmUgdW5kZWZpbmVkCi0gICAgICAgICAgICBsb2coIigx
MDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgbG9n
KCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICAgICBsb2coIigx
MDAsIDEwMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9t
UmFuZ2UoMTAwLCAxMDApKTsgLy8gc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1y
YW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0
dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ3OTdkMjIz
MTFjMWUzZjllNTZlMTdlYTE3MzU4ZWExYzI5ZGQ2ZTYuLjY4MDEyNzkwNmMxZTg2N2JiZjZlODEy
NDE3NmNlMTIxZTQ2ODNiZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L3RleHQvYXR0cmlidXRlZC1zdWJzdHJpbmctZnJvbS1yYW5nZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmlu
Zy1mcm9tLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtNyw4ICs3LDggQEAgVGVzdGluZyBzdHlsZWQg
dGV4dCAoMTI8Yj4zPGk+NDU2PC9pPjwvYj4pCiAoMCwgMTAwKTogMTIzNDU2CiAoNSwgMSk6IDYK
ICg1LCAyKTogNgotKDEwMCwgMCk6IHVuZGVmaW5lZAotKDEwMCwgMTAwKTogdW5kZWZpbmVkCiso
MTAwLCAwKTogCisoMTAwLCAxMDApOiAKIAogVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5f
Mi5fXzMuX19fNF81KQogdG90YWwgbGVuZ3RoOiAxNQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3Ry
aW5nLWZyb20tcmFuZ2UuaHRtbAppbmRleCA4NzFkYzdiMjdhZGVlYTRlMjUzODVlYmZiM2NhNDM0
ZjIyODliMGMzLi5jZjZjOTExZDRiNTc1YjJmNzk2NGM3MWVmNTYwNzMzZTk3NWRiZjZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vi
c3RyaW5nLWZyb20tcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbApAQCAtMzQsOCArMzQs
OCBAQCBib2R5IHsgbWFyZ2luOiAxMDsgcGFkZGluZzogMCB9CiAgICAgICAgICAgICBsb2coIigw
LCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJh
bmdlKDAsIDEwMCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMSk6ICIgKyB0ZXh0
SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMSkuc3RyaW5n
KCkpOwogICAgICAgICAgICAgbG9nKCIoNSwgMik6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0
dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UoNSwgMikuc3RyaW5nKCkpOwotICAgICAgICAgICAg
bG9nKCIoMTAwLCAwKTogIiArIHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZSgxMDAsIDApKTsgLy8gc2hvdWxkIGJlIHVuZGVmaW5lZAotICAgICAgICAgICAg
bG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSB1bmRlZmluZWQKKyAgICAgICAg
ICAgIGxvZygiKDEwMCwgMCk6ICIgKyB0ZXh0SW5wdXRDb250cm9sbGVyLmF0dHJpYnV0ZWRTdWJz
dHJpbmdGcm9tUmFuZ2UoMTAwLCAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQorICAgICAgICAgICAg
bG9nKCIoMTAwLCAxMDApOiAiICsgdGV4dElucHV0Q29udHJvbGxlci5hdHRyaWJ1dGVkU3Vic3Ry
aW5nRnJvbVJhbmdlKDEwMCwgMTAwKSk7IC8vIHNob3VsZCBiZSBlbXB0eQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBsb2coIlxuVGVzdGluZyBwcm9wZXIgc3BhY2UgcnVucyAoMS5fMi5fXzMu
X19fNF81KSIpOwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiMSAmbmJz
cDsyICZuYnNwOyZuYnNwOzMgJm5ic3A7Jm5ic3A7Jm5ic3A7NCZuYnNwOzUiOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>